单片机引脚模拟串口协议发送数据

使用引脚进行串口通讯,如果该引脚正好支持UART,直接初始化便可以使用,但真就是什么样的项目都有啊,这里就随便用了一个引脚进行模拟串口通讯协议进行数据传输。

一、串口通讯协议

串口数据包的基本组成:
在这里插入图片描述
根据这个串口数据包的基本组成进行接口函数的编写即可实现串口数据的发送,传输波特率是由每位数据电平保持的时间决定的。

二、代码

#define sendinterval    10      //位时钟,10ms传输一位,则波特率为100bps
//**********************************************************************
//           字节发送函数
//**********************************************************************
void send_byte(char in)         //输入变量为即将发送的数据
 {
   char i=0;     
          
   Start_LOW();                 //发送低电平
   delay_ms(sendinterval);
   for(i=0;i<8;i++)             //将数据位送到端口
   {
      if(in&0x01)
      {       
        Start_HIGH();           //发送高电平
      }
      else
      {
        Start_LOW();            //发送低电平
      }
      in = in>>1;               //准备下位数据
      delay_ms(sendinterval);   //位时钟
    }
    Start_HIGH();               //发送停止位,高电平
    delay_ms(sendinterval);		//空闲位
    delay_ms(sendinterval);     //清空一下总线,不清也没事
 }
 
//**********************************************************************
//           字符串发送函数
//**********************************************************************
void send_str(uchar *str,uint len)
{
  for(int i=0;i<len;i++)
  {
    send_byte(*(str+i));
  }
}
发布了9 篇原创文章 · 获赞 4 · 访问量 868

猜你喜欢

转载自blog.csdn.net/Davidysw/article/details/103385480
今日推荐