新聞中心

        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 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 中山市| 聂拉木县| 北京市| 洪湖市| 开封市| 顺昌县| 屯门区| 永和县| 宝兴县| 塔城市| 鹿泉市| 宁安市| 平湖市| 隆回县| 玉龙| 旬阳县| 华蓥市| 台南市| 米脂县| 忻城县| 漯河市| 徐水县| 达孜县| 吉首市| 龙游县| 高雄市| 濮阳市| 如东县| 五原县| 麻城市| 融水| 东安县| 武山县| 广水市| 久治县| 涞水县| 阳谷县| 桃园县| 额济纳旗| 亳州市| 西乌|