【51单片机学习笔记】串口通信工作原理
串口通信与串行通信的区别,串口通讯单片机特有的模块,我们设置好相应的参数,将数据直接丢给他就可以了,而串行通信则是使用单片机的任意GPIO口按照规定的时序模拟相应的协议与其他器件进行通信。
1、串口通信:传统的89系列32次采样,取中间的三次为准。
串口通信的相关术语:
1、波特率:是指1秒钟的时间内,串口通信线路上面,发送的数据位数。
STC15系列T2定时器是采样4次即可。12系列有独立波特率发生器
串口通信的配置代码例程:
Uart1_Drive.c
#include <all.h> u8 xdata Uart1_Up_Num_Buffer[10]; void Uart1_Init() { SCON|=0x50; //0101 0000 AUXR|=0X15; //0001 0101 T2H=0xfc; T2L=0xf3; //定时器初值64755 ES=1; //串口通通信中断 EA=1; // 总中断 } void Uart1_Rountine(void) interrupt 4 //串口1中断函数 { static char Uart1_ser_n=0; //声明一个静态变量 if(RI) //判断接收成功中断标志位 { RI=0; //复位标志位 Uart1_Up_Num_Buffer[9]=SBUF; //使用数组读取串口缓存区的数据 if(SBUF==0x7f) //如果缓存数据位7F,即自动下载程序命令 { Uart1_ser_n++; //计数10次 if(Uart1_ser_n>10) { Uart1_ser_n=0; //复位计数器 IAP_CONTR|=0Xe0; //执行自动下载指令 } } } }
Uart1_Drive.h
#ifndef Uart1_Drive //如果其他文件已经做了这个记号,那么不执行#define #define Uart1_Drive extern void Uart1_Init(); //外部声明串口1初始化函数 extern u8 xdata Uart1_Up_Num_Buffer[10]; //外部声明 串口1数组 #endif

浙公网安备 33010602011771号