微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机的315M发射头发送汇编程序

51单片机的315M发射头发送汇编程序

时间:11-28 来源:互联网 点击:
;防盗器主机程序

FSDD EQU P1.7 ;发射控制D端,高电平控制有效

FSCC EQU P1.6 ;发射控制C端,高电平控制有效

FSBB EQU P1.5 ;发射控制B端,高电平控制有效

BJQ1 EQU P1.1 ;报警器,低电平报警

SPK1 EQU P1.0 ;喇叭,驱动方式为脉冲信号

LED1 EQU P3.0 ;指示灯

JSVT EQU P3.2 ;接收头VT端

JSDD EQU P3.3 ;接收头D输出端,有效高电平输出

JSCC EQU P3.4 ;接收头C输出端,有效高电平输出

JSBB EQU P3.5 ;接收头B输出端,有效高电平输出

DYJC EQU P3.7 ;主机电源电压检测端,电源电压低于9V报警提示

P1MO EQU 91H

P1M1 EQU 92H

P1MA EQU 00000000B;定义P1口状态

P1MB EQU 11100011B;设P1.7、P1.6、P1.5、P1.1、P1.0口为推挽输出

JSBM EQU 00111100B;设置接收端口状态,屏蔽P3.7、P3.6、P3.1、P3.0

KJBM EQU 00011000B;设定开机编码为011(即接收头B为0、C为1、D为1)

ZDBM EQU 00110000B;设定振动探测报警编码为110

WBBM EQU 00101000B;设定微波探测报警编码为101

DYBM EQU 00010000B;设定子机电源低压报警编码为010

LLBM EQU 00001000B;设定3分钟联络子机一次编号为001

ORG 0000H ;程序执行开始地址

LJMP KS1 ;跳至KS1

ORG 0003H ;外中断0中断程序入口

RETI ;中断返回

ORG 000BH ;定时器T0中断程序入口

LJMP INTT0 ;中断返回

ORG 0013H ;外中断1中断入口

RETI ;中断返回

ORG 001BH ;定时器T1中断程序入口

RETI ;跳至INTT1中断服务程序

ORG 0023H ;串口中断入口地址

RETI

ORG 0100H

;开机初始化

KS1: MOV P1MO,#P1MA ;定义P1口状态

MOV P1M1,#P1MB ;设P1口部分为推挽输出

CLR SPK1 ;关喇叭

CLR BJQ1 ;关报警器

CLR FSDD ;发射电路不发射(D端为0)

CLR FSCC ;发射电路不发射(C端为0)

CLR FSBB ;发射电路不发射(B端为0)

MOV SP,#50H ;设推栈初值

MOV R0,#05H ;设低压报警次数初值

MOV PSW,#00H ;设程序状态字寄存器为00

MOV SCON,#00H ;设串行口控制寄存器为00

CLR LED1 ;指示灯提示通电

ACALL DIDI ;DI声提示通电

SETB LED1 ;关指示灯

ACALL DYJC1 ;电压检测

;----------------------------------------------------------------

KS2: JB JSVT,$ ;检测是否接收到信号

ACALL YS1

JB JSVT,KS2

MOV A,P3 ;收到子机的反馈信号则判断是否正确

ANL A,#JSBM ;屏蔽P3.7、P3.6、P3.1、P3.0

CJNE A,#KJBM,KS2 ;检查是否是开机信号

KS3: CLR LED1 ;发光管点亮指示

SETB BJQ1 ;开报警声提示

ACALL YS2 ;延时

CLR BJQ1 ;关报警声

SETB LED1 ;发光管灭

JNB JSVT,$ ;等待发射信号停止发射

MOV TMOD,#00010001B;设定时器T1为计数器方式(方式1)

MOV TH0,#3CH ;设T1为100mS

MOV TL0,#0B0H

SETB EA ;开总中断允许

SETB ET0 ;允许定时器T1中断

SETB TR0 ;启动计数器T1

MOV R1,#00H ;100ms时间计数器清零

MOV R3,#0AH

L0: JB JSVT,$ ;检测是否接收到信号

ACALL YS1

JB JSVT,L0

MOV A,P3 ;收到子机的反馈信号则判断是否正确

ANL A,#JSBM ;屏蔽P3.7、P3.6、P3.1、P3.0

CJNE A,#KJBM,L1 ;检查是否是开机信号

CLR EA ;关总中断

SJMP KS3 ;重新开始

L1: CJNE A,#ZDBM,L2 ;检测收到的信号是否是振动探测报警信号

CLR TR0 ;关计数器T1

CLR LED1 ;是报警信号则发光管亮

SETB BJQ1 ;开报警声

;ACALL YS3 ;延时

;CLR BJQ1 ;关报警声

;SETB LED1 ;发光管灭

SETB TR0 ;启动计数器T1

SJMP L0 ;返回继续检测

L2: CJNE A,#WBBM,L3 ;检测收到的信号是否是微波探测报警信号

CLR TR0 ;关计数器T1

SETB BJQ1 ;开报警声

ACALL YS3 ;延时

CLR BJQ1 ;关报警声

SETB TR0 ;启动计数器T1

SJMP L0 ;返回继续检测

L3: CJNE A,#DYBM,L4 ;检测收到的信号是否是子机低压报警信号

CLR TR0 ;关计数器T1

CLR LED1 ;发光管亮

ACALL DIDI ;是则3声DI报警

ACALL DIDI

ACALL DIDI

ACALL DIDI

ACALL DIDI

ACALL DIDI

DJNZ R3,L5

L6: ACALL DIDI

ACALL YS2

SJMP L6 ;返回继续检测

L5: SETB TR0 ;启动计数器T1

SJMP L0 ;返回继续检测

L4: CJNE A,#LLBM,L0 ;检测收到的信号是否是关机信号

CLR TR0 ;关计数器T1

ACALL DIDI ;是则3声DI报警

ACALL DIDI

ACALL DIDI

ACALL DIDI

JNB JSVT,$ ;等待发射信号停止发射

CLR BJQ1 ;关报警声

AJMP KS2 ;返回继续检测

;----------------------------------------------------------------

;5s时间子程序和电源电压监测中断处理程序

INTT0:CLR TR0 ;关计数器T1

PUSH ACC ;进栈保护ACC数据

PUSH PSW ;进栈保护PSW数据

MOV TH0,#3CH ;设T1为100mS

MOV TL0,#0B0H

INC R1 ;时间计数器,100ms进位1次

CJNE R1,#50,LOP1 ;计时计数器,5s进位1次

MOV R1,#00H ;时间到清零

CLR LED1 ;指示灯闪亮一下指示防盗监测状态

ACALL YS2

SETB LED1

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top