做了個(gè)電子時(shí)鐘,不知為何中斷程序不能計(jì)時(shí),只顯示開(kāi)機(jī)時(shí)間。請(qǐng)各位高手賜教。。。

程序代碼如下:
DISSEC EQU 20H ;定義秒顯示單元
DISMIN EQU 21H ;定義分鐘顯示單元
DISHOR EQU 22H ;定義小時(shí)顯示單元
CLKSEC EQU 23H ;定義秒走時(shí)單元
CLKMIN EQU 24H ;定義分鐘走時(shí)單元
CLKHOR EQU 25H ;定義小時(shí)走時(shí)單元
SECSIG EQU 29H ;定義一秒鐘到標(biāo)志位
ORG 000H
LJMP START
ORG 000BH
LJMP INT_B
ORG 0030H
START: MOV SP ,#70H ;堆棧指針賦初值
MOV SECSIG,#2 ;2*500ms=1s
MOV TMOD,#01H ;使用定時(shí)器1定時(shí)500ms
MOV TH0,#3CH ;對(duì)定時(shí)器賦初值
MOV TL0,#0B0H
SETB EA ;開(kāi)總中斷
SETB ET0 ;開(kāi)定時(shí)器0中斷
SETB TR0 ;啟動(dòng)定時(shí)器0
CLR A ;將開(kāi)機(jī)時(shí)鐘顯示設(shè)置為12:00:00
MOV CLKSEC,A
MOV CLKMIN,A
MOV CLKHOR,#12
DISPLY: ;顯示程序
MOV DISSEC,CLKSEC ;將走時(shí)單元數(shù)據(jù)傳送到顯示單元
MOV DISMIN,CLKMIN
MOV DISHOR,CLKHOR
MOV A,DISSEC ;轉(zhuǎn)換顯示程序
MOV B,#10
DIV AB
MOV 42H,B ;秒位轉(zhuǎn)換
MOV 43H,A
MOV A,DISMIN
MOV B,#10
DIV AB
MOV 44H,B ;分鐘轉(zhuǎn)換
MOV 45H,A
MOV A,DISHOR
MOV B,#10
DIV AB
MOV 46H,B ;小時(shí)轉(zhuǎn)換
MOV 47H,A
MOV DPTR,#TABLE
MOV A,42H ;秒位顯示
MOV P2,#0FEH ;將位選碼送P2
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY2ms
MOV A,43H
MOVC A,@A+DPTR
MOV P2,#0FDH ;將位選碼送P2
MOV P0,A
LCALL DELAY2ms
MOV A,44H ;分鐘顯示
MOVC A,@A+DPTR
MOV P2,#0FBH ;將位選碼送P2
MOV P0,A
LCALL DELAY2ms
MOV A,45H
MOVC A,@A+DPTR
MOV P2,#0F7H ;將位選碼送P2
MOV P0,A
LCALL DELAY2ms
MOV A,46H ;小時(shí)顯示
MOVC A,@A+DPTR
MOV P2,#0EFH ;將位選碼送P2
MOV P0,A
LCALL DELAY2ms
MOV A,47H
MOVC A,@A+DPTR
MOV P2,#0DFH ;將位選碼送P2
MOV P0,A
LCALL DELAY2ms
LJMP DISPLY
INT_B:PUSH PSW ;中斷程序
PUSH ACC ;入棧保護(hù)現(xiàn)場(chǎng)
MOV TH0,#3CH ;對(duì)計(jì)數(shù)器重新賦值
MOV TL0,#0B0H
DJNZ SECSIG,TT ;判斷 1秒時(shí)間到否,不到轉(zhuǎn)向TT
MOV SECSIG,#2 ;一秒到時(shí)對(duì)標(biāo)志位重新賦值
MOV A,CLKSEC ;對(duì)秒數(shù)據(jù)進(jìn)行加一處理
ADD A,#1
CJNE A,#60,TT
MOV A,#0
MOV CLKSEC,A
MOV A,CLKMIN ;對(duì)分鐘數(shù)據(jù)進(jìn)行加一處理
ADD A,#1
CJNE A,#60,TT
MOV A,#0
MOV CLKMIN,A
MOV A,CLKHOR ;對(duì)小時(shí)數(shù)據(jù)進(jìn)行加以處理
ADD A,#1
CJNE A,#24,TT
MOV A,#0
MOV CLKHOR,A
TT:POP ACC ;TT為恢復(fù)現(xiàn)場(chǎng)中斷返回
POP PSW
RETI
DELAY2ms:MOV 40H,#4 ;2MS延時(shí)程序
D1:MOV 41H,#248
DJNZ 41H,$
DJNZ 40H,D1
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;顯示數(shù)碼表0~9
END
|