原创 串口通信 (每天进步一点点 开心一大点)

2009-9-24 14:36 1478 2 2 分类: 软件与OS

/*由上位机发送1给单片机时,蜂鸣器以400ms频率发声,发2时以200ms频率发声,发3时以100ms频率发声,发4时关闲蜂鸣器。*/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint a,flag;
sbit FM="P2"^3;
void sounder();
void delay(uint z)
{
 uint x,y;
   for(x=z;x>0;x--)
    for(y=100;y>0;y--);
}
void main()
{
  TMOD=0x20;// 打开定时器1方式1
      TH1=0xfd;//装初值 波特率9600
  TL1=0Xfd;
      TR1=1;//启动定时器1
      SM0=0;//设置SCON
      SM1=1;
      REN="1";
      EA="1";
      ES="1";//打开串口中断
      while(1)
        {   /*flag=1时候发送数据*/
            if(flag==1)
     {


                 flag="0";
                 ES="0";
             SBUF="a";
                 while(!TI);
                 TI="0";
                 ES="1";
           
             }
            sounder();
         }
}
void serio() interrupt 4
{


 RI=0;//软件清零
   a="SBUF";//接收数据
   flag="1";
 

void sounder()
{
 if(a==1)//发送1时候,蜂鸣器以400ms发生
     {
      delay(400);
        FM=~FM;
   }
   else if(a==2)//发送2时候,蜂鸣器以200ms
     {
      delay(200);
        FM=~FM;
   }
  else if(a==3)//发送2时候,蜂鸣器以100ms
     {
      delay(100);
        FM=~FM;
   }
   else
     {
        FM="0";
   }

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
2
关闭 站长推荐上一条 /3 下一条