找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1305|回復: 0
打印 上一主題 下一主題
收起左側(cè)

單片機串口通信(2)通過串口助手發(fā)送數(shù)據(jù)點LED

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:424834 發(fā)表于 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);        
}
/*********************************************************

  串行中斷服務函數(shù)

*********************************************************/
void  serial() interrupt 4
{
   ES = 0;                //關閉串行中斷
   RI = 0;                //清除串行接受標志位
   buf = SBUF;            //從串口緩沖區(qū)取得數(shù)據(jù)
  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;  //接受到其它數(shù)據(jù),蜂鳴器響         
   }
   ES = 1;    //允許串口中斷
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表