最近沒事看著手頭不少閑置的STC的單片機,拿來搗鼓下.之前一直用PIC的單片機,使用結構體變量沒出現什么問題,這次換成STC的單片機發現編譯沒問題,運行起來確不正常,百度一下發現也有人遇到類似的問題,但是按照他們的方法也沒能解決. 下圖是網上的提問:
1582333841(1).jpg (49.36 KB, 下載次數: 87)
下載附件
2020-2-22 09:11 上傳
51hei截圖_20200222092837.png (36.33 KB, 下載次數: 65)
下載附件
2020-2-22 09:29 上傳
按照他的方法依然運行不正常,這個問題一直困擾著我,STC的規格書也是寫的不清楚,后面我就猜想會不會啟動文件STARTUP.A51的問題,于是我仔細看了一下,發現有這么一段代碼:
- STARTUP1:
- IF IDATALEN <> 0
- MOV R0,#IDATALEN - 1
- CLR A
- IDATALOOP: MOV @R0,A
- DJNZ R0,IDATALOOP
- ENDIF
- IF XDATALEN <> 0
- MOV DPTR,#XDATASTART
- MOV R7,#LOW (XDATALEN)
- IF (LOW (XDATALEN)) <> 0
- MOV R6,#(HIGH (XDATALEN)) +1
- ELSE
- MOV R6,#HIGH (XDATALEN)
- ENDIF
- CLR A
- XDATALOOP: MOVX @DPTR,A
- INC DPTR
- DJNZ R7,XDATALOOP
- DJNZ R6,XDATALOOP
- ENDIF
復制代碼 找出這一句IF XDATALEN <> 0,會不會是這里導致的?我把0改成1,IF XDATALEN <> 1,結果正常了.
還有就是結構體要加上關鍵字xdata,如下:
|