找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4934|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

STC89C52單片機USART1雙機通信程序+Proteus仿真圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:195289 發(fā)表于 2019-4-13 14:16 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
STC89C52-USART1雙機通信-程序+pritues仿真圖實現(xiàn)功能是發(fā)送端按下按鈕,接收端對應(yīng)的指示燈亮起
內(nèi)容包含:keil+protues
適合剛接觸單片機的同學(xué)
有什么單片機的問題大家也可以留言評論!


發(fā)送端單片機程序:

  1. /*-------------------------------------
  2.         UART雙機通信:使用波特率9600發(fā)送
  3.             本程序負責(zé)發(fā)送數(shù)據(jù)
  4. ---------------------------------------*/

  5. #include "reg51.h"
  6. #include <intrins.H>

  7. typedef unsigned char uchar;
  8. typedef unsigned int  uint;

  9. void InitUART(void);
  10. void SendData(uchar dat);
  11. void SendString(uchar *s);


  12. bit busy;
  13. bit Flag;
  14. uchar GetC;


  15. unsigned char buff[50];
  16. unsigned char i = 0;



  17. void main()
  18. {
  19.         InitUART();
  20.     while(1)
  21.         {         
  22.                  switch(P2)
  23.                  {
  24.                          case 0X7F:SendString("1");break;
  25.                         case 0XBF:SendString("2");break;
  26.                         case 0XDF:SendString("3");break;
  27.                         case 0XEF:SendString("4");break;
  28.                         default:break;
  29.              }
  30.         }
  31. }
  32. /*----------------------------
  33.     UART1初始化
  34. -----------------------------*/
  35. void InitUART(void)
  36. {
  37.     SCON = 0x50;                //8位可變波特率        
  38.     TMOD = 0x20;                //定時器1為模式2(8位自動重載)
  39.     TL1 = 0xFD;                                   //設(shè)置波特率重裝值
  40.     TH1 = 0xFD;
  41.     TR1 = 1;                    //定時器1開始工作
  42.     ES = 1;                     //使能串口中斷
  43.     EA = 1;
  44. }


  45. /*----------------------------
  46. UART 中斷服務(wù)程序
  47. -----------------------------*/
  48. void Uart() interrupt 4 using 1
  49. {
  50.     if (RI)
  51.     {
  52.         RI = 0;                   //清除RI位
  53.         GetC = SBUF;              //P0顯示串口數(shù)據(jù)
  54.                 buff[i]  = SBUF;
  55.                 i++;        
  56.                 if(i==1)
  57.                 {i=0;
  58.                     Flag=1;
  59.                 }
  60.     }
  61.     if (TI)
  62.     {
  63.         TI = 0;                 //清除TI位
  64.         busy = 0;               //清忙標志
  65.     }
  66. }

  67. /*----------------------------
  68. 發(fā)送串口數(shù)據(jù)
  69. ----------------------------*/
  70. void SendData(uchar dat)
  71. {
  72.     while (busy);               //等待前面的數(shù)據(jù)發(fā)送完成
  73.     busy = 1;
  74.     SBUF = dat;                 //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
  75. }

  76. /*----------------------------
  77. 發(fā)送字符串
  78. ----------------------------*/
  79. void SendString(uchar *s)
  80. {
  81.     while (*s)                  //檢測字符串結(jié)束標志
  82.     {
  83.         SendData(*s++);         //發(fā)送當(dāng)前字符
  84.     }
  85. }

復(fù)制代碼

全部資料51hei下載地址:
DEMO_USART(雙機通訊).rar (83.32 KB, 下載次數(shù): 166)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:530740 發(fā)表于 2019-5-15 12:15 | 只看該作者
下載后文件損壞
回復(fù)

使用道具 舉報

板凳
ID:328014 發(fā)表于 2019-5-16 06:16 | 只看該作者

貌似我下載后可以正常打開,你用什么解壓的?我用的最新版的winrar
回復(fù)

使用道具 舉報

地板
ID:543474 發(fā)表于 2019-6-10 14:41 來自手機 | 只看該作者
能互相控制嗎?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表