找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2396|回复: 1
打印 上一主题 下一主题
收起左侧

新手入门:51单片机RS232源码历程

[复制链接]
跳转到指定楼层
楼主
ID:363650 发表于 2018-7-3 09:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新手可下载学习

单片机源程序如下:
  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.                                 //设置终端地址
  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 :  串口中断程序,发送接收到的字符,已测试通过。
  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. //函数名称:      UART_Init()
  85. //函数功能:      串口初始化函数,在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s
  86. //其他说明:      串口接收中断允许,发送中断禁止
  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. //函数名称:      main(void)
  100. //函数功能:      主函数
  101. //其他说明:      无
  102. //--------------------------------------------------------------------------

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


  108. //--------------------------------------------------------------------------
  109. //函数名称:      Uart_SendData()
  110. //函数功能:      串口发送一个字节的数据
  111. //其他说明:      此程序供中断调用
  112. //--------------------------------------------------------------------------

  113. void Uart_SendData(uchar dat)
  114. {
  115. SBUF=dat;  //写SBUF,开始发送
  116. while(TI==0); //等待发送
  117.   TI= 0;   //清发送标志位
  118. }



  119. //--------------------------------------------------------------------------
  120. //函数名称:      INT_UartRcv()
  121. //函数功能:      串口接收中断函数
  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);  //返回接收数据,可以改为其他函数  
  132. }

  133. } */
复制代码

所有资料51hei提供下载:
232.zip (1.21 KB, 下载次数: 27)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:453316 发表于 2019-8-10 10:39 | 只看该作者
那个电路图看不到了 T T
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表