單片機數字電子時(shí)鐘系統
單片機系統的開(kāi)發(fā)。其實(shí),這個(gè)時(shí)鐘系統花了我一個(gè)禮拜的時(shí)間。從剛開(kāi)始的顯示模塊,到鍵盤(pán)模塊,我都一步一步
實(shí)現。當然,這其中,也遇到了很多困難,麻煩!剛開(kāi)始,數碼管部分一點(diǎn)不顯示,鍵盤(pán)也沒(méi)用,很煩人,很惱火。
但是,我還是把程序調試出來(lái)了,并且在硬件上運行達到效果。本以為這幾部分實(shí)現了后,聯(lián)合在一塊,偶的時(shí)鐘系統就OK 了。然而,我錯了,一個(gè)模塊運行成功并不意味著(zhù)模塊組成的系統就能按照預想的一樣達到目的,實(shí)現功能!當我將幾個(gè)模塊結合在一塊時(shí)候,問(wèn)題有接踵而至!哎呀!煩人??!我只能重新設計方案,重新檢查,重新寫(xiě)程序,源代碼寫(xiě)了
一遍又一遍,程序調了又調,程序一遍又一遍地下載到單片機中運行,觀(guān)察現象,分析出錯原因,找出解決辦法!最終,
在我的不斷努力下,我的單片機數字電子時(shí)鐘系統成功的實(shí)現了所有的功能,達到了預期的效果??!先把我寫(xiě)了好多遍,
調試了好多遍的源代碼上傳,來(lái)和大家一起分享一下??!
ORG 0000H
SJMP START
ORG 0003H
LJMP INTT0
ORG 000BH
LJMP TIME0
ORG 001BH
LJMP TIME1
ORG 0045H
START:MOV SP,#60H
SETB EA
SETB ET0
SETB ET1
MOV TMOD,#11H
MOV TL0,#0B0H
MOV TH0,#3CH
MOV TL1,#80H
MOV TH1,#0C1H
SETB EX0
CLR IT0
SETB PX0
MOV R0,#20
MOV 40H,#0
MOV 41H,#0
MOV 42H,#0
MOV 30H,#0
MOV 31H,#0
MOV 32H,#0
MOV 33H,#0
MOV 34H,#0
MOV 35H,#0
MOV P2,#0FFH
SETB TR0
SETB TR1
SJMP $
INTT0:CLR TR0
CLR TR1
PUSH ACC
PUSH PSW
LCALL DISP
MOV P1,#0FFH
KEY1:JNB P1.0,ST
LCALL DISP
JNB P1.1,MT
LCALL DISP
JNB P1.2,HT
LCALL DISP
JNB P1.3,COMN
LCALL DISP
SJMP KEY1
COMN:LCALL CONT
ST:LCALL DELAY2
JB P1.0,KEY1
JNB P1.0,$
INC 40H
MOV A,40H
MOV B,#10
DIV AB
MOV 31H,A
MOV A,B
MOV 30H,A
LCALL DISP
MOV A,40H
CJNE A,#60,KEY1
MOV 30H,#0
MOV 31H,#0
MOV 40H,#0
LJMP KEY1
MT:LCALL DELAY2
JB P1.1,KEY1
JNB P1.1,$
INC 41H
MOV A,41H
MOV B,#10
DIV AB
MOV 33H,A
MOV A,B
MOV 32H,A
LCALL DISP
MOV A,41H
CJNE A,#60,KEY1
MOV 32H,#0
MOV 33H,#0
MOV 41H,#0
LJMP KEY1
HT:LCALL DELAY2
JB P1.2,KEY1
JNB P1.2,$
INC 42H
MOV A,42H
MOV B,#10
DIV AB
MOV 35H,A
MOV A,B
MOV 34H,A
LCALL DISP
MOV A,42H
CJNE A,#24,KEYPRESS
MOV 34H,#0
MOV 35H,#0
MOV 42H,#0
LJMP KEY1
KEYPRESS:LCALL KEY1
CONT:LCALL DELAY2
JB P1.3,KEYPRESS
JNB P1.3,$
SETB TR0
SETB TR1
POP PSW
POP ACC
RETI
TIME0:PUSH ACC
PUSH PSW
MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ R0,BACK
MOV R0,#20
INC 40H
MOV A,40H
MOV B,#10
DIV AB
MOV 31H,A
MOV A,B
MOV 30H,A
MOV A,40H
CJNE A,#60,BACK
MOV 30H,#0
MOV 31H,#0
MOV 40H,#0
INC 41H
MOV A,41H
MOV B,#10
DIV AB
MOV 33H,A
MOV A,B
MOV 32H,A
MOV A,41H
CJNE A,#60,BACK
MOV 32H,#0
MOV 33H,#0
MOV 41H,#0
INC 42H
MOV A,42H
MOV B,#10
DIV AB
MOV 35H,A
MOV A,B
MOV 34H,A
MOV A,42H
CJNE A,#24,BACK
MOV 42H,#0
MOV 34H,#0
MOV 35H,#0
MOV 30H,#0
MOV 31H,#0
MOV 32H,#0
MOV 33H,#0
BACK:POP PSW
POP ACC
RETI
TIME1:PUSH ACC
PUSH PSW
MOV TL1,#80H
MOV TH1,#0C1H
LCALL DISP
POP PSW
POP ACC
RETI
DISP:MOV DPTR,#TAB1
MOV A,30H
MOVC A,@A+DPTR
MOV P0,A
SETB P2.0
CLR P2.5
LCALL DELAY1
SETB P2.5
MOV A,31H
MOVC A,@A+DPTR
MOV P0,A
SETB P2.0
CLR P2.4
LCALL DELAY1
MOV DPTR,#TAB2
MOV A,32H
MOVC A,@A+DPTR
SETB P2.4
MOV P0,A
SETB P2.0
CLR P2.3
LCALL DELAY1
MOV DPTR,#TAB1
MOV A,33H
MOVC A,@A+DPTR
SETB P2.3
MOV P0,A
SETB P2.0
CLR P2.2
LCALL DELAY1
MOV DPTR,#TAB2
MOV A,34H
MOVC A,@A+DPTR
SETB P2.2
MOV P0,A
SETB P2.0
CLR P2.1
LCALL DELAY1
MOV DPTR,#TAB1
MOV A,35H
MOVC A,@A+DPTR
SETB P2.1
MOV P0,A
CLR P2.0
LCALL DELAY1
RET
DELAY1:MOV R7,#02H
DL:MOV R6,#0FFH
DL1:DJNZ R6,DL1
DJNZ R7,DL
RET
DELAY2:MOV R7,#10H
TS1:MOV R6,#0FFH
TS2:DJNZ R6,TS2
DJNZ R7,TS1
RET
TAB1:DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
TAB2:DB 40H,79H,24H,30H,19H
DB 12H,02H,78H,00H,10H
END
評論