久久丫精品无码视频|亚洲成人黄色电影|超碰国产在线观看|亚洲Aⅴ综合免费在线|久久青青草原国产精品|极品美女三级片国产无码a|女人的黄色片子综合AV|日韩成人?毛片

技術(shù)熱線: 4007-888-234
設(shè)計(jì)開(kāi)發(fā)

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開(kāi)發(fā)工具

提供開(kāi)發(fā)工具、應(yīng)用測(cè)試 完善的開(kāi)發(fā)代碼案例庫(kù)分享

技術(shù)支持

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力

新聞中心

提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)

PIC16F84A的警笛聲音源程序

更新時(shí)間: 2019-03-25
閱讀量:1363

深圳市英銳恩科技有限公司:臺(tái)灣麥肯單片機(jī)(Micon MDT單片機(jī))亞太地區(qū)A級(jí)代理商

PIC16F84A的警笛聲音源程序
;本實(shí)例的目的是讓大家學(xué)會(huì)用單片機(jī)產(chǎn)生聲音的方法,學(xué)會(huì)計(jì)算程序所用時(shí)間
;本實(shí)例的功能是能PIC16F84產(chǎn)生報(bào)警音,頻率分兩個(gè)0.1s第一個(gè)
;0.1S頻率從1.8K-3.5K勻速增加第二個(gè)0.1S頻率從3.5K-1.8K勻速減少,
;程序復(fù)位后,蜂鳴器開(kāi)始報(bào)警
;燒寫時(shí)應(yīng)注意:配置位已經(jīng)在程序中寫明,加載HEX文件時(shí)會(huì)自動(dòng)加載,燒寫時(shí)不用再手動(dòng)設(shè)置配置位。
;實(shí)驗(yàn)時(shí)請(qǐng)注意套件跳線選擇;
;*****************************************************
  LIST P=16F84A,R=DEC         ;定義器件,默認(rèn)為十進(jìn)制
;-----------------------------------------------------
  __CONFIG B'11111111110001';_CP_OFF&_WDT_OFF&_PWRITE_ON&_XT_OSC
                                              ;沒(méi)有代碼保護(hù)
                                              ;看門狗關(guān)閉
                                              ;上電廷時(shí)器開(kāi)啟
                                              ;振蕩器模式為XT
;-----------------------------------------------------
RTCC EQU 01H                ;定義各寄存器
PC EQU 02H
STATUS EQU 03H
C EQU 0
RP0 EQU 5
;----------------------
PORTA EQU 05H

TRISA EQU 05H
;-----------------------
SOUNDDELAY1 EQU 10H    ;聲音頻率變化計(jì)數(shù)器,從1.8~3.55KHZ
FRE_COUNT EQU 11H      ;同一頻率的重復(fù)次數(shù)保存地址
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         ;同一頻率重復(fù)次數(shù)
;--------------------
    ORG 0000H
MAIN
    CLRF PORTA         ;初始化IO口

    BSF STATUS,RP0     ;設(shè)置數(shù)據(jù)寄存器體1
    MOVLW 0000000B
    MOVWF TRISA        ;設(shè)置RA端口全部為輸出
    BCF STATUS,RP0     ;恢復(fù)數(shù)據(jù)寄存器體0
LOOP
    CALL SOUND200MS    ;調(diào)用報(bào)警200MS子程序
    GOTO LOOP         ;反復(fù)循環(huán)報(bào)警
;-------------------------------
SOUND200MS
    MOVLW S_LOOP
    MOVWF FRE_COUNT     ;46=93-47 最低頻率的計(jì)數(shù)減去最高頻率的計(jì)數(shù)等于頻率變化的次數(shù)
SOUND_LH_LP
    MOVLW S_REPEAT      ;同一頻率重復(fù)次數(shù)送FRE_REPEAT
    MOVWF FRE_REPEAT
    MOVFW FRE_COUNT
    ADDLW S_MIN        ;計(jì)數(shù)值加最小值
    MOVWF TEMP
REPEAT0_LP
    MOVFW TEMP
    BSF PORTA,0     
    CALL SOUNDDELAY0   ;廷時(shí)W*3US
    BCF PORTA,0
    MOVFW TEMP
    CALL SOUNDDELAY0
    DECFSZ FRE_REPEAT,1 ;每四次減頻率計(jì)數(shù)一次
    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    ;同一頻率重復(fù)次數(shù)送FRE_REPEAT
    MOVWF FRE_REPEAT
    MOVFW FRE_COUNT
    SUBLW S_MAX       ;最大值減計(jì)數(shù)值
    MOVWF TEMP
REPEAT1_LP
    MOVFW TEMP
    BSF PORTA,0
    CALL SOUNDDELAY0    ;廷時(shí)W*3US
    BCF PORTA,0
    MOVFW TEMP
    CALL SOUNDDELAY0
    DECFSZ FRE_REPEAT,1;四次減頻率計(jì)數(shù)一次
    GOTO REPEAT1_LP
    DECFSZ FRE_COUNT,1
    GOTO SOUND_HL_LP
SOUND_END
    RETLW 0
;------------------------------
SOUNDDELAY0
    MOVWF SOUNDDELAY1     ;廷時(shí)W*3US+1US
SOUNDDELAYUS_1
    DECFSZ SOUNDDELAY1,1
    GOTO SOUNDDELAYUS_1
    RETLW 0
;------------------------
    END