高防服务器

MCU如何自定义引脚做UART串口


MCU如何自定义引脚做UART串口

发布时间:2021-12-24 17:27:14 来源:高防服务器网 阅读:92 作者:小新 栏目:互联网科技

这篇文章主要介绍了MCU如何自定义引脚做UART串口,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

    当(单片机)芯片自带的UART端口不够用时,我们可以考虑利用其它引脚作为UART.

    串口RS232的数据协议有两种,我们以PC与8位/32位单片机间比较常用的异步模式为例子讲解. 
单片机的TXD引脚先发一个低电平0给对方,然后发送5–8个位作为数据,最后发送1个位奇偶校验和1个位高电平1作为停止位. 
以下例子为波特率9600bps,1个开始位,8个数据位,1个停止位 [10位数据,无奇偶校验位:9600-8-N-1] 
波特率:每秒钟发送的字节位,如果baudrate=9600,也就是说,每发送1位耗时1000/9600=104uSec

/**************************************     利用51芯片定时器中断模拟串口信息发送     优点:可以自定义串口引脚,可以实现多个串口     格式: 9600-8-N-1     功能:模拟串口Send  *****************************************/  #include <REG52.H>             char   g_nSendInx=0;  char   g_nBuff=0;  char   g_nFlag=0;    #define MY_TXD P1_0 //模拟TXD引脚      void Timer0Init(void)//104微秒@11.0592MHz  {   //1000ms/9600=104.166us   //使用这种方案,由于精确性问题,长时间传输会偶然出现几个误码      TMOD &= 0xF0;       //设置定时器模式      TMOD |= 0x02;       //设置定时器模式      TL0 = 0xA0;     //设置定时初值      TH0 = 0xA0;     //设置定时重载值      TF0 = 0;        //清除TF0标志      TR0 = 1;        //定时器0开始计时        ET0=1;      EA=1;  }    /******************************    自定义串口发送单字符    ******************************/  void MyUart_Send(char ch){    g_nFlag=0;    g_nBuff=ch;    TR0=1;    while(g_nFlag==0);  }      /******************************    自定义串口发送字符串  ******************************/  void MyUart_String(char* str){      int i=0;      while(*(str+i)){     i++;     g_nFlag=0;     g_nBuff=*(str+i);     TR0=1;     while(g_nFlag==0);    }  }      /*     定时器0中断服务  */  void Timer0_ISP() interrupt 1{      g_nSendInx++;//发送模拟第几位      if(g_nSendInx==1)    {       MY_TXD=0;//起始位拉低      }else if(g_nSendInx==10)  //格式: 9600-8-N-1,完整10个字节    {       MY_TXD=1;//停止位拉高       TR0=0;       g_nSendInx=0;       g_nFlag=1;///发送完成标志位    }else{        MY_TXD=g_nBuff&0x01;////sbuffer_data      g_nBuff>>=1;    }      }    /**********************************    用Timer0定时中断模拟串口信号  **********************************/  void main (void) {       Timer0Init();///定时器初始化,周期为 1000ms/9600=104us       MyUart_String("===Welcome,My Uart===rn ");     MyUart_Send(0x61);     MyUart_Send(0x62);     MyUart_Send(0x63);      while (1);     }

感谢你能够认真阅读完这篇文章,希望小编分享的“MCU如何自定义引脚做UART串口”这篇文章对大家有帮助,同时也希望大家多多支持高防服务器网,关注高防服务器网行业资讯频道,更多相关知识等着你来学习!

[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[