📄 加狗9.8main.asm
字号:
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 + -