一個不知道是89S52硬體本身還是程式有錯的問題?
最近在練習8051的程式,發現在使用查表法作0到9的數字跑馬燈時
當我的程式只要是把CALL DELAY放到INC R0或是DEC R0的後面,
接上硬體電路時就會誤動作!
不知道是不是我的邏輯上有錯誤沒發現,所以我把程式碼全部出來
麻煩大家幫我看看是我的邏輯上有錯還是真的是這顆單晶片本身的
問題??感謝大家的幫忙了!!
程式碼如下:
ORG 00H
MOV DPTR#TABLE
START:
MOV R0,#0
MOV R1,#10
LOOP:
MOV A,R0
MOVC A,@A+DPTR
MOV P1,A
CALL DELAY
INC R0
DJNZ R1,LOOP
JMP START
DELAY:
MOV R5,#10
S1:
MOV R6,#250
S2:
MOV R7,#200
DJNZ R7,$
DJNZ R6,S2
DJNZ R5,S1
RET
TABLE:
DB 01H
DB 4FH
DB 12H
DB 06H
DB 4CH
DB 24H
DB 20H
DB 0FH
DB 00H
DB 04H
END
上面是從書上完完整整的超下來的!他的P1直接接上七節顯示器
動作是從0到9一直從複跑!但是我發現只要將上段的CALL DELAY
和INC R0這兩段程式互相交換位置,我的邏輯上檢查不出來有
錯誤,但實際的動作卻是錯的!不知道是不是我有哪裡有錯沒發
覺!麻煩各位先進幫我檢查一下!我用的8051是AT89S52這顆!麻煩
了!感恩~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.166.144.197
推
03/06 12:36, , 1F
03/06 12:36, 1F
推
03/07 00:35, , 2F
03/07 00:35, 2F
→
03/16 02:23, , 3F
03/16 02:23, 3F
ASM 近期熱門文章
PTT數位生活區 即時熱門文章
-1
12