找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1097|回复: 0
收起左侧

单片机串口通信(2)通过串口助手发送数据点LED

[复制链接]
ID:424834 发表于 2019-12-12 10:07 | 显示全部楼层 |阅读模式
#include <reg52.h>
#define jingzhen     12000000UL          /*使用12.0M晶体*/   //
#define botelv   4800UL          /*波特率定义为4800*/

typedef unsigned char uchar;
typedef unsigned int uint;

uchar buf;

sbit beep=P1^5;

void main(void)
{
         EA=0; //暂时关闭中断
         TMOD&=0x0F;  //定时器1模式控制在高4位
         TMOD|=0x20;    //定时器1工作在模式2,自动重装模式
         SCON=0x50;     //串口工作在模式1
         TH1=256-jingzhen/(botelv*12*16);  //计算定时器重装值
         TL1=256-jingzhen/(botelv*12*16);
         PCON|=0x80;    //串口波特率加倍
         ES=1;         //串行中断允许
         TR1=1;        //启动定时器1
         REN=1;        //允许接收
         EA=1;         //允许中断

      while(1);        
}
/*********************************************************

  串行中断服务函数

*********************************************************/
void  serial() interrupt 4
{
   ES = 0;                //关闭串行中断
   RI = 0;                //清除串行接受标志位
   buf = SBUF;            //从串口缓冲区取得数据
  switch(buf)
   {
      case 0x31:  P2=0xfe;beep=1;break;  //接受到1,第一个LED亮         
      case 0x32:  P2=0xfd;beep=1;break;  //接受到2,第二个LED亮        
      case 0x33:  P2=0xfb;beep=1;break;  //接受到3,第三个LED亮        
      case 0x34:  P2=0xf7;beep=1;break;  //接受到4,第四个LED亮      
      case 0x35:  P2=0xef;beep=1;break;  //接受到5,第五个LED亮            
      case 0x36:  P2=0xdf;beep=1;break;  //接受到5,第六个LED亮                  
      case 0x37:  P2=0xbf;beep=1;break;  //接受到5,第七个LED亮
        case 0x38:  P2=0x7f;beep=1;break;  //接受到5,第八个LED亮
        default:    beep=0;P2=0xff;break;  //接受到其它数据,蜂鸣器响         
   }
   ES = 1;    //允许串口中断
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表