嵌入式——串口通信

时间:2021-08-22 22:44:57

 

#include <reg51.h>

void Init();
void Send(unsigned char* pstr,unsigned int len);

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

void Init(){
    SCON=0x50;            //设置为工作方式1
    TMOD=0x20;            //设置计数器工作方式2
    PCON=0x80;            //波特率加倍
    TH1=0xf3;            //计数器初始值设置,注意波特率是4800的
    TL1=0xf3;
    ES=1;                        //打开接收中断
    EA=1;                        //打开总中断
    TR1=1;                        //打开计数器
}

void Send(unsigned char* pstr,unsigned int len){
    for(;len>0;len--){
        SBUF = *(pstr++);      //将要发送的数据放入到发送寄存器
        while(!TI);          //等待发送数据完成,发送前、中 TI = 0,发送完毕后 TI = 1
        TI = 0;              //清除发送完成标志位
    }
}

void Receive() interrupt 4 {
    if(RI){
        unsigned char data = SBUF;
        RI = 0;              //清除接收中断标志位,接收完毕 RI = 1
    }
}