久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2466|回復(fù): 2
收起左側(cè)

單片機(jī)串口通信程序 接收失敗是什么原因?

[復(fù)制鏈接]
ID:880458 發(fā)表于 2021-2-19 12:57 | 顯示全部樓層 |閱讀模式
#include <reg52.h>                        
        
#define uint unsigned int
#define uchar unsigned char
        
/*函數(shù)聲明區(qū)*/
void SendByte(unsigned char dat);
void SendStr(unsigned char *s);
void Uart_Init(void);


/*------------------主函數(shù)----------------------*/
void main(void)
{
        Uart_Init();                             //        SendStr(" UART test");        
        ES = 1;                                  //打開串口中斷
        while (1);                       

}

void Uart_Init(void)
{
    SCON  = 0x50;                                        // SCON: 模式 1, 8-bit UART, 使能接收  
    TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重裝
    TH1   = 0xF4;               // TH1:  重裝值 2400 波特率 晶振 11.0592MHz  
    TR1   = 1;                  // TR1:  timer 1 打開                        
    EA    = 1;                  //打開總中斷
}  

/*-----------------發(fā)送一個(gè)字節(jié)-----------------*/
void SendByte(unsigned char dat)
{
         SBUF = dat;
         while(!TI);
                 TI = 0;
}

/*-----------------發(fā)送一個(gè)字符串---------------*/
void SendStr(unsigned char *s)
{
         while(*s!='\0')// \0 表示字符串結(jié)束標(biāo)志,通過檢測(cè)是否字符串末尾
         {
                  SendByte(*s);
                  s++;
         }
}
/*-----------------串口中斷程序-----------------*/
void UART_SER (void) interrupt 4 //串行中斷服務(wù)程序
{
    unsigned char Temp;          //定義臨時(shí)變量   
           if(RI == 1)                  //判斷是接收中斷產(chǎn)生
    {
                        RI = 0;                    //標(biāo)志位清零
                  Temp=SBUF;                 //讀入緩沖區(qū)的值
             SBUF=Temp;                 //把接收到的值再發(fā)回電腦端
                }
           if(TI == 1)
                {                                                                                
            TI=0;                //如果是發(fā)送標(biāo)志位,清零
                }
}


回復(fù)

使用道具 舉報(bào)

ID:883031 發(fā)表于 2021-2-25 11:25 | 顯示全部樓層
中斷服務(wù)程序有問題。
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2021-2-25 13:34 | 顯示全部樓層
抄來(lái)的程序先要讀懂再改,胡亂改當(dāng)然會(huì)出問題。給你把贅句屏蔽掉了,肯定能行。
  1. #include <reg52.h>
  2.         
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5.         
  6. /*函數(shù)聲明區(qū)*/
  7. void SendByte(unsigned char dat);
  8. //void SendStr(unsigned char *s);
  9. void Uart_Init(void);


  10. /*------------------主函數(shù)----------------------*/
  11. void main(void)
  12. {
  13.         Uart_Init();                // SendStr(" UART test");        
  14.         ES = 1;                     //打開串口中斷
  15.         while (1);                       
  16. }

  17. void Uart_Init(void)
  18. {
  19.         SCON  = 0x50;               // SCON: 模式 1, 8-bit UART, 使能接收  
  20.         TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重裝
  21.         TH1   = 0xF4;               // TH1:  重裝值 2400 波特率 晶振 11.0592MHz  
  22.         TR1   = 1;                  // TR1:  timer 1 打開                        
  23.         EA    = 1;                  //打開總中斷
  24. }  
  25. /*-----------------發(fā)送一個(gè)字節(jié)-----------------*/
  26. void SendByte(unsigned char dat)
  27. {
  28.         SBUF = dat;
  29.         while(!TI);
  30.         TI = 0;
  31. }
  32. /*-----------------發(fā)送一個(gè)字符串---------------*/
  33. /*
  34. void SendStr(unsigned char *s)
  35. {
  36.         while(*s!='\0')// \0 表示字符串結(jié)束標(biāo)志,通過檢測(cè)是否字符串末尾
  37.         {
  38.                 SendByte(*s);
  39.                 s++;
  40.         }
  41. }*/
  42. /*-----------------串口中斷程序-----------------*/
  43. void UART_SER (void) interrupt 4 //串行中斷服務(wù)程序
  44. {
  45.         unsigned char Temp;          //定義臨時(shí)變量   
  46. //        if(RI == 1)                  //判斷是接收中斷產(chǎn)生
  47. //        {
  48.         RI = 0;                    //標(biāo)志位清零
  49.         Temp=SBUF;                 //讀入緩沖區(qū)的值
  50. //        SBUF=Temp;                 //把接收到的值再發(fā)回電腦端
  51.         SendByte(Temp);            //把接收到的值再發(fā)回電腦端
  52. //        }
  53. //        if(TI == 1)
  54. //        {
  55. //                TI=0;                //如果是發(fā)送標(biāo)志位,清零
  56. //        }
  57. }
復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区中文字幕 | 亚洲精品一区二区网址 | 99视频在线免费观看 | 日日欧美 | 亚洲国产91 | 久久国产一区 | 激情五月婷婷综合 | 国产欧美二区 | 一区二区在线不卡 | 在线观看国产视频 | 二区在线观看 | 国产精品综合一区二区 | 蜜臀91视频 | 中文字幕在线网 | 91久久久久 | 亚洲精品一区二区三区四区高清 | 伊人婷婷| 国产精品成人一区二区三区 | 国产福利在线播放 | 青青草精品视频 | 欧美日韩久| 成人精品久久 | 亚洲在线| 成人免费视频7777777 | 国产精品海角社区在线观看 | 91超碰在线观看 | 青青草一区 | 久久久www成人免费无遮挡大片 | 亚洲永久| 国产做爰| 国产在线网站 | 国产精品久久 | 亚洲福利 | 欧美激情视频一区二区三区免费 | 99久久99热这里只有精品 | 成人福利电影 | 中文一区二区 | 国产一级黄色网 | 日本aa毛片a级毛片免费观看 | 久久精品免费看 | 三区在线观看 |