⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 safe_days.asm

📁 基于89c51的led安全生产天数的显示程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        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 + -