DISLP1: JB ACC.2,DISLP2 ;第六位数码管显示 -
MOV P0,#0f7H
JMP DISLP3
DISLP2: INC R0
DISLP3: MOV A,R1 ;为下一个数准备
RR A ;下一个单元
MOV R1,A ;保存
LCALL DELAY ;为了保证数码管亮度,延时
DJNZ R2,DISLP ;重复显示,直到全部数据刷新过
RET ;返回
DELAY:
MOV R4,#0AH
L15: MOV R5,#64H
L16: DJNZ R5,L16
DJNZ R4,L15
RET
;******************************************************
SET_KEY:
SETB K1 ;增加键
SETB K2 ;减少键
SETB K3 ;选择键
SETB K4 ;定时设定功能键
NOP
JB K4,KEY01
LCALL BEEP_BL
JMP DS_KEY ;进入定时值设定子程序
KEY01: JB K2,KEY02
LCALL BEEP_BL
JMP SET_TIME ;进入时间设定子程序
KEY02: JB K3,KEY03
LCALL BEEP_BL
CPL 20H.0 ;止闹标记取反
KEY03: RET
;-----------------------------------------------------
DS_KEY:
CALL DS_DELAY
JNB K4,$
LCALL DSSET
CALL DS_DELAY
RET
;==============================================
;实时时间设定子程序
;K1为加键、K2为减键、K3为选择键
;==============================================
SET_TIME:
MOV R1,#8EH ;写保护寄存器
MOV R0,#00H ;允许写入
LCALL WRITE
MOV R1,#80H ;写秒寄存器
MOV R0,#80H ;停止振荡器工作
LCALL WRITE
SETB TR0
K001: CALL TIME_DELAY ;校时
JNB K3,K001 ;K3为位移键
K010:
CALL CHULI
JNB 0AH,KH01
MOV 54H,7FH ;送入熄灭符
MOV 55H,7FH
JMP KH02
KH01: MOV 54H,74H ;送实时值
MOV 55H,75H ;送实时值
KH02: MOV R0,#TIME_DATA
CALL DISP
MOV R0,#TIME_DATA
CALL TIME_DISPLAY
JNB K1,K011A
JNB K2,K011B
JNB K3,K002
JMP K010
K011A:
MOV A,42H
ADD A,#01H
DA A
MOV 42H,A
XRL A,#24H
JNZ K012A
MOV 42H,#00H
K012A: MOV R1,#84H ;写时寄存器
MOV R0,42H
LCALL WRITE
CALL TIME_DELAY
JMP K010
K011B:
MOV A,42H
XRL A,#00H
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] 下一页
本文关键字:数码管 51单片机,单片机-工控设备 - 51单片机