新闻中心

EEPW首页>嵌入式系统>设计应用> 51单片机的315M发射头发送汇编程序

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

作者: 时间:2016-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 ;返回继续检测

上一页 1 2 下一页

评论


技术专区

关闭