几种驱动蜂鸣器的编程示例

以下介绍几种在s3f9454/9444下驱动蜂鸣器的编程示例,供参考
a.第一种,普通io高低电平驱动法
;运行环境:s3f9454,fosc=3.2mhz无分频
;p2.0为蜂鸣输出端口
;本例输出频率为4khz,即每250us一个周期,高低电平时间分别为125us
beep:
ldbtcon,#10100011b;看门狗禁用
di
pushr5
pushr6
;首先配置p2.0为普通推挽输出端口
andp2conl,#0feh
orp2conl,#02h
ldr6,#0fah;r6设置输出方波个数,本例为250个(计时62.5ms)
one_beep:
ldr5,#27h;r5为频率发生计时器,本例为近似125us(4khz)
xorp2,#01h
_loop:
decr5
jrnz,_loop
decr6
jrnz,one_beep
ldbtcon,#02h;恢复看门狗运行
ei
popr6
popr5
ret
;-----------------------------------------------------------
b.利用p2.0配置为t0定时器匹配输出方式产生
;注:该方式可用于带多位数码显示扫描的软件中,可有效避免因蜂鸣器
;输出而造成的数码显示抖动闪烁
;因定时器t0被分配作为t0匹配输出定时器,所以本例中利用看门狗定时器
;的实时计时器btcnt作为数码显示实时扫描计时器
;r0为蜂鸣时间长短计时器,由主调用程序进行予设置
;运行环境:s3f9454,fosc=3.2mhz无分频
;p2.0为蜂鸣输出端口
;本例输出频率为4khz,即每250us一个周期,高低电平时间分别为125us
;-----------------------
beep:
di
pushr1
pusht0con
pusht0data
;在蜂鸣输出前首先扫描一次数码显示
callled_scan
orp2conl,#03h;setp2.0ast0matchoutput/every125us
ldt0con,#10001000b;sett0inputclock=fosc/8
ldt0data,#32h
ldbtcon,#10100011b;disablewatch-dogrun,
;butbtcntclkinputfxx/4096=1.280ms
next_beep:
ldr1,#0ah
wait_cnt:
orbtcon,#02h
_wait_cnt:
cpbtcnt,#02h
jrult,_wait_cnt
orbtcon,#02h;清看门狗定时器
callled_scan;每计时2.56ms,则转去实时扫描一次数码显示
decr1
jrnz,wait_cnt
decr0
jrnz,next_beep
ldbtcon,#02h
andp2conl,#0feh;sett0aspush-pulloutput
andp2,#0feh
popt0data
popt0con
popr1
ei
ret

小米6最新消息:官方自爆小米6搭在四曲面,怒怼三星S8与苹果8
高德为推广自己的AR导航推出“副驾彩虹屁口罩”
200G AOC有源光缆概述 优势及原理
温度传感器和气体质量流量传感器在早产保温箱中的作用
充电插座在电动汽车中扮演重要角色
几种驱动蜂鸣器的编程示例
可编程触摸型键盘的设计
电信业重组带来商机 WCDMA面临三大挑战
Verilog HDL和VHDL的区别
科百伦3W E27节能LED灯泡:不伤眼 寿命长
壁挂式Google日历的制作教程
消除引线电阻误差方法有哪些
物联网如何为鲜花冷链服务
5G时代将会有超过85%的业务发生在室内场景
戴尔科技集团重塑超融合标杆Dell EMC VxRail
劳埃德银行联合Windows Hello试验Windows 10网银刷脸登录
海信打造出了可以实现智能停车的一体化平台
区块链如何入局分布式资产
什么是车规认证?一文读懂车规级AEC-Q认证
打造智能家居必不可少的智能网关,你知道多少?