为什么无源蜂鸣器一直响个不停。因为定时器都被占用,只能用延时实现响的时间

2019-07-15 13:52发布


  #include <reg52.h>  //器件配置文件


   sbit SPK=P1^0;           //蜂鸣器引脚
            
/*********************************************************/
void delayus()     //延时函数,
{
unsigned char i;
        {
for(i=0; i<7; i++)
  {;}
        }
}
                             
/*********************************************************/

void  main(  void  )
{  
     unsigned int  j;
         
        SPK=0;           
  j = 60;     
  while(j>0)   
  {
   SPK = 1;
               delayus();  //高电平
                        delayus();
                        
   SPK = 0;
                delayus();  //低电平
                         delayus();
                        
   j--;
                 }
     
}
     
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
融稔
1楼-- · 2019-07-16 10:52
闹腾呗 发表于 2016-5-22 17:14
是想让他j=60循环完了就不再想。现在就是程序烧上,就一直响个不停。是不是单片机把这个主函数运行完会重新运行啊。所以就一直响

你改成for循环试试
张大猛
2楼-- · 2019-07-16 14:38
你的延时比较短  且在死循环中出不来   在一直循环    所以一直再响
闹腾呗
3楼-- · 2019-07-16 20:36
张大猛 发表于 2016-5-22 17:30
你的延时比较短  且在死循环中出不来   在一直循环    所以一直再响

能不能解释一下怎么就死循环了。j不断减减,满足条件不就跳出来了吗
闹腾呗
4楼-- · 2019-07-17 00:58
 精彩回答 2  元偷偷看……
寒758264068
5楼-- · 2019-07-17 01:48
延时时间不够,delayus?微妙?辨别得出来吗?main里面在while(J<0)前面加多个while(1)就可以响60次了
773865258
6楼-- · 2019-07-17 06:57
每次执行完j有被赋值了,程序死了

一周热门 更多>