剛學單片機三個星期的萌新,有問題實在解決不了,求大佬幫個忙。單片機型號STC95C52,數碼管為共陰極數碼管,LED連接數碼管運行,晶振為11.0592MHz,我設的定時中斷口為P3.3。其他接口和題目我都寫在紙上,現在的問題就是:單片機能夠正常運行,能夠正常倒計時,LED能夠正常運行,但是數碼管顯示的十位上(左邊)的數字一直在閃,我怎么調都調不好,要么閃要么一秒只跳一下,就是不能穩定顯示,實在沒辦法了,求大佬幫忙看看程序,從MAIN開始就行了,前面應該都沒問題,不會匯編的大佬就不用進來了,謝謝各位大佬!!!
SECOND EQU 30H
TCOUNT EQU 31H
ORG 0000H
LJMP START
ORG 001BH
LJMP T_0
START:SETB IT1
SETB EX1
SETB EA
MOV R6,#0
MOV R0,#00H
MOV R1,#01H
MOV R2,#00H
MOV R3,#00H
MOV DPTR,#TABLE
LCALL DISP1
DISP1:MOV R7,#200
DISP2:MOV A,R0
ORL P2,#00001110B
ANL P2,#11111110B
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
MOV A,R1
ORL P2,#00001101B
ANL P2,#11111101B
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
MOV A,R2
ORL P2,#00001011B
ANL P2,#11111011B
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
MOV A,R3
ORL P2,#00000111B
ANL P2,#11110111B
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
RET
DONE:SJMP DONE
T_0:PUSH PSW
PUSH ACC
LJMP MAIN
POP ACC
POP PSW
RETI
MAIN: MOV SECOND,#90
MOV TCOUNT,#00H
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
DISP: MOV A,SECOND
MOV B,#10
DIV AB
MOV DPTR,#TABLE
ORL P2,#00000101B
ANL P2,#11111101B
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY2
MOV A,B
ORL P2,#00001011B
ANL P2,#11111011B
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY2
WAIT: JNB TF0,WAIT
CLR TF0
MOV TH0,#3CH
MOV TL0,#0B0H
INC TCOUNT
MOV A,TCOUNT
CJNE A,#20,NEX
MOV TCOUNT,#00H
DEC SECOND
MOV A,SECOND
CJNE A,#00H,NEXT
MOV SECOND,#90
CLR P2.6
CLR P2.5
CLR P2.4
CLR P2.3
CLR P2.2
CLR P2.1
CLR P2.0
JNB P2.0,DONE1
NEX: LJMP DISP
NEXT: LJMP WAIT
DELAY:MOV R5,#25
D1:MOV R4,#25
D2:DJNZ R4,D2
DJNZ R5,D1
RET
DONE1:LJMP START1
START1:SETB P1.5
LCALL DELAY
CLR P1.5
LCALL DELAY
LJMP START1
DELAY1:MOV R0,#50
D3:MOV R1,#30
D4:DJNZ R1,D4
DJNZ R0,D3
RET
DELAY2:MOV R0,#5
D5:MOV R1,#5
D6:DJNZ R1,D4
DJNZ R0,D3
RET
TABLE: DB 03FH,006H,05BH,04FH,066H
DB 06DH,07DH,007H,07FH,06FH
END
|