历史上的今天
今天是:2025年01月29日(星期三)
2018年01月29日 | 几种驱动蜂鸣器的编程示例
2018-01-29 来源:eefocus
以下介绍几种在S3F9454/9444下驱动蜂鸣器的编程示例,供参考
A.第一种,普通IO高低电平驱动法
;运行环境: S3F9454,Fosc= 3.2MHz无分频
;P2.0为蜂鸣输出端口
;本例输出频率为4KHZ,即每250US一个周期,高低电平时间分别为125US
BEEP:
LD BTCON,#10100011B ;看门狗禁用
DI
PUSH R5
PUSH R6
;首先配置P2.0为普通推挽输出端口
AND P2CONL,#0FEH
OR P2CONL,#02H
LD R6,#0FAH ;R6设置输出方波个数,本例为250个(计时62.5MS)
ONE_BEEP:
LD R5,#27H ;R5为频率发生计时器,本例为近似125US(4KHZ)
XOR P2,#01H
_LOOP:
DEC R5
JR NZ,_LOOP
DEC R6
JR NZ,ONE_BEEP
LD BTCON,#02H ;恢复看门狗运行
EI
POP R6
POP R5
RET
;-----------------------------------------------------------
B.利用P2.0配置为T0定时器匹配输出方式产生
;注: 该方式可用于带多位数码显示扫描的软件中,可有效避免因蜂鸣器
;输出而造成的数码显示抖动闪烁
;因定时器T0被分配作为T0匹配输出定时器,所以本例中利用看门狗定时器
;的实时计时器BTCNT作为数码显示实时扫描计时器
;R0为蜂鸣时间长短计时器,由主调用程序进行予设置
;运行环境: S3F9454,Fosc= 3.2MHZ无分频
;P2.0为蜂鸣输出端口
;本例输出频率为4KHZ,即每250US一个周期,高低电平时间分别为125US
;-----------------------
BEEP:
DI
PUSH R1
PUSH T0CON
PUSH T0DATA
;在蜂鸣输出前首先扫描一次数码显示
CALL LED_SCAN
OR P2CONL,#03H ;set P2.0 as T0 match output/every 125us
LD T0CON,#10001000B ;set T0 input cLOCk=Fosc/8
LD T0DATA,#32H
LD BTCON,#10100011B ;DISAble Watch-dog run,
;but btcnt clk input fxx/4096=1.280ms
NEXT_BEEP:
LD R1,#0AH
WAIT_CNT:
OR BTCON,#02H
_WAIT_CNT:
CP BTCNT,#02H
JR ULT,_WAIT_CNT
OR BTCON,#02H ;清看门狗定时器
CALL LED_SCAN ;每计时2.56MS,则转去实时扫描一次数码显示
DEC R1
JR NZ,WAIT_CNT
DEC R0
JR NZ,NEXT_BEEP
LD BTCON,#02H
AND P2CONL,#0FEH ;set T0 as push-pull output
AND P2,#0FEH
POP T0DATA
POP T0CON
POP R1
EI
RET
史海拾趣
|
Altium Designer 6 中,制件的原理图文件中若有中文字,用自带的\"智能PDF\"导出时,则在产生的PDF中显示不了中文字符.本人用Altium Designer 6.3~Altium Designer 6.9都试过,均有此问题,不知能否解决,请哪位大侠指点,若不能人为修改,是否要等待A ...… 查看全部问答> |
|
下面的六个程序片段主要完成这些事情: 输出Hello, World混乱C语言的源代码下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。 hello1.c 01 #define _________ } 02 ...… 查看全部问答> |
|
请教Modbus高手makesoft:实现Modbus协议一定需要超时检测吗? 首先声明,我对Modbus不熟悉,尤其是如何实现它,最近才从网上下载了协议研究了一下,特此向高手请教。搞清楚这些问题,才能有效地在芯片中实现相应的功能,满足大家的需要。此帖的目的是继续另一帖的讨论:建议STM32的芯片加上串口超时功能, ...… 查看全部问答> |
|
在STM32的DS里面,管脚介绍的表格中Main function(after reset)一栏中,大部分的IO口都是如PA7样式的口 ...… 查看全部问答> |
|
我用CCS编程调试时,出现了“error: identifier \\"sinwt\\" is undefined”的错误信息,请请教一下是怎么回事?是不是需要加入某个头文件?还是我的写法有问题啊?谢谢大家~~~… 查看全部问答> |
|
在使用CCS的过程中,我发现在有关于有软件延时的程序中会出现问题,感觉延时没起到作用,比如一个简单的例子,让灯闪烁,使用delay函数(函数体内用两个for循环嵌套那种),这种延时就不会有效果,而用i=50000; while ...… 查看全部问答> |
|
全部代码都已测试通过,若发现有什么问题请和我联系。因为时间仓促,基本上都是一些硬件测试程序。记得要把例程和固件库放在同一目录下,全部工程共用一个库的。至于SD卡里的文件只是几个测试图片和音 ...… 查看全部问答> |
|
在EK-LM4F120XL Launchpad中, 我分别用 AIN0(PE3口)采样1.3V电压 AIN1(PE2口)采样0.65V电压, AIN8(PE5口)采样1.95V电压, AIN9(PE4口)采样2.6V电压, 假如以3.0V作为参考电压,那么在数据寄存器中采样结果应该是: 1775,对应1.3V电压 ...… 查看全部问答> |




