新聞中心

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

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

        作者: 時間:2016-11-28 來源:網絡 收藏
        ;----------------------------------------------------------------
        ;以下為微波輸出(有盜情)的發射程序
        ;----------------------------------------------------------------
        ;微波輸出(有盜情)發射編碼101給主機進行報警
        WBFS: CLR LED1 ;指示燈亮
        SETB FSBB ;B端為1
        CLR FSCC ;C端為0
        SETB FSDD ;D端為1
        CLR FSKZ ;允許發射
        ACALL TZFS ;調用停止發射程序
        RET ;返回
        ;----------------------------------------------------------------
        ;以下為聯絡主機的發射程序
        ;----------------------------------------------------------------
        ;聯絡主機發射編碼001給主機
        GJFS: CLR LED1 ;指示燈亮
        CLR FSBB ;B端為0
        CLR FSCC ;C端為0
        SETB FSDD ;D端為1
        CLR FSKZ ;允許發射
        ACALL TZFS ;調用停止發射程序
        RET ;返回
        ;----------------------------------------------------------------
        ;以下為電源低壓的發射程序
        ;----------------------------------------------------------------
        ;子機電源低壓發射編碼010給主機進行報警
        DYFS: CLR LED1 ;指示燈亮
        CLR FSBB ;B端為0
        SETB FSCC ;C端為1
        CLR FSDD ;D端為0
        CLR FSKZ ;允許發射
        ACALL TZFS ;調用停止發射程序
        RET ;返回
        ;----------------------------------------------------------------
        ;以下為停止發射程序
        ;----------------------------------------------------------------
        TZFS: ACALL YS2 ;延時
        ACALL YS2 ;延時
        SETB FSKZ ;停止發射
        CLR FSBB ;B端為0
        CLR FSCC ;C端為0
        CLR FSDD ;D端為0
        SETB LED1 ;指示燈滅
        RET ;返回
        ;----------------------------------------------------------------
        ;以下為初始化程序
        ;----------------------------------------------------------------
        CLEAR1:MOV P1MO,#P1MA ;P1端口狀態
        MOV P1M1,#P1MB
        MOV SP,#50H ;設推棧初值
        SETB FSDY ;關閉發射編碼IC電源
        SETB FSKZ
        CLR FSDD ;發射電路不發射(D端為0)
        CLR FSCC ;發射電路不發射(C端為0)
        CLR FSBB ;發射電路不發射(B端為0)
        CLR CGDY ;關傳感器電源
        CLR SPK1 ;關報警喇叭
        RET
        ;----------------------------------------------------------------
        ;以下為進入防盜后AD轉換后初始化程序
        ;----------------------------------------------------------------
        CLEAR2:MOV P1MO,#P1MA ;P1端口狀態
        MOV P1M1,#P1MB
        ;MOV SP,#50H ;設推棧初值
        SETB FSDY ;關閉發射編碼IC電源
        SETB FSKZ
        CLR FSDD ;發射電路不發射(D端為0)
        CLR FSCC ;發射電路不發射(C端為0)
        CLR FSBB ;發射電路不發射(B端為0)
        SETB CGDY ;開傳感器電源
        CLR SPK1 ;關報警喇叭
        RET
        ;----------------------------------------------------------------
        ;以下為外中斷(接收頭收到信號)處理程序
        ;----------------------------------------------------------------
        INT00:CLR EX0 ;關外中斷
        MOV A,P3 ;收到子機的反饋信號則判斷是否正確
        ANL A,#JSBM ;屏蔽P3.7、P3.6、P3.1、P3.0
        MOV 34H,A
        JNB JSVT,$ ;等待主機停止發射
        ;SETB EA ;開總中斷允許
        RETI
        ;----------------------------------------------------------------
        ;以下為處理程序
        ;----------------------------------------------------------------
        ;中斷處理程序
        INTT0:CLR EA ;關總中斷
        PUSH ACC ;進棧保護ACC數據
        PUSH PSW ;進棧保護PSW數據
        MOV TH0,#3CH ;設T1為100mS
        MOV TL0,#0B0H
        INC 30H ;ms時間計數器
        MOV A,30H
        CJNE A,#100,LOP2 ;計時計數器,10s進位1次
        MOV 30H,#00H ;ms時間計數器清零,重新開始計時
        MOV R0,#01H ;10s到標志
        LOP2: POP PSW ;PSW出棧
        POP ACC ;ACC出棧
        SETB EA ;開總中斷
        RETI ;中斷返回
        ;----------------------------------------------------------------
        ;以下為AD轉換程序,監測電源電源
        ;----------------------------------------------------------------
        ;AD轉換
        ADAD:ACALL ADC_Power_On ;開ADC電源,第一次使用時要打開內部模擬電源
        ;開ADC電源,可適當加延時,1mS以內就足夠了
        ACALL Set_ADC_Channel_0 ;設置P1.0作為A/D轉換通道
        ACALL Get_AD_Result ;測量電壓并且取A/D轉換結果
        MOV A, ADC_Chl0 ;A/D轉換結果
        RET
        ;┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
        ADC_Power_On:
        PUSH ACC
        ORL ADC_CONTR,#80H ;開A/D轉換電源
        MOV A, #20H
        ACALL Delay ;開A/D轉換電源后要加延時,ImS以內就足夠了
        POP ACC
        RET
        ;┈┈┈┈┈┈┈┈┈┈┈
        Set_ADC_Channel_0:
        MOV ADC_CONTR,#ADC_Powerl0
        ;選擇P1.0作為A/D轉換通道
        MOV A,#05H ;更換A/D轉換通道后要適當延時,使輸入電壓穩定
        ;以后如果不更換A/D轉換通道的話,不需要加延時
        ACALL Delay ;切換A/D轉換通道,加延時20uS~200uS就可以了,
        ;也輸入電壓源的內阻有關
        ;如果輸入電壓信號源的內阻在10K以下,可不加延時
        RET
        ;┈┈┈┈┈┈┈┈┈┈┈
        Get_AD_Result:
        PUSH ACC ;入棧保護
        MOV ADC_DATA,#0
        ORL ADC_CONTR,#00001000B ;啟動 AD 轉換
        Wait_AD_Finishe:
        MOV A,#00010000B ;判斷 AD 轉換是否完成
        ANL A,ADC_CONTR
        JZ Wait_AD_Finishe ;AD 轉換尚未完成,繼續等待
        ANL ADC_CONTR,#11100111B ;清0 ADC_FLAG,ADC_START位,停止A/D轉換
        MOV A,ADC_DATA
        MOV ADC_Chl0,A ;保存 AD 轉換結果
        POP ACC
        RET
        ;┈┈┈┈┈┈┈┈┈┈┈
        Delay:
        PUSH 02 ;將寄存器組0的R2入棧
        PUSH 03 ;將寄存器組0的R3入棧
        PUSH 04 ;將寄存器組0的R4入棧
        MOV R4,A
        Delay_Loop0:
        MOV R3,#200 ;2 CL0CK┈┈┈┈┈┈┈┈+
        Delay_Loop1: ;
        MOV R2,#249 ;2 CL0CK┈+
        Delay_Loop: ; │1002 CLOCK│200406 CLOCK
        DJNZ R2, Delay_LooP ;4 CL0CK
        DJNZ R3, Delay_LooP1 ;4 CL0CK ┈+
        DJNZ R4, Delay_LooP0 ;4 CL0CK┈┈┈┈┈┈┈┈+
        POP 04
        POP 03
        POP 02
        RET
        ;----------------------------------------------------------------
        ;----------------------------------------------------------------
        ;以下為延時子程序
        ;----------------------------------------------------------------
        ;延時子程序
        YS1: MOV R6,#100
        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,#05H ;長長時間延時
        Y30: MOV R6,#0FFH
        Y31: MOV R7,#0FFH
        Y32: NOP
        NOP
        NOP
        DJNZ R7,Y32
        DJNZ R6,Y31
        DJNZ R5,Y30
        RET
        ORG 0400H
        NOP ;設置軟件陷阱
        NOP
        NOP
        LJMP KS
        END
        ;*****************************************************************

        上一頁 1 2 下一頁

        關鍵詞: 51單片機315M匯編程

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 长春市| 彭山县| 榕江县| 濮阳市| 浮山县| 洞口县| 漳浦县| 绍兴县| 海伦市| 蕲春县| 甘孜| 商丘市| 壶关县| 什邡市| 高陵县| 卢湾区| 邹平县| 益阳市| 璧山县| 济南市| 马鞍山市| 项城市| 柳河县| 西青区| 长寿区| 宜昌市| 体育| 兴安县| 天镇县| 哈密市| 济阳县| 马龙县| 无棣县| 洱源县| 丹阳市| 洪湖市| 澄迈县| 屏山县| 且末县| 乌什县| 合作市|