打印
[STM8]

STM蜂鸣怪现象

[复制链接]
1695|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wolf211C|  楼主 | 2011-7-26 09:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大侠,菜鸟我刚开始玩STM8,想用IO口把蜂鸣器间隔点响,可是在我用不同的语句关闭蜂鸣器时竟然会影响蜂鸣器响的间隔时间。我百思不得其解,还请各位帮忙支支招。下面是我的程序:
(PD4是控制口,高电平叫醒蜂鸣器)   
#include "STM8S103K.h"

#define uint unsigned int

void delay_ms(uint ms)
{
        uint x;
        while(ms--)
        {
                x=1000;
                while(x--);
        }
}

main()
{
        PD_DDR=0x10;
        PD_CR1=0x10;
        while (1)
        {
                PD_ODR^=0X10;
                delay_ms(100);
                //PD_ODR&=0Xf7; //用这个时,蜂鸣间隔时间长一些
                PD_ODR^=0x10;   //用这个时,蜂鸣间隔时间短一些
                delay_ms(100);
        }
}
沙发
yujie870705| | 2011-7-26 11:50 | 只看该作者
PD_ODR&=0Xf7应该改成PD_ODR&=0XEF

使用特权

评论回复
板凳
lixiaoxu2meng| | 2011-7-28 11:17 | 只看该作者
本帖最后由 lixiaoxu2meng 于 2011-7-28 11:21 编辑

#include "STM8S103K.h"

#define uint unsigned int

void delay_ms(uint ms)
{
        uint x;
        while(ms--)
        {
                x=1000;
                while(x--);
        }
}

main()
{
        PD_DDR=0x10;
        PD_CR1=0x10;
        while (1)
        {
            delay_ms(100);
             PD_ODR^=0X10;
              delay_ms(100);
       }
}
这么写 像你那么写太罗嗦了  而且也不太符合你要实现的逻辑
你应该先弄懂 什么是按位异或

使用特权

评论回复
地板
香水城| | 2011-7-28 11:40 | 只看该作者
while(1)循环中没有必要写2个delay_ms(100),LS那样写2个delay_ms把延迟增加了一倍。

使用特权

评论回复
5
lixiaoxu2meng| | 2011-7-28 11:49 | 只看该作者
香主 说的对

使用特权

评论回复
6
yujie870705| | 2011-7-28 13:48 | 只看该作者
我*,我这么写也是对的啊,我是按照你的思维来的,虽然说2楼的答案更好一点!为什么不给我分,强烈鄙视!

使用特权

评论回复
7
t.jm| | 2011-7-28 14:30 | 只看该作者
我*,我这么写也是对的啊,我是按照你的思维来的,虽然说2楼的答案更好一点!为什么不给我分,强烈鄙视!
yujie870705 发表于 2011-7-28 13:48

一起鄙视!
只有你才告诉她错在哪里,你是唯一正确的答案居然没给一分给你!你应该得48分,其它人每人1分的!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

18

帖子

1

粉丝