51单片机串口通信发送单个字符详解

#include <reg51.h>         
//实验现象:发送字符
//函数声明
void uart_init(void);
void uart_seng_byte(unsigned char c);
void delay(void);
//主函数
void main(void)
{
  uart_init();         //第一步:初始化串口到正确状态
  while(1)
  {
  uart_seng_byte('A');    //第二步:通过串口发送信息出去;这样也行uart_seng_byte((unsigned char*)65)
  delay();                //让A发送的不要太快
  }
}

//预设一个串口条件:8位数据位、1停止位、0效验位、波特率2400
//初始化主要用于设置相关寄存器到我们所需要的模式以及参数
//初始化串口函数
void uart_init(void)
{
 SCON=0x50;      //串口工作在模式1,开启允许接收
 PCON=0x00;      //波特率不加倍
 TMOD=0x20;   //设置T1在模式2:M1=1,M0=0;8位自动重装模式
 TH1=TL1=243; //8位自动重装的意思:TH1用完后下一个周期,TL1自动重装到TH1里面去
 TR1=1;          //开启计数器
 ES=1;          //开启串口中断
 EA=1;          //开启总中断
}

//通过串口发送1个字节出去
void uart_seng_byte(unsigned char c) 
//SBUF=c表示将变量c的值赋给SBUF,unsigned char c为8位无符号字符,是一个字节的大小,表示变量c的值是1个字节大小的。
//在内存中间开辟一个1字节的空间,标记为c,把字符A存进去
{
 SBUF=c;      //第一步:发送一个字节出去:写入即可自动发出   
              //参数c容量为1个字节大小的值赋给SBUF用来规定缓存区的容量,防止缓存区溢出
 while(!TI);  //第二步:确认串口8位数据发送结束,TI硬件自动置位
 TI=0;          //第三步:软件复位TI
}
//延时函数
void delay(void)
{
 unsigned char a,b;
 for(a=0;a<100;a++)
  for(b=0;b<100;b++);
}

51单片机串口通信发送以及接收代码详解2

51单片机串口通信发送以及接收代码详解1

上面两链接的代码是本个代码的进阶版

物联沃分享整理
物联沃-IOTWORD物联网 » 51单片机串口通信发送单个字符详解

发表评论