串口通讯原理

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/*由上位机发送1给单片机时,蜂鸣器以400ms频率发声,
发2时以200ms频率发声,发3时以100ms频率发声,发4时关闲蜂鸣器。
*/
sbit beep=P2^3;
uchar num,val,count;
void  init()
{
 TMOD=0x21;
 TH1=0xfd;
 TL1=0Xfd;
 TH0=(65535-50000)/256;
 TL0=(65535-50000)%256;
 EA=1;
 ES=1;
 ET0=1;
 SM0=0;
 SM1=1;
 REN=1;
// ET1=1;
 TR0=0;
 TR1=1;
}

void main()
{
 init();
 while(1)
 {
  switch(val)
  {
   case 1:
    num=8;
    TR0=1;
    break;
   case 2:
    num=4;
    TR0=1;
    break;
   case 3:
    num=2;
    TR0=1;
    break;
   case 4:
    beep=1;
    TR0=0;
    break;
   default:
    break;
  }
 }

}

void ser() interrupt 4
{
 val=SBUF;
 RI=0;
}

void time0() interrupt 1
{
 TH0=(65535-50000)/256;
 TL0=(65535-50000)%256;
 count++;
 if(count==num)
 {
  count=0;
  beep=~beep;
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值