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

📄 加狗9.8main.asm

📁 程序为51单片机小系统一完整程序有看门狗 和各种中断
💻 ASM
📖 第 1 页 / 共 2 页
字号:
           LJMP       CHUANRET1
CHUAN106:  NOP
           CJNE       R2,#27H,CHUAN107 
           NOP
           CJNE       A,#0DH,CHUANRET             ;0DH为  <CR> 符  为了给CAN报警的第8个字符
           NOP
           INC        R2
           NOP
           LJMP       CHUANRET1
CHUAN107:  NOP
           CJNE       R2,#28H,CHUANRET 
           NOP
           CJNE       A,#0AH,CHUANRET             ;0AH为  <LF> 符  为了给CAN报警的第9个字符
           NOP
           INC        R2
           NOP
           SETB       05H                         ;05H位为 1 表示为CAN正常 给主程序判断
           SETB       04H                         ;04H位为 1 为了给主程序判断说明接收到数据
           NOP
CHUANRET:  NOP
           MOV        R2,#00H
           MOV        R0,#33H
           NOP
CHUANRET1: NOP
           POP        A
           NOP
           SETB       EA
           RETI
;******************************************************************
;**************   自检子程序    ************************************
;******************************************************************
ZIJIAN:     NOP
            CLR       EA
            CLR       03H                          ;重新计时
            MOV       R5,#00H
            MOV       R6,#00H
            NOP
            CLR       00H                          ;清除 自检报警标志
            CLR       02H                          ;清除 静音标志
            SETB      EA
            NOP
ZIJIAN0:    NOP
            JB        02H,ZIJIAN1                  ;02H为 1 静音
            NOP                                    ;为 0 声光报警
            JB        03H,ZIJIANRET                ;03H为 1 则为两分钟 跳出
            CPL       P1.2
            NOP
            MOV       P2,#11H                      ;声光报警
            LCALL     DELAY20                        ;延时
            NOP
            MOV       P2,#00H                      ;为了  产生间断   实现一闪一闪的
            LCALL     DELAY10
            MOV       P2,#10H
            CPL       P1.2
            LCALL     DELAY20
            SJMP      ZIJIAN0
ZIJIAN1:    NOP
            JB        03H,ZIJIANRET                ;03H为 1 则为两分钟 跳出
            CJNE      R7,#05H,ZIJIAN10
            NOP
            SJMP      ZIJIANRET
ZIJIAN10:   NOP
            CPL       P1.2
            MOV       P2,#01H                      ;只产生  光报警
            LCALL     DELAY20
            NOP
            MOV       P2,#00H
            CPL          P1.2
            LCALL     DELAY20
            INC       R7
            NOP
            SJMP      ZIJIAN1
ZIJIANRET:  NOP
            MOV       P2,#00H                      ;消除报警
            CLR       03H                          ;重新计时
            MOV       R5,#00H
            MOV       R6,#00H
            MOV       R7,#00H
            NOP
            CLR       00H                          ;清除 自检报警标志
            CLR       02H                          ;清除 静音标志
            RET
;***************************************************************************
DELAY:	     MOV        32H,#02H
DELAY0:      MOV	31H,#0FFH
DELAY1:      MOV	30H,#0FFH
DELAY2:      NOP
	     NOP
	     DJNZ	30H,DELAY2
	     DJNZ	31H,DELAY1
             DJNZ       32H,DELAY0
	     RET
;***************************************************************************
DELAY10:     MOV        32H,#02H
DELAY00:      MOV	31H,#13H
DELAY01:      MOV	30H,#0FFH
DELAY02:      NOP
	     NOP
	     DJNZ	30H,DELAY02
	     DJNZ	31H,DELAY01
             DJNZ       32H,DELAY00
	     RET
;***************************************************************************
DELAY20:     MOV        32H,#02H
DELAY23:      MOV	31H,#0D0H
DELAY21:      MOV	30H,#0FFH
DELAY22:      NOP
	     NOP
	     DJNZ	30H,DELAY22
	     DJNZ	31H,DELAY21
             DJNZ       32H,DELAY23
	     RET
;***************************************************************************
;****************     初始化子程序    ***************************************
;***************************************************************************
KAISHI:     NOP
            MOV       P2,#00H                      ; 清除声光报警
            MOV       P2,#00H
            NOP
            SETB      P1.5                         ;键盘
            SETB      P1.7
            CLR       P1.6
            SETB      P1.0                         ;电源指示灯
            CLR       P1.3                         ;CAN指示灯
            NOP
            MOV       R7,#00H
            MOV       R2,#00H                      ;串口中断计数专用
            NOP
            MOV       R5,#00H                      ;定时器计数
            MOV       R6,#00H
            NOP
            MOV       30H,#00H                     ;延时计数
            MOV       31H,#00H
            MOV       32H,#00H
            MOV       R0,#33H
            NOP
            CLR       00H                           ;00H位为 0 无自检
            CLR       01H                           ;为 0 表示 正常
            CLR       02H                           ;为 0 表示 无静音  因为静音必须按下才有效 
            CLR       03H                           ;用于 定时器 未到两分钟
            CLR       04H                           ;04H位为 1 为了给主程序判断说明接收到数据
            CLR       05H                           ;05H为 0 表示  CAN正常
            NOP
            RET
;******************************************************************
;**************   报警子程序    ************************************
;******************************************************************
BAOJING:    NOP
            CLR       02H                          ;清除 静音标志
            NOP
BAOJING0:   NOP
            JB        02H,BAOJING1                  ;02H为 1 静音
            NOP                                    ;为 0 声光报警
            JNB       01H,BAOJINGRET               ;01H为 0 则为消除报警 跳出
            JB        05H,BAOJINGRET               ;05H为 1 CAN报警 应跳到CAN报警中去
            NOP
            CPL       P1.2
            MOV       P2,#11H                      ;声光报警
            LCALL     DELAY20                        ;延时
            NOP
            MOV       P2,#00H                      ;为了  产生间断   实现一闪一闪的
            JNB       04H,BAOJING00                ;04H 为 0 表示为无数据接收到
            NOP
            CLR          P1.0
            LCALL        DELAY10
            SETB         P1.0
            CLR          04H
            NOP
BAOJING00:  NOP
            CPL          P1.2
            LCALL     DELAY10
            MOV       P2,#10H
            LCALL     DELAY20
            SJMP      BAOJING0
BAOJING1:   NOP
            JNB       01H,BAOJINGRET                ;01H为 0 则为消除报警 跳出
            JB        05H,BAOJINGRET               ;05H为 1 CAN报警 应跳到CAN报警中去
            JNB          04H,BAOJING10          ;04H 为 0 表示为无数据接收到
            CPL          P1.2
            NOP
            CLR          P1.0
            LCALL        DELAY10
            SETB         P1.0
            CLR          04H
            NOP
BAOJING10:  NOP
            MOV       P2,#01H                      ;只产生  光报警
            CPL       P1.2
            LCALL     DELAY20
            NOP
            MOV       P2,#00H
            CPL       P1.2
            LCALL     DELAY20
            SJMP      BAOJING1
BAOJINGRET: NOP
            LCALL     KAISHI
            NOP
            RET
;******************************************************************
;**************   CAN报警子程序    ********************************
;******************************************************************
BJCAN:      NOP
            CLR       02H                          ;清除 静音标志
            NOP
BJCAN0:     NOP
            JB        02H,BJCAN1                   ;02H为 1 静音
            NOP                                    ;为 0 声光报警
            JNB       01H,BJCANRET                 ;01H为 0 则为消除报警 跳出
            JNB       05H,BJCANRET                 ;05H为 0 消除CAN报警  跳出
            NOP
            SETB      P1.3                         ;表示CAN报警
            CPL       P1.2
            MOV       P2,#11H                      ;声光报警
            LCALL     DELAY20                      ;延时
            NOP
            MOV       P2,#00H                      ;为了  产生间断   实现一闪一闪的
            JNB       04H,BJCAN00                  ;04H 为 0 表示为无数据接收到
            NOP
            CLR          P1.0
            LCALL        DELAY10
            SETB         P1.0
            CLR          04H
            NOP
BJCAN00:    NOP
            CPL          P1.2
            LCALL     DELAY10
            MOV       P2,#10H
            LCALL     DELAY20
            SJMP      BJCAN0
BJCAN1:     NOP
            JNB          01H,BJCANRET               ;01H为 0 则为消除报警 跳出
            JNB          05H,BJCANRET               ;05H为 0 消除CAN报警  跳出
            JNB          04H,BJCAN10                ;04H 为 0 表示为无数据接收到
            CPL          P1.2
            NOP
            CLR          P1.0
            LCALL        DELAY10
            SETB         P1.0
            CLR          04H
            NOP
BJCAN10:    NOP
            SETB      P1.3                         ;表示CAN报警
            MOV       P2,#01H                      ;只产生  光报警
            CPL       P1.2
            LCALL     DELAY20
            NOP
            MOV       P2,#00H
            CPL       P1.2
            LCALL     DELAY20
            SJMP      BJCAN1
BJCANRET:   NOP
            LCALL     KAISHI
            NOP
            RET



            END



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -