找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

新手入門:51單片機(jī)RS232源碼歷程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:363650 發(fā)表于 2018-7-3 09:16 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
新手可下載學(xué)習(xí)

單片機(jī)源程序如下:
  1. #include <reg51.h>
  2. unsigned char i = 0;
  3. unsigned char uid[9];
  4. void main(void)
  5. {
  6.         SCON = 0X50;
  7.         PCON = 0X00;
  8.         TMOD = 0X20;
  9.         TH1 = 0XFD;
  10.         TL1 = 0XFD;
  11.         TR1 = 1;
  12.         //ET1 = 1;
  13.         ES = 1;
  14.         EA = 1;
  15.         while(1);
  16.         /*{
  17.                 if(RI)
  18.                         RI = 0;
  19.         } */
  20. }

  21. void comm() interrupt 4
  22. {
  23.         /*//ES = 0;
  24.         if(RI)
  25.         {
  26.                 RI = 0;
  27.                 uid[i] = SBUF;
  28.                 i++;
  29.                 SBUF = uid[i-1];
  30.                 if(i == 10)
  31.                 {
  32.                         i = 0;
  33.                 }
  34.                
  35.         }
  36.         if(TI)
  37.         {
  38.                
  39.                 TI = 0;
  40.         }
  41.         //ES = 1; */

  42.         unsigned char  j;
  43.         //ES = 0;
  44.         if(RI == 1)
  45.         {
  46.                 RI = 0;

  47.                 uid[i] = SBUF;       
  48.                 i++;
  49.                 if(i == 9)
  50.                 {
  51.                         i = 0;
  52.                         j = uid[1]+uid[2]+uid[3]+uid[4]+uid[5]+uid[6];
  53.                         if(uid[0] == 0x0a && j == uid[7])
  54.                         {
  55.                                 //設(shè)置終端地址
  56.                                 //if(DownloadTNuid(uid))
  57.                                 //{
  58.                                         SBUF = 0XFF;
  59.                                 //}
  60.                         }
  61.                         else
  62.                         {
  63.                                 SBUF = 0XEE;
  64.                         }
  65.                 }
  66.         }
  67.         if(TI == 1)
  68.         {
  69.                 TI = 0;
  70.         }
  71.         //ES = 1;

  72. }

  73. /*//  Module Name :  uart.c
  74. //  CreateDate  :  2008-4-1
  75. //  ModifData   :  2008-4-1
  76. //  Description :  串口中斷程序,發(fā)送接收到的字符,已測試通過。
  77. //  Author      :  LuoWei
  78. //  Version     :  YBD_V1.0
  79. //=====================================================================================
  80. #include "reg51.h"

  81. #define uchar unsigned char
  82. #define uint unsigned int

  83. //--------------------------------------------------------------------------
  84. //函數(shù)名稱:      UART_Init()
  85. //函數(shù)功能:      串口初始化函數(shù),在系統(tǒng)時鐘為11.059MHZ時,設(shè)定串口波特率為9600bit/s
  86. //其他說明:      串口接收中斷允許,發(fā)送中斷禁止
  87. //--------------------------------------------------------------------------

  88. void UART_Init(void)
  89. {
  90. SCON = 0x50 ;  //SCON: serail mode 1, 8-bit UART, enable ucvr
  91. TMOD = 0x20 ;  //TMOD: timer 1, mode 2, 8-bit reload
  92. PCON = 0x80 ;  //SMOD=1;
  93. TH1 = 0xFA ;  //Baud:9600 fosc="11".0592MHz
  94. ES=1;
  95. TR1 = 1 ;   // timer 1 run
  96. EA=1;
  97. }



  98. //--------------------------------------------------------------------------
  99. //函數(shù)名稱:      main(void)
  100. //函數(shù)功能:      主函數(shù)
  101. //其他說明:      無
  102. //--------------------------------------------------------------------------

  103. void main(void)
  104. {
  105. UART_Init();
  106. while(1);
  107. }


  108. //--------------------------------------------------------------------------
  109. //函數(shù)名稱:      Uart_SendData()
  110. //函數(shù)功能:      串口發(fā)送一個字節(jié)的數(shù)據(jù)
  111. //其他說明:      此程序供中斷調(diào)用
  112. //--------------------------------------------------------------------------

  113. void Uart_SendData(uchar dat)
  114. {
  115. SBUF=dat;  //寫SBUF,開始發(fā)送
  116. while(TI==0); //等待發(fā)送
  117.   TI= 0;   //清發(fā)送標(biāo)志位
  118. }



  119. //--------------------------------------------------------------------------
  120. //函數(shù)名稱:      INT_UartRcv()
  121. //函數(shù)功能:      串口接收中斷函數(shù)
  122. //其他說明:      無
  123. //--------------------------------------------------------------------------

  124. void INT_UartRcv(void) interrupt 4
  125. {
  126. uchar Rcv= 0;
  127. if(RI)
  128. {
  129.   RI= 0;     //
  130.   Rcv = SBUF;
  131.   Uart_SendData(Rcv);  //返回接收數(shù)據(jù),可以改為其他函數(shù)  
  132. }

  133. } */
復(fù)制代碼

所有資料51hei提供下載:
232.zip (1.21 KB, 下載次數(shù): 27)


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

使用道具 舉報

沙發(fā)
ID:453316 發(fā)表于 2019-8-10 10:39 | 只看該作者
那個電路圖看不到了 T T
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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