注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
sohappying的个人空间 https://home.eeworld.com.cn/space-uid-332507.html [收藏] [复制] [分享] [RSS]
日志

调试了几个小时,还是找不出哪里错了。大家帮忙看一下

已有 547 次阅读2011-6-20 09:29

 由上位机发送1给单片机时,蜂鸣器以400ms频率发声,发2时以200ms频率发声,发3时以100ms频率发声,发4关闲蜂鸣器。

 

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar temp=0;
sbit beep=P3^6;//蜂鸣器引脚,低电平有效
//初始化
void init()
{
TMOD=0X20;
SCON=0X50;
TR1=1;
TH1=TL1=0XFD;
ES=1;
EA=1;
}
 //一毫秒延时
void delay(uint i)
{
 uchar j;
   while(i--)
  {
   for(j=0;j<115;j++);
  }
}
//发送回PC
void send(uchar dat)
{
 SBUF=dat;
 while(!TI);   //等待发送完成
 TI=0;    //把发送标志位置零
}
//蜂鸣器
void beep0(uchar z)
 {
   while(1)
   {
   beep=0;
   delay(z);
   beep=1;
   delay(z);
   }
 }
 //判断从PC向单片机发送的数值
 void p()
 {
 if(temp==1)
   beep0(200);
 else if(temp==2)
   beep0(100);
 else if(temp==3)
   beep0(50);
 else if(temp==4)
   beep=1;
 }

 //主函数
void main()
{
  init(); //初始化
  while(1)
  {
  p();
  }
 }

 //串口接收中断函数
void ser() interrupt 4
{
 if(RI==1)
 {
 RI=0;
 temp=SBUF;
 send (temp);
   }
}

 

 

出现的情况是:只能发送一次,而第二次、第三次、第四次无效。

例如发送数字1,后发送四蜂鸣器还在响,关不掉。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章