📄 safe_days.asm
字号:
MOV DATA_4,A
LJMP INC_RET
INC_008:JNB CURSOR_5,INC_010
MOV A,DATA_5 ;光标在第“05”位
CJNE A,#09H,INC_009
LJMP INC_RET
INC_009:INC A
MOV DATA_5,A
LJMP INC_RET
INC_010:JNB CURSOR_6,INC_012
MOV A,DATA_6 ;光标在第“06”位
CJNE A,#09H,INC_011
LJMP INC_RET
INC_011:INC A
MOV DATA_6,A
LJMP INC_RET
INC_012:JNB CURSOR_7,INC_014
MOV A,DATA_7 ;光标在第“07”位
CJNE A,#09H,INC_013
LJMP INC_RET
INC_013:INC A
MOV DATA_7,A
LJMP INC_RET
INC_014:JNB CURSOR_8,INC_016
MOV A,DATA_8 ;光标在第“08”位
CJNE A,#09H,INC_015
LJMP INC_RET
INC_015:INC A
MOV DATA_8,A
LJMP INC_RET
INC_016:JNB CURSOR_13,INC_018
MOV A,DATA_13 ;光标在第“13”位
CJNE A,#09H,INC_017
LJMP INC_RET
INC_017:INC A
MOV DATA_13,A
LJMP INC_RET
INC_018:JNB CURSOR_14,INC_020
MOV A,DATA_14 ;光标在第“14”位
CJNE A,#09H,INC_019
LJMP INC_RET
INC_019:INC A
MOV DATA_14,A
LJMP INC_RET
INC_020:JNB CURSOR_15,INC_022
MOV A,DATA_15 ;光标在第“15”位
CJNE A,#09H,INC_021
LJMP INC_RET
INC_021:INC A
MOV DATA_15,A
LJMP INC_RET
INC_022:JNB CURSOR_16,INC_RET
MOV A,DATA_16 ;光标在第“16”位
CJNE A,#09H,INC_023
LJMP INC_RET
INC_023:INC A
MOV DATA_16,A
LJMP INC_RET
INC_RET:LCALL WRITE_LED
RET
;-------数字减少处理程序----------
KEY_DECPROG:
JNB CURSOR_1,DEC_002
MOV A,DATA_1 ;光标在第“01”位
CJNE A,#00H,DEC_001
LJMP DEC_RET
DEC_001:DEC A
MOV DATA_1,A
LJMP DEC_RET
DEC_002:JNB CURSOR_2,DEC_004
MOV A,DATA_1 ;光标在第“02”位
CJNE A,#00H,DEC_003
LJMP DEC_RET
DEC_003:DEC A
MOV DATA_2,A
LJMP DEC_RET
DEC_004:JNB CURSOR_3,DEC_006
MOV A,DATA_3 ;光标在第“03”位
CJNE A,#00H,DEC_005
LJMP DEC_RET
DEC_005:DEC A
MOV DATA_3,A
LJMP DEC_RET
DEC_006:JNB CURSOR_4,DEC_008
MOV A,DATA_4 ;光标在第“04”位
CJNE A,#00H,DEC_007
LJMP DEC_RET
DEC_007:DEC A
MOV DATA_4,A
LJMP DEC_RET
DEC_008:JNB CURSOR_5,DEC_010
MOV A,DATA_5 ;光标在第“05”位
CJNE A,#00H,DEC_009
LJMP DEC_RET
DEC_009:DEC A
MOV DATA_5,A
LJMP DEC_RET
DEC_010:JNB CURSOR_6,DEC_012
MOV A,DATA_6 ;光标在第“06”位
CJNE A,#00H,DEC_011
LJMP DEC_RET
DEC_011:DEC A
MOV DATA_6,A
LJMP DEC_RET
DEC_012:JNB CURSOR_7,DEC_014
MOV A,DATA_7 ;光标在第“07”位
CJNE A,#00H,DEC_013
LJMP DEC_RET
DEC_013:DEC A
MOV DATA_7,A
LJMP DEC_RET
DEC_014:JNB CURSOR_8,DEC_016
MOV A,DATA_8 ;光标在第“08”位
CJNE A,#00H,DEC_015
LJMP DEC_RET
DEC_015:DEC A
MOV DATA_8,A
LJMP DEC_RET
DEC_016:JNB CURSOR_13,DEC_018
MOV A,DATA_13 ;光标在第“13”位
CJNE A,#00H,DEC_017
LJMP DEC_RET
DEC_017:DEC A
MOV DATA_13,A
LJMP DEC_RET
DEC_018:JNB CURSOR_14,DEC_020
MOV A,DATA_14 ;光标在第“14”位
CJNE A,#00H,DEC_019
LJMP DEC_RET
DEC_019:DEC A
MOV DATA_14,A
LJMP DEC_RET
DEC_020:JNB CURSOR_15,DEC_022
MOV A,DATA_15 ;光标在第“15”位
CJNE A,#00H,DEC_021
LJMP DEC_RET
DEC_021:DEC A
MOV DATA_15,A
LJMP DEC_RET
DEC_022:JNB CURSOR_16,DEC_RET
MOV A,DATA_16 ;光标在第“16”位
CJNE A,#00H,DEC_023
LJMP DEC_RET
DEC_023:DEC A
MOV DATA_16,A
DEC_RET:LCALL WRITE_LED
RET
;--------写字节程序-------------
WRITE_BYTE:
CLR S_CLK
MOV R5,#08H
WRITE_A:RLC A
MOV S_DAT,C
LCALL DELAY
SETB S_CLK
LCALL DELAY
CLR S_CLK
DJNZ R5,WRITE_A
RET
;----------检测应答信号---------
CHK_ANK:NOP
SETB S_DAT
NOP
NOP
SETB S_CLK
JB S_DAT,$
CLR S_CLK
RET
;----------检测应答信号---------
RED_ANK:NOP
NOP
SETB S_CLK
NOP
NOP
NOP
CLR S_CLK
CLR S_DAT
RET
;---------读字节程序--------
READ_BYTE:
MOV R5,#08H
SETB S_DAT
READ_B: CLR S_CLK
LCALL DELAY
SETB S_CLK
LCALL DELAY
MOV C,S_DAT
RLC A
DJNZ R5,READ_B
RET
;--------设置开始信号--------
START: SETB S_CLK
SETB S_DAT
LCALL DELAY
NOP
CLR S_DAT
RET
;--------设置停止信号--------
STOP: SETB S_CLK
LCALL DELAY
CLR S_DAT
LCALL DELAY
NOP
SETB S_DAT
RET
;---------延时程序-----------
DELAY: NOP
NOP
NOP
NOP
RET
;----------------------------
AT24C02A:
LCALL START
MOV A,#0A0H
LCALL WRITE_BYTE
LCALL CHK_ANK
MOV A,#20H
LCALL WRITE_BYTE
LCALL CHK_ANK
LCALL STOP
LCALL DELAY
LCALL START
MOV A,#0A1H
LCALL WRITE_BYTE
LCALL CHK_ANK
LCALL READ_BYTE
LCALL RED_ANK
CJNE A,#55H,AT2401
MOV READ_DAT,#10H
MOV R0,#30H
MOV @R0,A
AT2400:LCALL READ_EEPROM_A
MOV @R0,A
INC READ_DAT
INC R0
CJNE R0,#40H,AT2400
RET
AT2401:MOV A,#00H
MOV R0,#30H
AT2402:MOV @R0,A
INC R0
INC A
CJNE A,#0AH,AT240A
MOV A,#00H
AT240A:CJNE R0,#40H,AT2402
LCALL STOP
LCALL WRITE_EEPROM
RET
;--------------------------
READ_EEPROM_A:
LCALL START
MOV A,#0A0H
LCALL WRITE_BYTE
LCALL CHK_ANK
MOV A,READ_DAT
LCALL WRITE_BYTE
LCALL CHK_ANK
LCALL STOP
LCALL DELAY
LCALL START
MOV A,#0A1H
LCALL WRITE_BYTE
LCALL CHK_ANK
LCALL READ_BYTE
LCALL RED_ANK
LCALL STOP
RET
;------将数据存入EEPROM程序---
WRITE_EEPROM:
MOV READ_DAT,#10H
MOV R0,#30H
AT2403:LCALL WRITE_WORD_A
LCALL TIME_20MS
INC READ_DAT
INC R0
CJNE R0,#41H,AT2403
RET
;-----------------------------
WRITE_WORD_A:
LCALL START
MOV A,#0A0H
LCALL WRITE_BYTE
LCALL CHK_ANK
MOV A,READ_DAT
LCALL WRITE_BYTE
LCALL RED_ANK
LCALL DELAY
MOV A,@R0
LCALL WRITE_BYTE
LCALL RED_ANK
LCALL STOP
RET
;---------------------------
INT0PR: PUSH ACC
PUSH PSW
MOV A,INT0_DAT
INC A
CJNE A,#04H,INT0_PRB
INT0_PRA:SETB INT0_BIT
MOV INT0_DAT,#00H
POP PSW
POP ACC
RETI
INT0_PRB:JNC INT0_PRA
INT0_RET:MOV INT0_DAT,A
POP PSW
POP ACC
RETI
;----------------------------
INT0_PROG:
LCALL INT0_PROA
LCALL INT0_PROB
LCALL INT0_PROC
LCALL WRITE_LED
LCALL WRITE_EEPROM
RET
;----------------------------
INT0_PROA:
MOV A,DATA_1
CJNE A,#09H,IN_A01
LJMP IN_A02
IN_A01:INC A
MOV DATA_1,A
RET
IN_A02:MOV DATA_1,#00H
MOV A,DATA_2
CJNE A,#09H,IN_A03
LJMP IN_A04
IN_A03:INC A
MOV DATA_2,A
RET
IN_A04:MOV DATA_2,#00H
MOV A,DATA_3
CJNE A,#09H,IN_A05
LJMP IN_A06
IN_A05:INC A
MOV DATA_3,A
RET
IN_A06:MOV DATA_3,#00H
MOV A,DATA_4
CJNE A,#09H,IN_A07
LJMP IN_A08
IN_A07:INC A
MOV DATA_4,A
RET
IN_A08:MOV DATA_4,#00H
MOV DATA_3,#00H
MOV DATA_2,#00H
MOV DATA_1,#00H
RET
;-----------------------------
INT0_PROB:
MOV A,DATA_5
CJNE A,#09H,IN_B01
LJMP IN_B02
IN_B01:INC A
MOV DATA_5,A
RET
IN_B02:MOV DATA_5,#00H
MOV A,DATA_6
CJNE A,#09H,IN_B03
LJMP IN_B04
IN_B03:INC A
MOV DATA_6,A
RET
IN_B04:MOV DATA_6,#00H
MOV A,DATA_7
CJNE A,#09H,IN_B05
LJMP IN_B06
IN_B05:INC A
MOV DATA_7,A
RET
IN_B06:MOV DATA_7,#00H
MOV A,DATA_8
CJNE A,#09H,IN_B07
LJMP IN_B08
IN_B07:INC A
MOV DATA_8,A
RET
IN_B08:MOV DATA_8,#00H
MOV DATA_7,#00H
MOV DATA_6,#00H
MOV DATA_5,#00H
RET
;-----------------------------
INT0_PROC:
MOV A,DATA_13
CJNE A,#09H,IN_C01
LJMP IN_C02
IN_C01:INC A
MOV DATA_13,A
RET
IN_C02:MOV DATA_13,#00H
MOV A,DATA_14
CJNE A,#09H,IN_C03
LJMP IN_C04
IN_C03:INC A
MOV DATA_14,A
RET
IN_C04:MOV DATA_14,#00H
MOV A,DATA_15
CJNE A,#09H,IN_C05
LJMP IN_C06
IN_C05:INC A
MOV DATA_15,A
RET
IN_C06:MOV DATA_15,#00H
MOV A,DATA_16
CJNE A,#09H,IN_C07
LJMP IN_C08
IN_C07:INC A
MOV DATA_16,A
RET
IN_C08:MOV DATA_16,#00H
MOV DATA_15,#00H
MOV DATA_14,#00H
MOV DATA_13,#00H
RET
;---------------------------
TIME_20MS:
MOV R6,#010H
TIME_A: MOV R7,#0FFH
TIME_B: DJNZ R7,TIME_B
DJNZ R6,TIME_A
RET
;---------------------------
TIME_100MS:
MOV R6,#0F0H
TIME_C: MOV R7,#0FFH
TIME_D: DJNZ R7,TIME_D
DJNZ R6,TIME_C
RET
;******* 定时器“0”中断 ******
TIME0PR:PUSH ACC
PUSH PSW
MOV TH0,#0C0H
MOV TL0,#58H
MOV A,TACOM
INC A
CJNE A,#08H,TIME0PB
TIME0PA:MOV A,#00H
MOV TACOM,A
SETB T0_OVER
LJMP TIME0PD
TIME0PB:JNC TIME0PA
TIME0PC:MOV TACOM,A
TIME0PD:SETB TR0
POP PSW
POP ACC
RETI
;********初始化各参数***********
RAM_INT:MOV A,#00H
MOV R0,#20H
RAM_INA:MOV @R0,A
INC R0
CJNE R0,#80H,RAM_INA
MOV BLINK_A,#0FFH
MOV BLINK_B,#0FFH
MOV BCD_A,#0FFH
MOV BCD_B,#0FFH
LCALL WRITE_BLINK
MOV WORD_DATA,#55H
CLR CURSOR_1
CLR TEST
SETB CLK_A
SETB DAT_A
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -