最新三星单片机应用

三星单片机的几种驱动蜂鸣器的编程示例

Published:2010.11.13 NewsFrom:ZHANHENG TECHNOLOGY(HK)CO.,LTD/SHENZHEN ZHANHENGLONG ELECTRONIC CO,LTD Views:

以下介绍几种在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

Development tools for MCU
Programming console for MCU
Development tools for ARM
the C compiler
Contact
Samsung SCM:

ic168@zh-ic.COM

Development Tools:

B6078S@163.com

Site suggestions:

zh-ic@163.com

  Service
 MSN