[STM8] STM蜂鸣怪现象

[复制链接]
2650|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把延迟增加了一倍。
lixiaoxu2meng 发表于 2011-7-28 11:49 | 显示全部楼层
香主 说的对
yujie870705 发表于 2011-7-28 13:48 | 显示全部楼层
我*,我这么写也是对的啊,我是按照你的思维来的,虽然说2楼的答案更好一点!为什么不给我分,强烈鄙视!
t.jm 发表于 2011-7-28 14:30 | 显示全部楼层
我*,我这么写也是对的啊,我是按照你的思维来的,虽然说2楼的答案更好一点!为什么不给我分,强烈鄙视!
yujie870705 发表于 2011-7-28 13:48

一起鄙视!
只有你才告诉她错在哪里,你是唯一正确的答案居然没给一分给你!你应该得48分,其它人每人1分的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

18

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部