单片机小白学习之路(二十五)---串口通信的编程

2018-09-11  本文已影响0人  飞向深空

目标:串口通信的编程

(2)串口初始化步骤
①确定T1的工作方式(TMOD寄存器);
②确定串口工作方式(SCON寄存器);
③计算T1的初值(设定波特率),装载TH1、TL1;
④启动T1(TCON中的TR1位);
⑤如果使用中断,需开启串口中断控制位(IE寄存器)。

#include<reg52.h>

typedef unsigned int u16;
typedef unsigned char u8;

void UsartInit()
{
    SCON = 0x50;   //串口通信工作方式1
    TMOD = 0x20;   //计数器工作方式2
    PCON = 0x80;   //波特率加倍
    TH1 = 0xf3;    // 计数器的初值设置,波特率是4800b/s
    TL1 = 0xf3;    
    ES = 1;        //接受中断标志位之一,在scon里
    EA = 1;        // 打开总中断
    TR1 = 1;       //打开计数器
}

void main()
{
    UsartInit();
    while(1);
}


void Usart() interrupt 4
{
    u8 receiveData;  //随便申请个变量

    receiveData = SBUF;  //外部数据传入单片机的SBUF
    RI = 0;    //观察串口方式1的的工作方式发现接受完RI置1,这里的步骤是软件清0,位下一次传入数据做准备
    SBUF = receiveData; //这个步骤是输出数据,把数据放进SBUF中
    while(!TI); //当TI=1时跳出此循环,表示数据全部传入SBUF了
    TI = 0;  //软件清0,为下一次做准备 
}
上一篇 下一篇

猜你喜欢

热点阅读