本人刚刚接触
单片机,各种不会,望前辈指点。
这个代码是实现流水灯的,同样的代码,当在80C52和AT89C52上
仿真时,如果有CLR A效果如预期所想,灯从左到右依次闪烁,但没有的话,出现问题了,第一个灯是从D7开始闪烁,更糟糕的是,烧写到AT89S52上时,灯闪都不闪,只有3个灯常亮。为什么呢?
另外,当DB后面为191,223,239,247,251,253,254,253,251,247,239,223,191,7FH且A初值设置成0DH(MOV A,#0DH)不管是在80C52还是AT89C52上仿真时,都没有灯从左到右,再从右到左的流水灯效果,直接是全都不亮,但当A的初值设置成0CH以下时,预期效果又有了。
ORG 0030H
;定义DB数组
TABLE: DB 254,253,251,247,239,223,191,7FH;
;给A赋值
START0: CLR A
MOV A,#07H
MOV DPTR,#0030H
START: MOV R3,A
MOVC A,@A+DPTR
MOV P0,#00H
MOV A,R3
;延时0.5s
DELAY: MOV 72H,#100
LOOP3: MOV 71H,#100
LOOP1: MOV 70H,#22
LOOP0: DJNZ 70H,LOOP0
NOP
DJNZ 71H,LOOP1
MOV 70H,#46
LOOP2: DJNZ 70H,LOOP2
NOP
DJNZ 72H,LOOP3
MOV 70H,#48
LOOP4: DJNZ 70H,LOOP4
;循环部分
JZ START0
DEC A
LJMP START
END
一周热门 更多>