單片機開發商深圳英銳恩分享摩托車報警器源程序。
ORG 0000H
AJMP MAIN
RG 0050H
MAIN: MOV P1,#0FFH
ACALL DD3
LOOP: JNB P3.0,LOOP;判斷VT是否有信號
ACALL DL;延時防抖動
JB P3.0,START;有信號則啟動
AJMP LOOP;無則返回
START:JNB P3.1,XD1;判斷D1信號
ACALL DL
JB P3.1,FDSD;有則進入防盜設定
XD1: JNB P3.2,XD2;判斷D2信號
ACALL DL
JB P3.2,CBA1;有則進入解除防盜
XD2: JNB P3.3,XD3;判斷D3信號
ACALL DL
JB P3.3,CBA2;有則進入啟動暖車
XD3: JNB P3.4,XD4;判斷D4信號
ACALL DL
JB P3.4,CBA3;有則進入尋車求救
XD4: AJMP LOOP;無D1-D4的信號則返回
CBA1: AJMP JCFD
CBA2: AJMP QDNC
CBA3: AJMP XCQJ
FDSD: MOV R4,#0FH;二級設定鍵廷時用
ACALL BJ;一級防盜設定程序,先報警
CLR P1.1;熄火程序
SETB P1.2
ACALL DD2
SETB P1.1
ACALL DD1;延時3秒
FD1: JNB P3.5,FD2;判斷振動信號
ACALL DL
JB P3.5,BZC;有則進入5秒聲光報警程序
FD2: JNB P3.7,FD3;判斷鎖頭正電線是否帶電
ACALL DL
JB P3.7,BZC;有則進入5秒聲光報警程序
FD3: JNB P3.0,FD4;判斷VT是否有信號
ACALL DL
JB P3.2,CBA1
JB P3.3,CBA2
JB P3.4,CBA3
JNB P3.1,CE
ACALL CDSD;調用二級防盜報警
CE: JB P3.0,MAIN;有則返回
FD4: DJNZ R4,DE
AJMP FB1 ;超過時間就轉回到一級設定等待
DE: AJMP FD1
FB1: JNB P3.5,FB2;判斷振動信號
ACALL DL
JB P3.5,BZC;有則進入5秒聲光報警程序
FB2: JNB P3.7,FB3;判斷鎖頭正電線是否帶電
ACALL DL
JB P3.7,BZC;有則進入5秒聲光報警程序
FB3: JNB P3.0,FB4;判斷VT是否有信號
ACALL DL
JB P3.2,CBA1
JB P3.3,CBA2
JB P3.4,CBA3
JB P3.1,FDSD
FB4: AJMP FB1
CDSD: ACALL BBJ;進入二級無聲防盜設定程序
ACALL DD3;延時3秒
BD1: JNB P3.5,BD2;判斷振動信號
ACALL DL
JB P3.5,CBZC;有則進入無聲燈閃三下報警程序
BD2: JNB P3.7,BD3;判斷鎖頭正電線是否帶電
ACALL DL
JB P3.7,CBZC;有則進入無聲燈閃三下報警程序
BD3: JNB P3.0,BD4;判斷VT是否有信號
ACALL DL
JB P3.0,V;有則返回
BD4: AJMP BD1
V: AJMP LOOP
CBZC: ACALL CBJS
BZC: ACALL BJS;調用5秒聲光報警程序
BG: ACALL DD3;延時3秒
ACALL DD2;延時2秒
BR: JNB P3.5,BC1;判斷振動信號
ACALL DL
JB P3.5,JJ;有則進入二級15秒報警
BC1: JNB P3.7,BC2;判斷鎖頭正電線是否帶電
ACALL DL
JB P3.7,JJ;有則進入二級15秒報警
BC2: JNB P3.0,BC3;判斷VT是否有信號
ACALL DL
JB P3.0,FH;有則返回
BC3: AJMP BD1
F: ACALL DD3;延時3秒
ACALL DD2;延時2秒
JNB P3.5,BZC1;判斷振動信號
ACALL DL
JB P3.5,BJJ;有則進入一級15秒報警
BZC1: JNB P3.7,BZC2;判斷鎖頭正電線是否帶電
ACALL DL
JB P3.7,BJJ;有則進入一級15秒報警
BZC2: JNB P3.0,BZC3;判斷VT是否有信號
ACALL DL
JB P3.0,FH;有則返回
BZC3: AJMP FD1
BJJ: ACALL BZJ;調用連續一級15秒聲光報警程序
ACALL DD1
JNB P3.7,BJJ1;判斷鎖頭正電線是否帶電
ACALL DL
JB P3.7,XH;有則進入熄火程序
BJJ1: JNB P3.0,BJJ2;判斷VT是否有信號
ACALL DL
JB P3.0,FH;有則返回
BJJ2: AJMP BJJ
XH: CLR P1.1;熄火程序
SETB P1.2
ACALL DD2
SETB P1.1
AJMP BJJ
FH: AJMP MAIN
JJ: ACALL BZ;調用二級無燈閃15秒報警程序
ACALL DD1
JNB P3.7,JJ1;判斷鎖頭正電線是否帶電
ACALL DL
JB P3.7,XH;有則進入熄火程序
JJ1: JNB P3.0,JJ2;判斷VT是否有信號
ACALL DL
JB P3.0,FH;有則返回
JJ2: AJMP JJ
H: CLR P1.1;熄火程序
SETB P1.2
ACALL DD2
SETB P1.1
AJMP BJJ
CH: AJMP MAIN
JCFD: ACALL BJ;解除防盜程序,聲光2次
ACALL DD1
ACALL BJ
CLR P1.1
SETB P1.2
ACALL DD2
AJMP MAIN
QDNC: MOV R3,#32H ;起動廷時用程序
EF: JB P3.0,EF
E1: MOV R4,#0FFH
E2: MOV R5,#0FH
ACALL DL
HG: JB P3.0,GQ ;檢測VT信號
ACALL DL
DJNZ R5,$
DJNZ R4,E2
DJNZ R3,E1
AJMP LOOP ;廷時時間內無再有信號則返回
GQ: ACALL DL
JB P3.3,EW;再檢測D3信號
AJMP LOOP
EW: CLR P1.2;有測啟動暖車程序
CLR P1.0
ACALL DD2
JB P3.0,$
SETB P1.0
ACALL DD3
AJMP LOOP
XCQJ: MOV R3,#0FH;尋車求救程序(13響)
XCQJ1:ACALL XBJ
ACALL DD1
JNB P3.0,XCQJ2;判斷VT是否有信號
ACALL DL
JB P3.0,XCQJ3;有則返回
XCQJ2:DJNZ R3,XCQJ1
XCQJ3:AJMP LOOP
DL: MOV R6,#0AH;按鍵延時子程序
DJNZ R6,$
RET
DD3: MOV R5,#09H;3秒延時子程序
D3: MOV R6,#0FFH
D4: MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,D4
DJNZ R5,D3
RET
DD2: MOV R5,#06H;2秒延時子程序
D5: MOV R6,#0FFH
D6: MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,D6
DJNZ R5,D5
RET
DD1: MOV R5,#03H;1秒延時子程序
D0: MOV R6,#0FFH
D1: MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,D0
RET
BBJ: CLR P1.3;燈光報警子程序
MOV R6,#0FFH
BB1: MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,BB1
SETB P1.3
RET
XBJ: CLR P1.3;尋車報警子程序
CLR P1.4
MOV R6,#0FFH
XB1: MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,XB1
SETB P1.4
SETB P1.3
RET
BJ: CLR P1.3;報警聲子程序
CLR P1.4
MOV R6,#5FH
B1: MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,B1
SETB P1.4
SETB P1.3
RET
STA: AJMP START
CBJS: AJMP CJCT
BJS: AJMP BJCT
BZ: CLR P1.4
CLR P1.1
MOV R4,#0FH;二級報警程序(15響)
CQ1: ;無燈閃報警
ACALL DD1
JNB P3.0,CB1;判斷VT是否有信號
ACALL DL
JB P3.0,CB2;有則返回
CB1: DJNZ R4,CQ1
CB2: SETB P1.1
SETB P1.4
AJMP BG
BZJ: CLR P1.4
CLR P1.1
MOV R4,#0FH;一級防盜報警程序(15響)
CC1: ACALL BBJ ;聲光報警
ACALL DD1
JNB P3.0,CJ1;判斷VT是否有信號
ACALL DL
JB P3.0,CJ2;有則返回
CJ1: DJNZ R4,CC1
CJ2: SETB P1.1
SETB P1.4
AJMP F
BJCT: CLR P1.4
MOV R4,#05H;一級防盜報警程序(5聲響)
CJ: ACALL BBJ
ACALL DD1
JNB P3.0,CAJ1;判斷VT是否有信號
ACALL DL
JB P3.0,CAJ2;有則返回
CAJ1: DJNZ R4,CJ
CAJ2: SETB P1.1
SETB P1.4
AJMP F
CJCT: MOV R4,#03H;二級防盜報警程序(3閃燈)
BJ1: ACALL BBJ
ACALL DD1
JNB P3.0,AJ1;判斷VT是否有信號
ACALL DL
JB P3.0,AJ2;有則返回
AJ1: DJNZ R4,BJ1
AJ2: SETB P1.1
AJMP BG
END