新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機的315M發(fā)射頭發(fā)送匯編程序

51單片機的315M發(fā)射頭發(fā)送匯編程序

作者: 時間:2016-11-28 來源:網絡 收藏
;防盜器主機程序
FSDD EQU P1.7 ;發(fā)射控制D端,高電平控制有效
FSCC EQU P1.6 ;發(fā)射控制C端,高電平控制有效
FSBB EQU P1.5 ;發(fā)射控制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口狀態(tài)
P1MB EQU 11100011B;設P1.7、P1.6、P1.5、P1.1、P1.0口為推挽輸出
JSBM EQU 00111100B;設置接收端口狀態(tài),屏蔽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分鐘聯(lián)絡子機一次編號為001
ORG 0000H ;程序執(zhí)行開始地址
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口狀態(tài)
MOV P1M1,#P1MB ;設P1口部分為推挽輸出
CLR SPK1 ;關喇叭
CLR BJQ1 ;關報警器
CLR FSDD ;發(fā)射電路不發(fā)射(D端為0)
CLR FSCC ;發(fā)射電路不發(fā)射(C端為0)
CLR FSBB ;發(fā)射電路不發(fā)射(B端為0)
MOV SP,#50H ;設推棧初值
MOV R0,#05H ;設低壓報警次數(shù)初值
MOV PSW,#00H ;設程序狀態(tài)字寄存器為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 ;發(fā)光管點亮指示
SETB BJQ1 ;開報警聲提示
ACALL YS2 ;延時
CLR BJQ1 ;關報警聲
SETB LED1 ;發(fā)光管滅
JNB JSVT,$ ;等待發(fā)射信號停止發(fā)射
MOV TMOD,#00010001B;設定時器T1為計數(shù)器方式(方式1)
MOV TH0,#3CH ;設T1為100mS
MOV TL0,#0B0H
SETB EA ;開總中斷允許
SETB ET0 ;允許定時器T1中斷
SETB TR0 ;啟動計數(shù)器T1
MOV R1,#00H ;100ms時間計數(shù)器清零
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 ;關計數(shù)器T1
CLR LED1 ;是報警信號則發(fā)光管亮
SETB BJQ1 ;開報警聲
;ACALL YS3 ;延時
;CLR BJQ1 ;關報警聲
;SETB LED1 ;發(fā)光管滅
SETB TR0 ;啟動計數(shù)器T1
SJMP L0 ;返回繼續(xù)檢測
L2: CJNE A,#WBBM,L3 ;檢測收到的信號是否是微波探測報警信號
CLR TR0 ;關計數(shù)器T1
SETB BJQ1 ;開報警聲
ACALL YS3 ;延時
CLR BJQ1 ;關報警聲
SETB TR0 ;啟動計數(shù)器T1
SJMP L0 ;返回繼續(xù)檢測
L3: CJNE A,#DYBM,L4 ;檢測收到的信號是否是子機低壓報警信號
CLR TR0 ;關計數(shù)器T1
CLR LED1 ;發(fā)光管亮
ACALL DIDI ;是則3聲DI報警
ACALL DIDI
ACALL DIDI
ACALL DIDI
ACALL DIDI
ACALL DIDI
DJNZ R3,L5
L6: ACALL DIDI
ACALL YS2
SJMP L6 ;返回繼續(xù)檢測
L5: SETB TR0 ;啟動計數(shù)器T1
SJMP L0 ;返回繼續(xù)檢測
L4: CJNE A,#LLBM,L0 ;檢測收到的信號是否是關機信號
CLR TR0 ;關計數(shù)器T1
ACALL DIDI ;是則3聲DI報警
ACALL DIDI
ACALL DIDI
ACALL DIDI
JNB JSVT,$ ;等待發(fā)射信號停止發(fā)射
CLR BJQ1 ;關報警聲
AJMP KS2 ;返回繼續(xù)檢測

上一頁 1 2 下一頁

評論


技術專區(qū)

關閉