新聞中心

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

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

作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
;防盜器主機(jī)程序
FSDD EQU P1.7 ;發(fā)射控制D端,高電平控制有效
FSCC EQU P1.6 ;發(fā)射控制C端,高電平控制有效
FSBB EQU P1.5 ;發(fā)射控制B端,高電平控制有效
BJQ1 EQU P1.1 ;報(bào)警器,低電平報(bào)警
SPK1 EQU P1.0 ;喇叭,驅(qū)動(dòng)方式為脈沖信號(hào)
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 ;主機(jī)電源電壓檢測端,電源電壓低于9V報(bào)警提示
P1MO EQU 91H
P1M1 EQU 92H
P1MA EQU 00000000B;定義P1口狀態(tài)
P1MB EQU 11100011B;設(shè)P1.7、P1.6、P1.5、P1.1、P1.0口為推挽輸出
JSBM EQU 00111100B;設(shè)置接收端口狀態(tài),屏蔽P3.7、P3.6、P3.1、P3.0
KJBM EQU 00011000B;設(shè)定開機(jī)編碼為011(即接收頭B為0、C為1、D為1)
ZDBM EQU 00110000B;設(shè)定振動(dòng)探測報(bào)警編碼為110
WBBM EQU 00101000B;設(shè)定微波探測報(bào)警編碼為101
DYBM EQU 00010000B;設(shè)定子機(jī)電源低壓報(bào)警編碼為010
LLBM EQU 00001000B;設(shè)定3分鐘聯(lián)絡(luò)子機(jī)一次編號(hào)為001
ORG 0000H ;程序執(zhí)行開始地址
LJMP KS1 ;跳至KS1
ORG 0003H ;外中斷0中斷程序入口
RETI ;中斷返回
ORG 000BH ;定時(shí)器T0中斷程序入口
LJMP INTT0 ;中斷返回
ORG 0013H ;外中斷1中斷入口
RETI ;中斷返回
ORG 001BH ;定時(shí)器T1中斷程序入口
RETI ;跳至INTT1中斷服務(wù)程序
ORG 0023H ;串口中斷入口地址
RETI
ORG 0100H
;開機(jī)初始化
KS1: MOV P1MO,#P1MA ;定義P1口狀態(tài)
MOV P1M1,#P1MB ;設(shè)P1口部分為推挽輸出
CLR SPK1 ;關(guān)喇叭
CLR BJQ1 ;關(guān)報(bào)警器
CLR FSDD ;發(fā)射電路不發(fā)射(D端為0)
CLR FSCC ;發(fā)射電路不發(fā)射(C端為0)
CLR FSBB ;發(fā)射電路不發(fā)射(B端為0)
MOV SP,#50H ;設(shè)推棧初值
MOV R0,#05H ;設(shè)低壓報(bào)警次數(shù)初值
MOV PSW,#00H ;設(shè)程序狀態(tài)字寄存器為00
MOV SCON,#00H ;設(shè)串行口控制寄存器為00
CLR LED1 ;指示燈提示通電
ACALL DIDI ;DI聲提示通電
SETB LED1 ;關(guān)指示燈
ACALL DYJC1 ;電壓檢測
;----------------------------------------------------------------
KS2: JB JSVT,$ ;檢測是否接收到信號(hào)
ACALL YS1
JB JSVT,KS2
MOV A,P3 ;收到子機(jī)的反饋信號(hào)則判斷是否正確
ANL A,#JSBM ;屏蔽P3.7、P3.6、P3.1、P3.0
CJNE A,#KJBM,KS2 ;檢查是否是開機(jī)信號(hào)
KS3: CLR LED1 ;發(fā)光管點(diǎn)亮指示
SETB BJQ1 ;開報(bào)警聲提示
ACALL YS2 ;延時(shí)
CLR BJQ1 ;關(guān)報(bào)警聲
SETB LED1 ;發(fā)光管滅
JNB JSVT,$ ;等待發(fā)射信號(hào)停止發(fā)射
MOV TMOD,#00010001B;設(shè)定時(shí)器T1為計(jì)數(shù)器方式(方式1)
MOV TH0,#3CH ;設(shè)T1為100mS
MOV TL0,#0B0H
SETB EA ;開總中斷允許
SETB ET0 ;允許定時(shí)器T1中斷
SETB TR0 ;啟動(dòng)計(jì)數(shù)器T1
MOV R1,#00H ;100ms時(shí)間計(jì)數(shù)器清零
MOV R3,#0AH
L0: JB JSVT,$ ;檢測是否接收到信號(hào)
ACALL YS1
JB JSVT,L0
MOV A,P3 ;收到子機(jī)的反饋信號(hào)則判斷是否正確
ANL A,#JSBM ;屏蔽P3.7、P3.6、P3.1、P3.0
CJNE A,#KJBM,L1 ;檢查是否是開機(jī)信號(hào)
CLR EA ;關(guān)總中斷
SJMP KS3 ;重新開始
L1: CJNE A,#ZDBM,L2 ;檢測收到的信號(hào)是否是振動(dòng)探測報(bào)警信號(hào)
CLR TR0 ;關(guān)計(jì)數(shù)器T1
CLR LED1 ;是報(bào)警信號(hào)則發(fā)光管亮
SETB BJQ1 ;開報(bào)警聲
;ACALL YS3 ;延時(shí)
;CLR BJQ1 ;關(guān)報(bào)警聲
;SETB LED1 ;發(fā)光管滅
SETB TR0 ;啟動(dòng)計(jì)數(shù)器T1
SJMP L0 ;返回繼續(xù)檢測
L2: CJNE A,#WBBM,L3 ;檢測收到的信號(hào)是否是微波探測報(bào)警信號(hào)
CLR TR0 ;關(guān)計(jì)數(shù)器T1
SETB BJQ1 ;開報(bào)警聲
ACALL YS3 ;延時(shí)
CLR BJQ1 ;關(guān)報(bào)警聲
SETB TR0 ;啟動(dòng)計(jì)數(shù)器T1
SJMP L0 ;返回繼續(xù)檢測
L3: CJNE A,#DYBM,L4 ;檢測收到的信號(hào)是否是子機(jī)低壓報(bào)警信號(hào)
CLR TR0 ;關(guān)計(jì)數(shù)器T1
CLR LED1 ;發(fā)光管亮
ACALL DIDI ;是則3聲DI報(bào)警
ACALL DIDI
ACALL DIDI
ACALL DIDI
ACALL DIDI
ACALL DIDI
DJNZ R3,L5
L6: ACALL DIDI
ACALL YS2
SJMP L6 ;返回繼續(xù)檢測
L5: SETB TR0 ;啟動(dòng)計(jì)數(shù)器T1
SJMP L0 ;返回繼續(xù)檢測
L4: CJNE A,#LLBM,L0 ;檢測收到的信號(hào)是否是關(guān)機(jī)信號(hào)
CLR TR0 ;關(guān)計(jì)數(shù)器T1
ACALL DIDI ;是則3聲DI報(bào)警
ACALL DIDI
ACALL DIDI
ACALL DIDI
JNB JSVT,$ ;等待發(fā)射信號(hào)停止發(fā)射
CLR BJQ1 ;關(guān)報(bào)警聲
AJMP KS2 ;返回繼續(xù)檢測

上一頁 1 2 下一頁

評論


技術(shù)專區(qū)

關(guān)閉