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

发布者:Blissful567最新更新时间:2015-08-26 来源: eefocus关键字:51单片机  315M发射头  发送汇编程序 手机看文章 扫描二维码
随时随地手机看文章
;防盗器主机程序 
      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          ;返回继续检测 
 [page]
;---------------------------------------------------------------- 
;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 
      ACALL DYJC1       ;检测电源电压 
LOP1: POP PSW           ;PSW出栈 
      POP ACC           ;ACC出栈 
      SETB TR0          ;开计数器T1 
      RETI              ;中断返回 
 
;---------------------------------------------------------------- 
;以下电源电压检测程序 
;---------------------------------------------------------------- 
DYJC1:JB DYJC,LOP3      ;检测电源电压 
      CLR LED1          ;发光管亮 
      ACALL DIDI        ;是则2声DI报警 
      ACALL DIDI 
      DJNZ R0,LOP3      ;报警超过5次,连续报警多次后关机并进入掉电模式 
      MOV A,#20         ;低压则连续报警20次 
LOP2: ACALL DIDI 
      ACALL YS2 
      DEC A 
      JNZ LOP2 
      SETB LED1         ;发光管灭 
      ORL PCON,#2       ;进入掉电模式,只有复位才能启动 
      NOP 
      NOP 
      NOP 
      AJMP KS1          ;软件陷阱 
 
LOP3: RET 
      NOP 
      NOP 
      NOP 
      AJMP KS1          ;软件陷阱 
 
;---------------------------------------------------------------- 
;以下为报警子程序 
;---------------------------------------------------------------- 
;DI声报警子程序 
DIDI: MOV 20H,#0F0H ;DI声提示音 
L111: SETB SPK1        ;开喇叭 
      ACALL L222 ;延时时间比INT1长 
      CLR SPK1        ;关喇叭 
      ACALL L222 ; 
      DJNZ 20H,L111     ;不为零转 
      RET 
L222: MOV R2,#08H ; 
S00EB:PUSH 02H          ;R2(复位后R2即为02H)存放时间常数,进栈保护 
L00ED:PUSH 02H        ;R2进栈保护 
L00EF:PUSH 02H        ;进栈 
L00F1:DJNZ R2,$        ;R2不为零等待 
      POP 02H ;出栈 
      DJNZ R2,L00EF ;R2不为零转 
      POP 02H ;出栈 
      DJNZ R2,L00ED ;R2不为零转 
      POP 02H ;出栈 
      DJNZ R2,S00EB ;R2不为零转 
      RET            ;子程序返回 
 
;---------------------------------------------------------------- 
;以下为延时子程序 
;---------------------------------------------------------------- 
;延时子程序 
YS1:  MOV R6,#0FFH 
Y11:  MOV R7,#0FFH 
Y12:  NOP 
      NOP 
      NOP 
      DJNZ R7,Y12 
      DJNZ R6,Y11 
      RET 
;---------------------------------------------------------------- 
YS2:  MOV R5,#08H       ;中长时间延时 
Y20:  MOV R6,#0FFH 
Y21:  MOV R7,#0FFH 
Y22:  NOP 
      NOP 
      NOP 
      DJNZ R7,Y22 
      DJNZ R6,Y21 
      DJNZ R5,Y20 
      RET 
;---------------------------------------------------------------- 
YS3:  MOV R5,#50       ;长长时间延时 
Y30:  MOV R6,#0FFH 
Y31:  MOV R7,#0FFH 
Y32:  NOP 
      NOP 
      NOP 
      DJNZ R7,Y32 
      DJNZ R6,Y31 
      DJNZ R5,Y30 
      RET 
 
      ORG 0300H 
      NOP 
      NOP 
      NOP 
      LJMP KS1         ;软件陷阱 
 
      END 
关键字:51单片机  315M发射头  发送汇编程序 引用地址:51单片机的315M发射头发送汇编程序

上一篇:51单片机的315M接收头接收汇编程序(从机)
下一篇:51单片机的走马灯C语言程序

推荐阅读最新更新时间:2024-03-16 14:30

C51单片机中断实验
实验要求: 要求通过中断方式检测有无按键 判断哪个按键(编号0-9),并且在数码管上显示对应的0-9 代码部分 #include reg51.h char led_mod ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; char key_buf ={0xee,0xde,0xbe,0xed,0xdd,0xbd,0xeb,0xdb,0xbb,0xe7}; void getKey() interrupt 0{ char key_scan ={0xef,0xdf,0xbf,0x7f}; char i=0,j=0; for(i=0;i 4;i++){ P2
[单片机]
C<font color='red'>51单片机</font>中断实验
51单片机使用ec11旋转编码器 数码管显示
#include reg51.h #define GPIO_DIG P0 unsigned char code DIG_CODE ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9的值 int tmp = 1; #define uchar unsigned char sbit BB = P1^0;//接编码器A端 sbit AA = P1^1;//接编码器B端 void delayms(uchar count) { uchar i,j; for(i = 0; i count; i++) for(j = 0; j 120; j+
[单片机]
51单片机基础之1602显示器
代码: main.c文件 #include public.h #include lcd1602.h /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { int a=111; lcd160
[单片机]
<font color='red'>51单片机</font>基础之1602显示器
uart接口_基于51单片机的UART串口通信
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。 UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信
[单片机]
uart接口_基于<font color='red'>51单片机</font>的UART串口通信
基于51单片机的电梯控制系统
一.硬件方案 本次设计是采用开关控制实现上下到指定楼层,通过电机转动带动电梯箱上下运动,到达指定楼层。显示模块是显示此时的楼层,报警模块具有错误操作报警以及楼层到达的提示功能。 主要由51单片机+共阴数码管+红外发射和接收模块+按键+指示灯+蜂鸣器设计而成;如图: 二.设计功能 (1)通电后,系统默认电梯停在一层。 (2)按下不同的按键电梯可以到达不同的楼层,如果电梯在上行,下面的楼层有呼叫电梯会继续上行,直到上行完了才会下行。同样如果电梯在下行,上面的楼层有呼叫 电梯会继续上行 ,直到下行完了才会上行。 (3)如需上行,请按下所要到达楼层的上行呼叫按钮,电梯显示开始上行,所经楼层号用数码管进行显示,到达,楼层号持续显示,
[单片机]
基于<font color='red'>51单片机</font>的电梯控制系统
51单片机学习笔记5 -- 外部中断
1.外部中断概念 外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。 2.引脚功能复用 51单片机芯片内部有很多外设,这些外设的引脚都是与IO口复用的。也就是说,一个IO口如果可以复用为内置外设的功能引脚,那么当这个IO口作为内部外设使用的时候,就叫做复用(一般来说,当某个引脚作为复用功能使用时,它将不能作为其他复用功能和普通IO来使用,即单个引脚只能作为普通IO或单个复用功能来使用)。 51单片机也有引脚具备复用功能,如下图P3端口的引脚可复用成串口收发或外部中断 3.中
[单片机]
<font color='red'>51单片机</font>学习笔记5 -- 外部中断
MCS51单片机采用什么样的抗干扰技术
普及型MCS-51系列单片机(如8031和8032)既然无复位指令,又没有集成WATCHDOS电路,那么普及型MCS-51单片机是采用什么样的抗干扰技术呢?如果没有外接硬件WATCHDOG电路,就必须采用软件抗干扰技术。常用的软件抗干扰技术有:软件陷阱、指令冗余、软件WATCHDOG等,它们的作用是在系统受干扰时能及时发现,再用软件的方法使系统复位。所谓软件复位就是用一系列指令来模仿复位操作,这就是MCS-51系列单片机所特有的软件复位技术。
[单片机]
TMS320VC5402的HPI与51单片机的接口设计
0 引言 TMS320VC5402是TI公司推出的性价比极高的定点数字信号处理器(DSP)。它具有先进的多总线结构(三条16位数据存储器总线和一条程序存储器总线);其数据/程序寻址空间为1 M×16 bit: 内置4 k×16 bitP/DROM和16 k×16 bit-DARAM;此外,该DSP内含两个多通道缓冲串行口,一个8位并行与外部处理器通信的HPI口,2个16位定时器以及6通道DMA控制器;具有低功耗,适合电池供电设备等特点 。 51系列单片机是一种很经典的单片机。20多年来一直久盛不衰。而且Intel通过授权5l内核,目前已出现了很多第三方生产的51系列产品。这些产品一般都具有较高的时钟频率和较大的存储空间,而且还
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved