📄 516154.asm
字号:
YUSEC EQU 40H
YUMINI EQU 41H
YUHOUR EQU 42H
zhuSEC equ 50h
zhumini equ 51h
zhuhour equ 52h
MINITEK BIT P1.3
HOURK BIT P1.4
SW2 BIT P1.6
sw3 bit p1.7
DISPBIT EQU 60H ;DISPBIT用于判断数码管个数
T2SCNTA EQU 61H
T2SCNTB EQU 62H
DS1302CLK BIT P3.5
DS1302IO BIT P3.7
RST BIT P3.0
KEY BIT P3.2 ;KEY即SW1
K_ON BIT P3.1 ;峰鸣器
SECOND EQU 60H
;60H 秒
;61h 分
;62h 时
;63h 日
;64h 月
;65h DAY
;66h 年低
;6Ah 闹分 from 00(1302)
;6BH 闹时 from 01(1302)
ORG 00H
LJMP START
ORG 0003H
LJMP S_INT
ORG 000BH
LJMP INT_T0
ORG 001BH
LJMP DISPLAY
ORG 0040H
START: MOV ZHUMINI,#14
MOV yumini,#03
SETB P3.3;使控制预约煮饭的继电器断开
SETB P3.4;使停止煮饭的继电器闭合
MOV DISPBIT,#00H
MOV T2SCNTA ,#00H
MOV T2SCNTB ,#00H
MOV TMOD,#11H
MOV TH0,#(65536-2000) / 256
MOV TL0,#(65536-2000) MOD 256
MOV TH1,#3CH
MOV TL1,#0B0H
SETB TR0
SETB ET1
SETB ET0 ;设置中断优先
SETB ET1
SETB PT0 ; 定时中断优先0
SETB TR1
SETB IT0 ;脉冲触发T0
SETB EX0 ; 允许外中断
CLR PX0 ;外部中断0优先设0
;LCALL SET1302 ;初始化
MOV IP,#02H
MOV 20H,#14H
SETB EA
CLR RST
MOV SP,#2AH
SETB 05H
CLR 06H
SETB 07H; CLR 07H
START1: SETB 08H
CLR 09H
CLR 0AH
CLR 0BH
CLR 0CH
SETB 0DH
CLR 0EH
CLR 0FH
CLR 10H
CLR 11H
CLR 21H
CLR 22H
CLR 18H
CLR 13H
CLR 24H
MOV R2,#00H
MOV R3,#00H
MOV R5,#00H
MOV R1,#0C1H ;取定时参数从1302中
ACALL T_6061
NOP
MOV 6AH,A ; 时钟的分
MOV R1,#0C3H
ACALL T_6061
MOV 6BH,A ;时钟的时
MOV 61H,#00H
MOV 62H,#00H
NOP
SETB EA
SJMP $
;*************DISPLAY*********
DISPLAY: PUSH ACC
PUSH PSW
MOV TL1,#0e0H ;wait how long to display (20ms)
MOV TH1,#0b0H
JNB SW2,T01
JNB SW3,T02
MOV A,#35H
LJMP PINT
T01: MOV A,#45H
LJMP NEXTT
T02: MOV A,#55H
LJMP NEXT
NEXTT:ADD A,DISPBIT ;
MOV R0,A ;送SECOND高到R0
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR ;取SECOND高的字符
MOV P0,A ;送出显示
MOV A,DISPBIT ;取第一个数码管位选
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV P2,A ;送出位选
INC DISPBIT ;送第二个位选
MOV A,DISPBIT
CJNE A,#04,DISPLAY1 ;判断是否为最后个数码管的位选,不是就加1
MOV DISPBIT,#00H ;是最后个数码管就清0
DISPLAY1: mov dptr,#TAB
JB 18H,DISMAO
JB 0EH,DIS2
JB 0FH,DIS3
NOP
JB 10H,DIS4
JB 11H,DIS5
NOP
JB 21H,DIS6
JB 22H,DIS7
NOP
JB 24H,DIS6
JB 13H,DYEAR
NOP
JB 18H,DISMAO
JNB 0DH,D_OUT
NOP
JNB 08H,D_GO ;定时到时,显示闪烁
JNB 07H,D_OUT
SJMP D_GO
NOP
SJMP D_GO
NOP
;*********************
DISMAO: AJMP DIS_7
DIS2: AJMP DIS_2
DIS3: AJMP DIS_3
DIS4: AJMP DIS_4
DIS5: AJMP DIS_5
DIS6: AJMP DIS_6
DIS7: AJMP DIS_6
DYEAR: AJMP DIS_YEAR
NOP
;********************
D_GO: MOV DPTR,#TAB
MOV A,62H
ANL A,#0FH
MOV B,A
MOV A,62H
SWAP A
ANL A,#07H
MOVC A,@A+DPTR
MOV P0,A
CLR P2.0
LCALL DLIM
SETB P2.0
MOV A,B
MOVC A,@A+DPTR
MOV C,07H
MOV acc.0,C ;秒灯闪烁
MOV P0,A
CLR P2.1
LCALL DLIM
SETB P2.1
mov dptr,#TAB ;倒装LED字段表
MOV A,61H
ANL A,#0FH
MOV B,A
MOV A,61H
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV C,07H
MOV acc.1,C ;秒灯闪烁
MOV P0,A
CLR P2.2
LCALL DLIM
SETB P2.2
mov dptr,#TAB
MOV A,B
MOVC A,@A+DPTR
MOV C,06H
CPL C
MOV acc.0,C ;闹铃指示灯
MOV P0,A
CLR P2.3
LCALL DLIM
SETB P2.3
D_OUT: SETB TR1
POP PSW
POP ACC
NOP
NOP
RETI
NOP
NOP
AJMP START1
DIS_YEAR: MOV DPTR,#TAB
MOV A,#02H
MOVC A,@A+DPTR
MOV P0,A
CLR P2.0
LCALL DLIM
SETB P2.0
SETB P2.0
MOV A,#0H
MOVC A,@A+DPTR
MOV P0,A
CLR P2.1
LCALL DLIM
SETB P2.1
MOV P0,#0FFH
MOV DPTR,#TAB2
MOV A,66H
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P0,A
CLR P2.2
LCALL DLIM
SETB P2.2
MOV DPTR,#TAB
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
CLR P2.3
LCALL DLIM
SETB P2.3
SETB P2.3
SETB TR1
POP PSW
POP ACC
NOP
NOP
RETI
NOP
NOP
AJMP 0000H
DIS_7: MOV DPTR,#TAB ;分秒显示
MOV A,61H
ANL A,#0FH
MOV B,A
MOV A,61H
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A
CLR P2.0
CLR P2.0
LCALL DLIM
SETB P2.0
MOV A,B
MOVC A,@A+DPTR
CLR C
MOV ACC.3,C
MOV P0,A
CLR P2.1
CLR P2.1
LCALL DLIM
SETB P2.1
MOV DPTR,#TAB2
MOV A,60H
ANL A,#0FH
MOV B,A
MOV A,60H
MOV DPTR,#TAB2
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
CLR C
MOV ACC.1,C
MOV P0,A
CLR P2.2
CLR P2.2
LCALL DLIM
SETB P2.2
MOV P0,#0FFH
MOV DPTR,#TAB
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
CLR P2.3
CLR P2.3
ACALL DLIM
SETB P2.3
SETB TR1
POP PSW
POP ACC
NOP
NOP
RETI
DIS_2: mov dptr,#TAB ;显示设置小时
MOV 6FH,62H
ACALL BCD_HEX
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P0,A
CLR P2.0
LCALL DLIM
SETB P2.0
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
CLR P2.1
LCALL DLIM
SETB P2.1
SETB P2.1
SETB TR1
POP PSW
POP ACC
NOP
NOP
RETI
NOP
NOP
LJMP 0000H
;*****************
DIS_3: MOV DPTR,#TAB2 ;显示设置分
MOV 6FH,61H
ACALL BCD_HEX
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P0,A
CLR P2.2
CLR P2.2
LCALL DLIM
SETB P2.2
SETB P2.2
MOV A,B
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
CLR P2.3
CLR P2.3
LCALL DLIM
SETB P2.3
SETB P2.3
SETB TR1
POP PSW
POP ACC
NOP
NOP
RETI
;*****************
DIS_4: MOV DPTR,#TAB ;显示设置闹时
JNB 07H,D4_OUT ;显示时闪烁
MOV P0,#0FFH
MOV 6FH,6BH
ACALL BCD_HEX
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P0,A
CLR P2.0
LCALL DLIM
SETB P2.0
MOV P0,#0FFH
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
CLR P2.1
LCALL DLIM
SETB P2.1
MOV P0,#0FFH
D4_OUT: SETB TR1
POP PSW
POP ACC
NOP
NOP
RETI
NOP
NOP
LJMP 0000H
;***********************
DIS_5: MOV DPTR,#TAB2
MOV P0,#0FFH
JNB 07H,D5_OUT ;显示时闪烁
MOV 6FH,6AH ;显示设置闹分
ACALL BCD_HEX
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P0,A
CLR P2.2
LCALL DLIM
SETB P2.2
MOV DPTR,#TAB
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
CLR P2.3
LCALL DLIM
SETB P2.3
D5_OUT: SETB TR1
POP PSW
POP ACC
NOP
NOP
RETI
NOP
NOP
LJMP 0030H
DIS_6: MOV DPTR,#TAB ;日月显示
MOV A,64H
ANL A,#0FH
MOV B,A
MOV A,64H
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A
CLR P2.0
LCALL DLIM
SETB P2.0
MOV A,B
MOVC A,@A+DPTR
CLR C
MOV ACC.3,C
MOV P0,A
CLR P2.1
CLR P2.1
LCALL DLIM
SETB P2.1
MOV P0,#0FFH
MOV DPTR,#TAB2
MOV A,63H
ANL A,#0FH
MOV B,A
MOV A,63H
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A
CLR P2.2
CLR P2.2
LCALL DLIM
SETB P2.2
MOV DPTR,#TAB
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
CLR P2.3
CLR P2.3
LCALL DLIM
SETB P2.3
SETB TR1
POP PSW
POP ACC
NOP
NOP
RETI
NOP
NOP
LJMP 0030H
;*****************************
DLIM: MOV 43H,#14H ; every LED(2ms)
DL2: MOV 44H,#14H
DL1: NOP
NOP
DJNZ 44H,DL1
DJNZ 43H,DL2
RET
;*******有按下SW1调节**********
S_INT: CLR EA
PUSH ACC
PUSH PSW
PUSH DPH
PUSH DPL
PUSH 02H
PUSH 03H
MOV R6,#10D
INC R5
CJNE R5,#01H,NEXT
JB SW3,EXIT
LCALL DELY10MS
JB SW3,$
LCALL INCH;加时钟时
LJMP EXIT
NEXT: CJNE R5,#02H,NEXT1
JB SW2,EXIT
LCALL DELY10MS
JB SW3,$
LCALL INCM;加时钟分
LJMP EXIT
NEXT1: CJNE R5,#03H,NEXT2
JB SW3,EXIT
LCALL DELY10MS
JB SW3,$
LCALL INC_H,加闹时
LJMP EXIT
NEXT2: CJNE R5,#04H,NEXT3
JB SW2,EXIT
LCALL DELY10MS
JB SW3,$
LCALL INC_M;加闹分
LJMP EXIT
NEXT3:CJNE R5,#05H,NEXT4
LCALL INC_DA ;调月
JB SW3,EXIT
LCALL DELY10MS
JB SW3,$
LJMP EXIT
NEXT4:CJNE R5,#06H,NEXT5
JB SW3,EXIT
LCALL DELY10MS
JB SW3,$
LCALL INC_DAA ;调日
LJMP EXIT
NEXT5:MOV R5,#00H
LJMP EXIT
EXIT: SETB 0DH ;恢复正常显示
CLR 0EH
CLR 0FH
CLR 10H
CLR 11H
CLR 21H
CLR 22H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -