新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機的315M接收頭接收匯編程序(從機)

        51單片機的315M接收頭接收匯編程序(從機)

        作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
        ;防盜器子機程序
        FSDY EQU P1.7 ;發(fā)射電源端,高電平為輸出
        FSKZ EQUP1.6 ;發(fā)射控制端,低電平有效
        FSDD EQU P1.5 ;發(fā)射控制D端,高電平控制有效
        FSCC EQU P1.4 ;發(fā)射控制C端,高電平控制有效
        FSBB EQU P1.3 ;發(fā)射控制B端,高電平控制有效
        CGDY EQU P1.2 ;傳感器電源端,高電平為輸出
        SPK1 EQU P1.1 ;報警喇叭,高電平為輸出,暫時不用
        DYAD EQU P1.0 ;電源AD輸入端
        CGQ1 EQU P3.0 ;振動傳感器
        CGQ2 EQU P3.1 ;微波傳感器
        JSVT EQU P3.2 ;接收頭VT端
        JSDD EQU P3.3 ;接收頭D輸出端,有效高電平輸出
        JSCC EQU P3.4 ;接收頭C輸出端,有效高電平輸出
        JSBB EQU P3.5 ;接收頭B輸出端,有效高電平輸出
        LED1 EQU P3.7 ;指示燈
        P1MO EQU 91H
        P1M1 EQU 92H
        P1MA EQU 00000001B
        P1MB EQU 10111110B
        JSBM EQU 00111100B;設(shè)置接收端口狀態(tài),屏蔽P3.7、P3.6、P3.1、P3.0
        KJBM EQU 00100000B;設(shè)定開機編碼為011(即接收頭B為0、C為1、D為1)
        ZDBM EQU 00110000B;設(shè)定振動探測報警編碼為110
        WBBM EQU 00101000B;設(shè)定微波探測報警編碼為101
        DYBM EQU 00010000B;設(shè)定子機電源低壓報警編碼為010,也是接收尋車
        GJBM EQU 00001000B;設(shè)定2分鐘聯(lián)絡(luò)子機一次編號為001,也是接收啟動
        DYBJ EQU 80H ;設(shè)定電源低電壓(9V以下)報警值
        ;┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
        ;A/D轉(zhuǎn)換程序。
        ADC_CONTR EQU 0C5H ;A/D轉(zhuǎn)換寄存器
        ADC_DATA EQU 0C6H ;A/D轉(zhuǎn)換結(jié)果寄存器,
        ;為10位A/D轉(zhuǎn)換結(jié)果的高8位
        ;ADC_LOW2 EQU 0BEH ;A/D轉(zhuǎn)換結(jié)果寄存器,低2位有效,
        ;為10位A/D轉(zhuǎn)換結(jié)果的低2位
        ;如果不用ADC_L0W2的低2位,
        ;只用ADC_DATA的8位,則為8位A/D轉(zhuǎn)換
        ADC_Powerl0 EQU 11100000B;P1.0作為A/D輸入
        ;定義變量
        ADC_Chl0 EQU 32H ;0通道A/D轉(zhuǎn)換結(jié)果
        ;┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
        ORG 0000H ;程序執(zhí)行開始地址
        LJMP KS ;跳至KS
        ORG 0003H ;外中斷0中斷程序入口
        LJMP INT00 ;中斷返回
        ORG 000BH ;定時器T0中斷程序入口
        LJMP INTT0 ;跳至INTT0中斷服務(wù)程序
        ORG 0013H ;外中斷1中斷入口
        RETI ;中斷返回
        ORG 001BH ;定時器T1中斷程序入口
        RETI ;中斷返回
        ORG 0023H ;串口中斷入口地址
        RETI
        ORG 100H
        ;開機初始化
        KS: ACALL CLEAR1 ;設(shè)定初值
        MOV PSW,#00H ;設(shè)程序狀態(tài)字寄存器為00
        MOV SCON,#00H ;設(shè)串行口控制寄存器為00
        CLR LED1 ;指示燈提示通電
        ACALL YS2 ;延時
        SETB LED1 ;關(guān)指示燈
        ;----------------------------------------------------------------
        ;開機檢測
        ACALL ADAD
        SUBB A,#DYBJ ;與預(yù)定值比較
        ACALL CLEAR1 ;重新設(shè)定初值
        JNC KS2 ;電壓低報警,正常才能開防盜器
        MOV A,#20 ;低壓則連續(xù)報警20次
        KS1: ACALL DYFS ;電壓低發(fā)射010報警信號
        CLR LED1 ;紅燈亮
        ACALL YS2 ;延時
        SETB LED1 ;紅燈滅
        ACALL YS2 ;延時
        DEC A
        JNZ KS1
        CLR LED1 ;紅燈閃20次后常亮
        ORL PCON,#2 ;進(jìn)入掉電模式,只有復(fù)位才能啟動
        NOP
        NOP
        NOP
        AJMP KS ;軟件陷阱
        ;--------------------------------------------------
        ;電源電壓檢測(AD轉(zhuǎn)換)后進(jìn)入待機狀態(tài)
        ;--------------------------------------------------
        KS2: CLR IT0 ;外部中斷低電平觸發(fā)
        SETB EA ;開總中斷允許
        SETB EX0 ;開外部中斷0
        KS3: ORL PCON,#01H ;進(jìn)入待機,只有外中斷或復(fù)位才能啟動
        NOP ;退出中斷后設(shè)置軟件陷阱
        NOP
        NOP
        CJNE A,#KJBM,KS2 ;必須是開機信號,信號不對返回繼續(xù)進(jìn)入待機
        ;--------------------------------------------------
        ;開始進(jìn)入防盜狀態(tài)
        ;--------------------------------------------------
        KS0: SETB CGDY ;打開振動和微波探測頭電源
        CLR A ;A清零
        CLR LED1 ;進(jìn)入報警監(jiān)測狀態(tài),指示燈亮
        SETB SPK1 ;報警器響一下,進(jìn)入防盜狀態(tài)
        ACALL YS3 ;延時
        CLR SPK1 ;關(guān)報警器
        ACALL KJFS ;發(fā)射011回應(yīng)主機,表示收到并進(jìn)入防盜狀態(tài)
        SETB LED1 ;指示燈滅
        ACALL YS2
        ;--------------------------------------------------
        ;
        ;--------------------------------------------------
        MOV TMOD,#00010001B;設(shè)定時器T1為計數(shù)器方式(方式1)
        MOV TH0,#3CH ;設(shè)T1為100mS
        MOV TL0,#0B0H
        SETB ET0 ;允許定時器T1中斷
        SETB TR0 ;啟動計數(shù)器T1
        MOV 30H,#00H ;100ms時間計數(shù)器清零
        MOV R0,#00H ;10s時間到標(biāo)志位清零
        MOV 34H,#00H
        MOV 33H,#0FH
        MOV 35H,#00H
        MOV R1,#0FH
        ;--------------------------------------------------
        ;正式進(jìn)入防盜狀態(tài)
        ;--------------------------------------------------
        KS4: JNB CGQ1,KS5 ;檢測振動傳感器是否輸出(有盜情)
        ACALL YS1
        JNB CGQ1,KS5
        CLR TR0 ;關(guān)定時中斷
        INC 35H
        MOV A,35H
        CJNE A,#10,S2
        DEC 35H
        SETB SPK1 ;報警器響一下
        ACALL YS2 ;延時
        CLR SPK1 ;關(guān)報警器
        SJMP KS5
        S2: ACALL ZDFS ;檢測到振動傳感器有輸出,發(fā)射110報警信號
        ACALL YS2 ;延時
        SETB TR0 ;開定時中斷允許
        KS5: JB CGQ2,KS6 ;檢測微波傳感器是否輸出(有盜情)
        ;ACALL YS1
        ;JB CGQ2,KS6
        CLR TR0 ;關(guān)定時中斷
        DJNZ R1,S1
        INC R1
        SETB SPK1 ;報警器響一下,進(jìn)入防盜狀態(tài)
        ACALL YS2 ;延時
        CLR SPK1 ;關(guān)報警器
        SJMP KS6
        S1: ACALL WBFS ;檢測到微波傳感器有輸出,發(fā)射101報警信號
        ACALL YS2 ;延時
        SETB TR0 ;開定時中斷允許
        KS6: CJNE R0,#01H,KS7 ;10S檢測一次電源電壓
        CLR TR0 ;關(guān)定時中斷
        ACALL ADAD ;調(diào)用電源電壓檢測程序
        ACALL CLEAR2 ;重新設(shè)定初值
        SUBB A,#DYBJ ;與預(yù)定值比較
        CLR A ;A清零
        MOV R0,#00H ;10s時間到標(biāo)志位清零
        SETB TR0 ;開定時中斷允許
        JNC KS7 ;電壓低報警
        CLR TR0 ;關(guān)定時中斷
        ACALL DYFS ;電壓低發(fā)射010報警信號
        SETB TR0 ;開定時中斷允許
        DJNZ 33H,KS7
        CLR LED1
        CLR TR0 ;關(guān)定時中斷
        AJMP KS2
        KS7: MOV A,P3 ;收到子機的反饋信號則判斷是否正確
        ANL A,#JSBM ;屏蔽P3.7、P3.6、P3.1、P3.0
        CJNE A,#GJBM,KS8 ;檢測是否收到主機的關(guān)機信號
        CLR ET0 ;無信號則關(guān)定時器T1中斷
        CLR CGDY ;關(guān)傳感器電源
        CLR LED1 ;進(jìn)入報警監(jiān)測狀態(tài),指示燈亮
        SETB SPK1 ;報警器響一下,進(jìn)入防盜狀態(tài)
        ACALL YS2 ;延時
        CLR SPK1 ;關(guān)報警器
        ACALL YS3 ;延時
        SETB SPK1 ;報警器響一下,進(jìn)入防盜狀態(tài)
        ACALL YS3 ;延時
        CLR SPK1 ;關(guān)報警器
        ACALL GJFS ;調(diào)用關(guān)機發(fā)射程序
        SETB LED1 ;進(jìn)入報警監(jiān)測狀態(tài),指示燈亮
        JNB JSVT,$ ;等待主機停止發(fā)射
        AJMP KS2 ;返回進(jìn)入待機狀態(tài)
        KS8: CJNE A,#KJBM,S3
        JNB JSVT,$ ;等待主機停止發(fā)射
        AJMP KS0 ;返回進(jìn)入待機狀態(tài)
        S3: CJNE A,#DYBM,S4
        SETB SPK1 ;報警器響一下,進(jìn)入防盜狀態(tài)
        ACALL YS3 ;延時
        CLR SPK1 ;關(guān)報警器
        MOV R1,#01H
        S4: AJMP KS4
        ;****************************************************************
        ;----------------------------------------------------------------
        ;以下為子程序
        ;----------------------------------------------------------------
        ;----------------------------------------------------------------
        ;以下為開機發(fā)射程序
        ;----------------------------------------------------------------
        ;主機開機子機發(fā)射編碼011給主機以聯(lián)通
        KJFS: CLR LED1 ;指示燈亮
        CLR FSBB ;B端為0
        SETB FSCC ;C端為1
        SETB FSDD ;D端為1
        CLR FSKZ ;允許發(fā)射
        ACALL TZFS ;調(diào)用停止發(fā)射程序
        RET ;返回
        ;----------------------------------------------------------------
        ;以下為振動輸出(有盜情)的發(fā)射程序
        ;----------------------------------------------------------------
        ;振動輸出(有盜情)發(fā)射編碼110給主機進(jìn)行報警
        ZDFS: CLR LED1 ;指示燈亮
        SETB FSBB ;B端為1
        SETB FSCC ;C端為1
        CLR FSDD ;D端為0
        CLR FSKZ ;允許發(fā)射
        ACALL TZFS ;調(diào)用停止發(fā)射程序
        RET ;返回

        上一頁 1 2 下一頁

        關(guān)鍵詞: 51單片機315M匯編程

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 抚松县| 安多县| 广宗县| 安仁县| 额济纳旗| 象州县| 同江市| 新安县| 建水县| 昂仁县| 贵德县| 葵青区| 汉中市| 盐池县| 华亭县| 潼南县| 凌云县| 枞阳县| 丰镇市| 尼木县| 简阳市| 丽水市| 时尚| 玛纳斯县| 肃北| 宜良县| 临沂市| 铁岭县| 中宁县| 西乌珠穆沁旗| 敦煌市| 柘荣县| 沐川县| 明水县| 黔西县| 绥中县| 长春市| 永吉县| 东山县| 来凤县| 高安市|