程序功能:8051單片機p1口控制八個led燈,要求八個燈加一移位點亮,當中斷來時,燈全滅后全亮,中斷返回后燈繼續加一移位點亮
問題:程序運行起來總是會先8個led先亮一次,然后正常運行,可是我并沒有這樣編程,單步執行程序也是正常運轉,但一全速運行就會先全亮然后正常運行,如果把中斷去掉也會正常運轉,請問這是什么問題?更新問題:在protues上仿真出現上述問題,但下載到單片機上沒問題,這咋回事啊。。。。
程序:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EXT0
MAIN:MOV TMOD,#10H
MOV A,#0FFH ;把A置1
MOV SP,#60H ;調整堆棧深度
SETB EX0 ;開中斷
SETB IE0 ;外部中斷INT0以下降沿觸發
LOOP: MOV P1,A
CLR EA
LCALL DELAY
SETB EA
DEC A
SJMP LOOP
DELAY:MOV R7,#0AH ;循環10次
DELAY1: MOV TH1,#3CH
MOV TL1,#0B0H
SETB TR1
LOOP1: JBC TF1,CIR
SJMP LOOP1
CIR: CLR TR1
DJNZ R7,DELAY1
RET
EXT0:PUSH ACC
MOV A,#0FFH
MOV P1,A
LCALL DELAY
CPL A
MOV P1,A
LCALL DELAY
POP ACC
RETI
END
|