仿真ARM7,写了个蜂鸣器程序调用就是不对

2019-07-18 11:36发布

1.写了一个蜂鸣器的函数,本来是想调用一个函数的,控制蜂鸣器叫几下,结果发现一模一样的语句,直接执行没问题,一调用就不对了,我是用proteus仿真的,请大家指点一下,新手叫大家见笑了。
2.另外还有一个问题,我用proteus写一个串口收发的程序,没有返回,是什么地方设置不对吗,程序是照着周立功的深入浅出ARM7书上写的,电脑上已经有虚拟串口了。两个问题,还请大家指教一下。
代码和proteus仿真图都在下面。。
buzzer buzzer
proteus proteus
uart uart
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
诺特雷迪斯
1楼-- · 2019-07-18 16:33
 精彩回答 2  元偷偷看……
武力戡乱
2楼-- · 2019-07-18 21:29
第一:蜂鸣器用错了!
第二:别告诉我你用proteus8.1!我忘说了,他的compim不好使。
第三:没看到你程序!你说的串口不好使,是不配置有问题!
最后,欢迎你多贴点这方面的帖子。我感觉arm7的仿真太少了!!!!
诺特雷迪斯
3楼-- · 2019-07-18 21:39
武力戡乱 发表于 2015-3-26 21:31
第一:蜂鸣器用错了!
第二:别告诉我你用proteus8.1!我忘说了,他的compim不好使。
第三:没看到你程序! ...


不好意思,新人回帖有一小时限制。。。
我也怀疑过蜂鸣器的问题,不过我如果不调用哪个Beep函数直接写就没问题,一调用就不对,如果蜂鸣器有问题,具体怎么改。我用的是7.8,也不知道到底问题出在哪。以后我自己做好了,会发到论坛上的,支持版主,哈哈。。。看看我的程序。
#include "LPC2294.h"
#include "config.h"
const uint32 BEEP=1<<7;
const uint32 BUTTON=1<<16;
void delay(uint32 dly)
{
  uint32 i;
  for(;dly>0;dly++)
    for(i=0;i<4000;i++);
}
void Beep()
{
  IO0CLR=BEEP;
}
void main()
{
  PINSEL0=0x00000000;
  PINSEL1=0x00000000;
  IO0DIR=BEEP;
  while(1)
  {
    if(!(IO0PIN&BUTTON))
    Beep();
    //如果下面这样写就是对的,蜂鸣器能叫
     //IO0CLR=BEEP;
    else
      IO0SET=BEEP;
  }
}
诺特雷迪斯
4楼-- · 2019-07-19 02:53
武力戡乱 发表于 2015-3-26 21:31
第一:蜂鸣器用错了!
第二:别告诉我你用proteus8.1!我忘说了,他的compim不好使。
第三:没看到你程序! ...

现在是串口有时候能收发,有时候又不行了,不知道为什么,是软件本身的问题吗
武力戡乱
5楼-- · 2019-07-19 08:02
诺特雷迪斯 发表于 2015-3-26 22:55
不好意思,新人回帖有一小时限制。。。
我也怀疑过蜂鸣器的问题,不过我如果不调用哪个Beep函数直接写就 ...

没关系,论的好处就在这,即使你回复的晚了,我可以很容易的找到。
sounder
你在库中搜索一下这个。一般用这个蜂鸣器。

另外

if(!(IO0PIN&BUTTON))
    Beep();
    //如果下面这样写就是对的,蜂鸣器能叫
     //IO0CLR=BEEP;
    else
      IO0SET=BEEP;

这是什么意思。没太懂。蜂鸣器需要高低电平不停的转换来驱动。需要案例吗?
武力戡乱
6楼-- · 2019-07-19 10:29
 精彩回答 2  元偷偷看……

一周热门 更多>