【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

 

   

 

posted @ 2022-01-17 22:36  2020年2月1日13点30分  阅读(30)  评论(0)    收藏  举报