人狗畜禽COMPANY LIMITED|全是肉的高H文〈男男〉|全篇肉高H秘书被C办公室四爱|全黄H全肉共妻|全黄H全肉短篇禁乱NP慕浅浅|全黄H全肉短篇N男男

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

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

開發(fā)工具

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

技術(shù)支持

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

新品推廣

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

新聞中心

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

PIC16F84A的警笛聲音源程序

更新時間: 2019-03-25
閱讀量:1184

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

PIC16F84A的警笛聲音源程序
;本實例的目的是讓大家學(xué)會用單片機(jī)產(chǎn)生聲音的方法,學(xué)會計算程序所用時間
;本實例的功能是能PIC16F84產(chǎn)生報警音,頻率分兩個0.1s第一個
;0.1S頻率從1.8K-3.5K勻速增加第二個0.1S頻率從3.5K-1.8K勻速減少,
;程序復(fù)位后,蜂鳴器開始報警
;燒寫時應(yīng)注意:配置位已經(jīng)在程序中寫明,加載HEX文件時會自動加載,燒寫時不用再手動設(shè)置配置位。
;實驗時請注意套件跳線選擇;
;*****************************************************
  LIST P=16F84A,R=DEC         ;定義器件,默認(rèn)為十進(jìn)制
;-----------------------------------------------------
  __CONFIG B'11111111110001';_CP_OFF&_WDT_OFF&_PWRITE_ON&_XT_OSC
                                              ;沒有代碼保護(hù)
                                              ;看門狗關(guān)閉
                                              ;上電廷時器開啟
                                              ;振蕩器模式為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    ;聲音頻率變化計數(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)用報警200MS子程序
    GOTO LOOP         ;反復(fù)循環(huán)報警
;-------------------------------
SOUND200MS
    MOVLW S_LOOP
    MOVWF FRE_COUNT     ;46=93-47 最低頻率的計數(shù)減去最高頻率的計數(shù)等于頻率變化的次數(shù)
SOUND_LH_LP
    MOVLW S_REPEAT      ;同一頻率重復(fù)次數(shù)送FRE_REPEAT
    MOVWF FRE_REPEAT
    MOVFW FRE_COUNT
    ADDLW S_MIN        ;計數(shù)值加最小值
    MOVWF TEMP
REPEAT0_LP
    MOVFW TEMP
    BSF PORTA,0     
    CALL SOUNDDELAY0   ;廷時W*3US
    BCF PORTA,0
    MOVFW TEMP
    CALL SOUNDDELAY0
    DECFSZ FRE_REPEAT,1 ;每四次減頻率計數(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       ;最大值減計數(shù)值
    MOVWF TEMP
REPEAT1_LP
    MOVFW TEMP
    BSF PORTA,0
    CALL SOUNDDELAY0    ;廷時W*3US
    BCF PORTA,0
    MOVFW TEMP
    CALL SOUNDDELAY0
    DECFSZ FRE_REPEAT,1;四次減頻率計數(shù)一次
    GOTO REPEAT1_LP
    DECFSZ FRE_COUNT,1
    GOTO SOUND_HL_LP
SOUND_END
    RETLW 0
;------------------------------
SOUNDDELAY0
    MOVWF SOUNDDELAY1     ;廷時W*3US+1US
SOUNDDELAYUS_1
    DECFSZ SOUNDDELAY1,1
    GOTO SOUNDDELAYUS_1
    RETLW 0
;------------------------
    END


沂源县| 郎溪县| 石泉县| 万载县| 象山县| 桂平市| 当阳市| 桃园县| 六安市| 扎鲁特旗| 和静县| 蓬溪县| 贵溪市| 曲松县| 象州县| 荔浦县| 石屏县| 华蓥市| 六盘水市| 峨眉山市| 长寿区| 黑山县| 顺平县| 高邮市| 临海市| 区。| 黄龙县| 灵寿县| 南昌县| 客服| 伊川县| 乌鲁木齐市| 贞丰县| 玛曲县| 石楼县| 灵璧县| 来安县| 山阴县| 青岛市| 云林县| 平舆县|