新聞中心

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

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

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

上一頁 1 2 下一頁

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

評論


相關(guān)推薦

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

關(guān)閉