PIC单片机汽车防盗器报警声(防盗器)
扫描二维码
随时随地手机看文章
;汽车防盗器报警声
;频率分两个0.1s第一个
;0.1S频率从1.8K-3.5K匀速增加第二个0.1S频率从3.5K-1.8K匀速减少,
;程序复位后,按S2喇叭叫两声,按S3喇叭叫15秒,中途可按S5停止.
;=========================================================
LISTP=16F84A,R=DEC
__CONFIGB11111111110001;_CP_OFF&_WDT_OFF&_PWRITE_ON&_XT_OSC
RTCCEQU01H;定义各寄存器
PCEQU02H
STATUSEQU03H
CEQU0
RP0EQU5
;----------------------
PORTAEQU05H
PORTBEQU06H
TRISAEQU5H
TRISBEQU6H
;-----------------------
SOUNDDELAY1EQU10H;声音频率变化计数器,从1.8~3.55KHz
FRE_COUNTEQU11H;同一频率的重复次数保存地址
FRE_REPEATEQU12H
SOUND_TEMPEQU13H
TEMPEQU14H;暂存寄存器
S_LOOPEQU46;93-47=46
S_MAXEQU93;最低频率1.8K93*3=280US*2
S_MINEQU47;最高频率3.55K47*3=140*2
S_REPEATEQU4;同一频率重复次数
;----------------------RA
KEY1EQU3
KEY2EQU4
;----------------------RB
KEY3EQU0
KEY4EQU1
;--------------------
ORG0000H
MAIN
CLRFPORTA
CLRFPORTB;初始化IO口
BSFSTATUS,RP0
MOV LW0011000B
MOV WFTRISA
MOV LW00000011B
MOV WFTRISB
BCFSTATUS,RP0
LOOP
BTFSSPORTA,KEY1;扫描按键
GOTOSET_1
BTFSSPORTA,KEY2
GOTOSET_2
GOTOLOOP
;--------------------------------------------
SET_1
BTFSCPORTA,KEY1;去抖动
GOTOLOOP
CALLSOUNDDELAY
BTFSCPORTA,KEY1;按S2叫两声
GOTOLOOP
CALLSOUND200MS
CALLSOUND200MS
GOTOLOOP
;--------------------------------------------
SET_2
BTFSCPORTA,KEY2;去抖动
GOTOLOOP
CALLSOUNDDELAY
BTFSCPORTA,KEY2;按S3叫15秒
GOTOLOOP
CALLSOUND15S
GOTOLOOP
;------------------------------------------
SOUND200MS
MOV LWS_LOOP
MOV WFFRE_COUNT;46=93-47
SOUND_LH_LP
MOV LWS_REPEAT;同一频率重复次数送FRE_REPEAT
MOV WFFRE_REPEAT
MOV FWFRE_COUNT
ADDLWS_MIN;计数值加最小值
MOV WFTEMP
REPEAT0_LP
MOV FWTEMP
BSFPORTA,0
CALLSOUNDDELAY0;廷时W*3US
BCFPORTA,0
MOV FWTEMP
CALLSOUNDDELAY0
DECFSZFRE_REPEAT,1;每四次减频率计数一次
GOTOREPEAT0_LP
DECFSZFRE_COUNT,1
GOTOSOUND_LH_LP
SOUND_HL
MOV LWS_LOOP
MOV WFFRE_COUNT;46=93-47
SOUND_HL_LP
MOV LWS_REPEAT;同一频率重复次数送FRE_REPEAT
MOV WFFRE_REPEAT
MOV FWFRE_COUNT
SUBLWS_MAX;最大值减计数值
MOV WFTEMP
REPEAT1_LP
MOV FWTEMP
BSFPORTA,0
CALLSOUNDDELAY0;廷时W*3US
BCFPORTA,0
MOV FWTEMP
CALLSOUNDDELAY0
DECFSZFRE_REPEAT,1;四次减频率计数一次
GOTOREPEAT1_LP
DECFSZFRE_COUNT,1
GOTOSOUND_HL_LP
SOUND_END
RETLW0
;------------------------------
SOUNDDELAY:;廷时255*3US+2US
MOV LW255
SOUNDDELAY0
MOV WFSOUNDDELAY1;廷时W*3US+1US
SOUNDDELAYUS_1
DECFSZSOUNDDELAY1,1
GOTOSOUNDDELAYUS_1
RETLW0
;---------------------
SOUND15S;报警15秒
MOV LW73
MOV WFSOUND_TEMP
SOUND1S_LP
CALLSOUND200MS;
BTFSSPORTB,KEY4;按S5退出
RETLW0
DECFSZSOUND_TEMP,1
GOTOSOUND1S_LP
RETLW0
;------------------------
END