標(biāo)題: C51通用串口收發(fā)數(shù)據(jù)C語言程序模塊實(shí)例 [打印本頁]

作者: hts2008222    時(shí)間: 2017-5-11 00:23
標(biāo)題: C51通用串口收發(fā)數(shù)據(jù)C語言程序模塊實(shí)例
#include <reg52.h>        //C51通用串口收發(fā)數(shù)據(jù)C語言程序模塊
#define  uchar unsigned char
#define uint unsigned int
uchar shu;

bit i;
sbit  led1=P0^0;
void  delayms(uint xms)         //1ms;
{
   uint i,j;
   for(i=xms;i>0;i--)
       for(j=110;j>0;j--) ;


}
/************************************************************************/
void  UART_init()
{
  TMOD=0X20;//定時(shí)器1方式        2
  SCON=0X50;//K串口方式          
  TH1=0XFD;
  TL1=0XFD;
  EA=1;
  ES=1;
  TR1=1;

}


/*********************************
函數(shù):void main(void)
____________________________________
說明:主函數(shù),程序執(zhí)行從這里開始
********************************/
void main(void)
{

   UART_init();
   while(1 ) ;
          
}

/*********************************
函數(shù):void Inter()         interrunpt 4
____________________________________
說明:串口中斷處理程序
********************************/
void Inter() interrupt 4
{
   uchar i=0;
  if(RI)        //判斷是否接收完畢
  {
    RI=0; //是則RI清零,準(zhǔn)備下一次接收
        shu=SBUF;
        SBUF=shu;
   }
   if(TI) //發(fā)送數(shù)據(jù)回去
   {
             TI=0;
   }
   if(shu== 0x30)   //判斷接收到的數(shù)據(jù), 并作出相應(yīng)處理
        {
                 
          led1=1;//LED燈滅
         }
   if(shu == 0x31)        //判斷接收到的數(shù)據(jù), 并作出相應(yīng)處理
        {
          led1=0;
        }
       
         if(shu== 0x32)   //判斷接收到的數(shù)據(jù), 并作出相應(yīng)處理
        {
           for(i=0;i<10;i++)
          {
           led1=~led1;
           delayms(200);
          }
          
        }

}


作者: liuzhaoxin1020    時(shí)間: 2017-5-11 09:23
不錯(cuò)的文件,值得收藏
作者: 13976778401    時(shí)間: 2017-5-11 09:49
只有收程序,發(fā)的程序呢?
作者: hts2008222    時(shí)間: 2017-5-28 08:57
發(fā)的程序;
if(TI) //發(fā)送數(shù)據(jù)回去
   {
             TI=0;
   }
作者: lhyspurs    時(shí)間: 2017-5-29 22:18
只有收程序,發(fā)的程序呢?
作者: qwe1818    時(shí)間: 2017-11-30 20:28
很好如果能運(yùn)行正是我想要的,感謝分享。
作者: 回到原點(diǎn)    時(shí)間: 2017-12-20 20:35
漂亮

作者: feiyu1209    時(shí)間: 2018-7-6 22:47
樓主,程序試了下,很好用。能不能再詳細(xì)講講,如果接收不是判斷0,1,2.而是改成一段字符串比如“dakai”,"guanbi","shansuo“,這咋寫?
還有,就是如果是比如15秒就自動(dòng)發(fā)一“hello”,然后就開始接收或是等待接收,這咋寫啊?
新手求教。望詳解。謝謝
作者: wdliming    時(shí)間: 2018-7-25 20:56
謝謝分享;A(chǔ)
作者: hts2008222    時(shí)間: 2020-3-30 16:14
if(RI)        //判斷是否接收完畢
  {
    RI=0; //是則RI清零,準(zhǔn)備下一次接收
        shu=SBUF; //接收到的數(shù)據(jù)送給 shu變量存儲(chǔ)
        SBUF=shu;  //發(fā)送 shu變量存儲(chǔ)的數(shù)據(jù)回去
   }
   if(TI) //發(fā)送數(shù)據(jù)回去
   {
             TI=0;
   }
作者: 而非非人非    時(shí)間: 2020-3-30 19:33
不錯(cuò)的文件,值得收藏
作者: 同凨    時(shí)間: 2020-7-31 13:55
為什么實(shí)際運(yùn)行的時(shí)候會(huì)有一定丟數(shù)據(jù)的概率
作者: lll888yyyy    時(shí)間: 2020-7-31 15:08
看看怎么樣?謝謝分享!
作者: 多喝水    時(shí)間: 2020-7-31 16:39
值得收藏
作者: hts2008222    時(shí)間: 2021-6-28 14:07
feiyu1209 發(fā)表于 2018-7-6 22:47
樓主,程序試了下,很好用。能不能再詳細(xì)講講,如果接收不是判斷0,1,2.而是改成一段字符串比如“dakai”,"g ...

這個(gè)你要配合PC的ASCII碼進(jìn)行轉(zhuǎn)換就可以實(shí)現(xiàn),代碼和原理上比較復(fù)雜,關(guān)連知識(shí)很多,先學(xué)好最基礎(chǔ)的,以后需要時(shí),就會(huì)很容易明白的了!




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1