; 显示时钟 /////////////////////////////////////
DISPLAY:
MOV A,DISML
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV SBUF,A
D1: JNB TI,D1
CLR TI
MOV A,DISMH
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV SBUF,A
D2: JNB TI,D2
CLR TI
MOV A,DISHL
97
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV SBUF,A
D3: JNB TI,D3
CLR TI
MOV A,DISHH
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV SBUF,A
D4: JNB TI,D4
CLR TI
RET
;/////////////////////////////////////////////
; 判按键标志 ///////////////////////////////////
CRITERION:
MOV A,SETFLAG
CJNE A,#00H,ERFLAG ; 设置标志为 0 , 即没
有按键,继续去显示
AJMP RET1
ERFLAG: CJNE A,#06H,SETML1 ; 设置标志为 6 ,即错
误了,去显示错误
AJMP ERR
SETML1: CJNE A,#01H,SETMH1
AJMP SETML ; 设置标志为 1 ,显示
设分低
SETMH1: CJNE A,#02H,SETHL1
AJMP SETMH ; 设置标志为 2 ,显示
设分高
98
SETHL1: CJNE A,#03H,SETHH1
AJMP SETHL ; 设置标志为 3 ,显示
设时低
SETHH1: CJNE A,#04H,RET1 ; 设置标志为 5 ,是退
出标志
AJMP SETHH ; 设置标志为 4 ,显示
设时高
RET1: SETB TR0
ACALL DELAY
AJMP DIS
;/////////////////////////////////////////////
; 设分低(分低位闪烁) /////////////////////////
SETML:
CLR TR0
MOV A,ADDFLAG
CJNE A,#01H,SETML2 ; 是否按下了 2 秒钟,
是就开始闪烁设置
JNB P3.2,ADD3
MOV ADDFLAG,#00H ; 松开了,清闪标志
AJMP SETML2
ADD3: INC DISML
MOV A,DISML
CJNE A,#0AH,SETML2
MOV DISML,#00H
SETML2: ACALL DELAY2
ACALL DISPLAY
ACALL DELAY2
MOV SBUF,#00H
99
E1: JNB TI,E1
CLR TI
MOV A,DISMH
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV SBUF,A
E2: JNB TI,E2
CLR TI
MOV A,DISHL
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV SBUF,A
E3: JNB TI,E3
CLR TI
MOV A,DISHH
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV SBUF,A
E4: JNB TI,E4
CLR TI
AJMP CRITERION
;//////////////////////////////////////////////////
; 设分高 ( 分高位闪烁 )////////////////////////////////
SETMH:
CLR TR0
MOV A,ADDFLAG
CJNE A,#01H,SETMH2 ; 是否按下了 2 秒钟,
是就开始闪烁设置
100
JNB P3.2,ADD4
MOV ADDFLAG,#00H ; 松开了,清闪标志
AJMP SETMH2
ADD4: INC DISMH
MOV A,DISMH
CJNE A,#0AH,SETMH2
MOV DISMH,#00H
SETMH2: ACALL DELAY2
ACALL DISPLAY
ACALL DELAY2
MOV A,DISML
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV SBUF,A
F1: JNB TI,F1
CLR TI
MOV SBUF,#00H
F2: JNB TI,F2
CLR TI
MOV A,DISHL
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV SBUF,A
F3: JNB TI,F3
CLR TI
MOV A,DISHH
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
101
MOV SBUF,A
F4: JNB TI,F4
CLR TI
AJMP CRITERION
;//////////////////////////////////////////////////
; 设时低位(时低位闪烁) ////////////////////////////
SETHL:
CLR TR0
MOV A,ADDFLAG
CJNE A,#01H,SETHL2 ; 是否按下了 2 秒钟,
是就开始闪烁设置
JNB P3.2,ADD5
MOV ADDFLAG,#00H ; 松开了,清闪标志
AJMP SETHL2
ADD5: INC DISHL
MOV A,DISHL
CJNE A,#0AH,SETHL2
MOV DISHL,#00H
SETHL2: ACALL DELAY2
ACALL DISPLAY
ACALL DELAY2
MOV A,DISML
MOV DPTR,#SETTAB
本文关键字:电子钟 51单片机,单片机-工控设备 - 51单片机
上一篇:电子钟(1)