导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→分汽车防盗报警器声音程序

* 101428: 分汽车防盗报警器声音程序

   mcubase 
mcubase发表的帖子 

 分汽车防盗报警器声音程序
;*****************************************************
  LIST P=16F84A,R=DEC         ;定义器件,默认为十进制
;-----------------------------------------------------
  __CONFIG B'11111111110001';_CP_OFF&_WDT_OFF&_PWRITE_ON&_XT_OSC 
                                              ;没有代码保护
                                              ;看门狗关闭
                                              ;上电廷时器开启
                                              ;振荡器模式为XT
;-----------------------------------------------------
RTCC EQU 01H                ;定义各寄存器
PC EQU 02H
STATUS EQU 03H
C EQU 0
RP0 EQU 5
;----------------------
PORTA EQU 05H
PORTB EQU 06H

TRISA EQU 5H
TRISB EQU 6H
;-----------------------
SOUNDDELAY1 EQU 10H    ;声音频率变化计数器,从1.8~3.55KHZ
FRE_COUNT EQU 11H      ;同一频率的重复次数保存地址
FRE_REPEAT EQU 12H     
SOUND_TEMP EQU 13H
TEMP EQU 14H           ;暂存寄存器
S_LOOP EQU 46          ;93-47=46
S_MAX EQU 93           ;最低频率1.8K  93*3=280US*2
S_MIN EQU 47           ;最高频率3.55K  47*3=140*2
S_REPEAT EQU 4         ;同一频率重复次数
;----------------------RA
KEY1 EQU 3
KEY2 EQU 4
;----------------------RB
KEY3 EQU 0
KEY4 EQU 1
;--------------------
    ORG 0000H
MAIN
    CLRF PORTA
    CLRF PORTB          ;初始化IO口

    BSF STATUS,RP0     ;设置数据寄存器体1
    MOVLW 0011000B
    MOVWF TRISA        ;设置各开关端口为输入其它为输出
    MOVLW 00000011B
    MOVWF TRISB 
    BCF STATUS,RP0     ;恢复数据寄存器体0
LOOP
    BTFSS PORTA,KEY1   ;扫描按键
    GOTO SET_1
    BTFSS PORTA,KEY2
    GOTO SET_2
    GOTO LOOP
;--------------------------------------------
SET_1
    BTFSC PORTA,KEY1    ;去抖动
    GOTO LOOP
    CALL SOUNDDELAY
    BTFSC PORTA,KEY1    ;按S2叫两声
    GOTO LOOP
    CALL SOUND200MS
    CALL SOUND200MS
    GOTO LOOP
;--------------------------------------------
SET_2
    BTFSC PORTA,KEY2    ;去抖动
    GOTO LOOP
    CALL SOUNDDELAY
    BTFSC PORTA,KEY2    ;按S3叫15秒
    GOTO LOOP
    CALL SOUND15S
    GOTO LOOP 
;- - ----------------------------------------
SOUND200MS
    MOVLW S_LOOP
    MOVWF FRE_COUNT     ;46=93-47
SOUND_LH_LP
    MOVLW S_REPEAT      ;同一频率重复次数送FRE_REPEAT
    MOVWF FRE_REPEAT
    MOVFW FRE_COUNT
    ADDLW S_MIN        ;计数值加最小值
    MOVWF TEMP
REPEAT0_LP
    MOVFW TEMP
    BSF PORTA,0       
    CALL SOUNDDELAY0   ;廷时W*3US
    BCF PORTA,0
    MOVFW TEMP
    CALL SOUNDDELAY0
    DECFSZ FRE_REPEAT,1 ;每四次减频率计数一次
    GOTO REPEAT0_LP
    DECFSZ FRE_COUNT,1
    GOTO SOUND_LH_LP
SOUND_HL
    MOVLW S_LOOP
    MOVWF FRE_COUNT   ;46=93-47
SOUND_HL_LP
    MOVLW S_REPEAT    ;同一频率重复次数送FRE_REPEAT
    MOVWF FRE_REPEAT
    MOVFW FRE_COUNT
    SUBLW S_MAX       ;最大值减计数值
    MOVWF TEMP
REPEAT1_LP
    MOVFW TEMP
    BSF PORTA,0
    CALL SOUNDDELAY0    ;廷时W*3US
    BCF PORTA,0
    MOVFW TEMP
    CALL SOUNDDELAY0
    DECFSZ FRE_REPEAT,1;四次减频率计数一次
    GOTO REPEAT1_LP
    DECFSZ FRE_COUNT,1
    GOTO SOUND_HL_LP
SOUND_END
    RETLW 0
;------------------------------
SOUNDDELAY:        ;廷时255*3US+2US
    MOVLW 255
SOUNDDELAY0
    MOVWF SOUNDDELAY1     ;廷时W*3US+1US
SOUNDDELAYUS_1
    DECFSZ SOUNDDELAY1,1
    GOTO SOUNDDELAYUS_1
    RETLW 0
;---------------------
SOUND15S                    ;报警15秒
    MOVLW 73
    MOVWF SOUND_TEMP
SOUND1S_LP
    CALL SOUND200MS
    BTFSS PORTB,KEY4       ;按S5退出
    RETLW 0
    DECFSZ SOUND_TEMP,1
    GOTO SOUND1S_LP
    RETLW 0
;------------------------
    END
 

如想了解更多单片机資料,介绍个单片机网站给大家 单片机基地


发表时间:2007年1月4日20:00:07

  
回复该帖

本主题共有 2 帖,分页:>>>>>该主题的所有内容[2]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  101472.[详细]支持下
摘要:各位,顶下给点鼔励,后续再上传些好资料与大家分享!!!......(54字)
- [mcubase][845次] 2007年1月5日

[上一篇帖子]:关于电路仿真的问题用PROTEL dxp 仿真电路。总是提示:某某pin&nbs
[下一篇帖子]:招聘兼职 XSCALE (广州、深圳)招聘熟悉 XSCALE平台的工程