新聞中心

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

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

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏
;----------------------------------------------------------------
;以下為微波輸出(有盜情)的發(fā)射程序
;----------------------------------------------------------------
;微波輸出(有盜情)發(fā)射編碼101給主機(jī)進(jìn)行報(bào)警
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)行報(bào)警
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 ;延時(shí)
ACALL YS2 ;延時(shí)
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)報(bào)警喇叭
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 ;開(kāi)傳感器電源
CLR SPK1 ;關(guān)報(bào)警喇叭
RET
;----------------------------------------------------------------
;以下為外中斷(接收頭收到信號(hào))處理程序
;----------------------------------------------------------------
INT00:CLR EX0 ;關(guān)外中斷
MOV A,P3 ;收到子機(jī)的反饋信號(hào)則判斷是否正確
ANL A,#JSBM ;屏蔽P3.7、P3.6、P3.1、P3.0
MOV 34H,A
JNB JSVT,$ ;等待主機(jī)停止發(fā)射
;SETB EA ;開(kāi)總中斷允許
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í)間計(jì)數(shù)器
MOV A,30H
CJNE A,#100,LOP2 ;計(jì)時(shí)計(jì)數(shù)器,10s進(jìn)位1次
MOV 30H,#00H ;ms時(shí)間計(jì)數(shù)器清零,重新開(kāi)始計(jì)時(shí)
MOV R0,#01H ;10s到標(biāo)志
LOP2: POP PSW ;PSW出棧
POP ACC ;ACC出棧
SETB EA ;開(kāi)總中斷
RETI ;中斷返回
;----------------------------------------------------------------
;以下為AD轉(zhuǎn)換程序,監(jiān)測(cè)電源電源
;----------------------------------------------------------------
;AD轉(zhuǎn)換
ADAD:ACALL ADC_Power_On ;開(kāi)ADC電源,第一次使用時(shí)要打開(kāi)內(nèi)部模擬電源
;開(kāi)ADC電源,可適當(dāng)加延時(shí),1mS以內(nèi)就足夠了
ACALL Set_ADC_Channel_0 ;設(shè)置P1.0作為A/D轉(zhuǎn)換通道
ACALL Get_AD_Result ;測(cè)量電壓并且取A/D轉(zhuǎn)換結(jié)果
MOV A, ADC_Chl0 ;A/D轉(zhuǎn)換結(jié)果
RET
;┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
ADC_Power_On:
PUSH ACC
ORL ADC_CONTR,#80H ;開(kāi)A/D轉(zhuǎn)換電源
MOV A, #20H
ACALL Delay ;開(kāi)A/D轉(zhuǎn)換電源后要加延時(shí),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)延時(shí),使輸入電壓穩(wěn)定
;以后如果不更換A/D轉(zhuǎn)換通道的話,不需要加延時(shí)
ACALL Delay ;切換A/D轉(zhuǎn)換通道,加延時(shí)20uS~200uS就可以了,
;也輸入電壓源的內(nèi)阻有關(guān)
;如果輸入電壓信號(hào)源的內(nèi)阻在10K以下,可不加延時(shí)
RET
;┈┈┈┈┈┈┈┈┈┈┈
Get_AD_Result:
PUSH ACC ;入棧保護(hù)
MOV ADC_DATA,#0
ORL ADC_CONTR,#00001000B ;啟動(dòng) 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
;----------------------------------------------------------------
;----------------------------------------------------------------
;以下為延時(shí)子程序
;----------------------------------------------------------------
;延時(shí)子程序
YS1: MOV R6,#100
Y11: MOV R7,#0FFH
Y12: NOP
NOP
NOP
DJNZ R7,Y12
DJNZ R6,Y11
RET
YS2: MOV R5,#08H ;中長(zhǎng)時(shí)間延時(shí)
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 ;長(zhǎng)長(zhǎng)時(shí)間延時(shí)
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
;*****************************************************************

上一頁(yè) 1 2 下一頁(yè)

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

評(píng)論


相關(guān)推薦

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

關(guān)閉