最新三星单片机应用

驱动蜂鸣器的编程示例

发布时间:2010.10.13 新闻来源:展亨科技(香港)有限公司/深圳市展亨隆电子有限公司 浏览次数:
以下介绍几种在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
单片机开发工具
单片机编程器
ARM开发工具
C编译器
联系方式
三星单片机:

ic168@zh-ic.COM

开发工具:

B6078S@163.com

网站相关建议:

zh-ic@163.com

客户服务
 MSN咨询