--
;ST套件产生开道音
;本实例的目的是让大家学会用 单片机 产生声音的方法,学会计算程序所用时间
;本实例的功能是能PIC16F84产生开道音,每一个3S内频率
;从1.1K-0.5K匀速减少,反复循环。
;程序复位后,蜂鸣器开始报警
;PIC 单片机 学习网-----http://www.55dianzi.com
;烧写时应注意:配置位已经在程序中写明,加载HEX文件时会自动加载,烧写时不用再手动设置配置位。
;实验时请注意套件跳线选择;
;*****************************************************
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
TRISA EQU 05H
;-----------------------
SOUNDDELAY1 EQU 10H ;声音频率变化计数器,从1.1K~0.5KHZ
FRE_COUNT EQU 11H ;同一频率的重复次数保存地址
FRE_REPEAT EQU 12H
SOUND_TEMP EQU 13H
TEMP EQU 14H ;暂存寄存器
S_LOOP EQU 136 ;250-114=136
S_MAX EQU 250 ;最低频率0.5K 250*4=1000 *2
S_MIN EQU 114 ;最高频率1.1K 114*4=456 *2
S_REPEAT EQU 17 ;同一频率重复次数
;--------------------
ORG 0000H
MAIN
CLRF PORTA ;初始化IO口
BSF STATUS,RP0 ;设置数据寄存器体1
MOVLW 0000000B
MOVWF TRISA ;设置RA端口全部为输出
BCF STATUS,RP0 ;恢复数据寄存器体0
LOOP
CALL SOUND3S ;调用报警3S子程序
GOTO LOOP ;反复循环报警
;-------------------------------
SOUND3S
MOVLW S_LOOP
MOVWF FRE_COUNT ;136=250-114
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*4US
BCF PORTA,0
MOVFW TEMP
CALL SOUNDDELAY0
DECFSZ FRE_REPEAT,1;17次减频率计数一次
GOTO REPEAT1_LP
DECFSZ FRE_COUNT,1
GOTO SOUND_HL_LP
SOUND_END
RETLW 0
;------------------------------
SOUNDDELAY0
MOVWF SOUNDDELAY1 ;廷时W*4US+1US
SOUNDDELAYUS_1
NOP
DECFSZ SOUNDDELAY1,1
GOTO SOUNDDELAYUS_1
RETLW 0
;------------------------
END
--------------------------------------------------------------------------------
-- 作者:陈学乾
-- 发布时间:2004-8-26 12:34:47
--
;ST套件产生汽笛音800HZ
;本实例的目的是让大家学会用 单片机 产生声音的方法,学会计算程序所用时间
;本实例的功能是能PIC16F84产生汽笛音800HZ
;相当于800HZ的方波信号发生器。
;程序复位后,蜂鸣器开始发音
;PIC 单片机 学习网-----http://www.55dianzi.com
;烧写时应注意:配置位已经在程序中写明,加载HEX文件时会自动加载,烧写时不用再手动设置配置位。
;实验时请注意套件跳线选择;
;*****************************************************
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
TRISA EQU 05H
;-----------------------
SOUNDDELAY1 EQU 10H ;声音频率变化计数器,从1.1K~0.5KHZ
;--------------------
ORG 0000H
MAIN
CLRF PORTA ;初始化IO口
BSF STATUS,RP0 ;设置数据寄存器体1
MOVLW 0000000B
MOVWF TRISA ;设置RA端口全部为输出
BCF STATUS,RP0 ;恢复数据寄存器体0
SOUND
MOVLW 125 ;800HZ反复循环
BSF PORTA,0
CALL SOUNDDELAY0 ;廷时W*5US
本文关键字:程序 PIC单片机,单片机-工控设备 - PIC单片机
上一篇:pic 查大表程序