UART通信

发送一个字符

void sendChar(char c)
{
    BUFF = c;
    while(TI == 0);	// 等待数据发送完成
    TI = 0;	// 手动将发送中断置零
}

发送一个字符串

void sendString(char *str)
{
    while(*str != '\0')
    {
        sendChar(*str++);
    }
}

甲乙两机通信程序

甲机发送程序

void Send(unsigned char* data, unsigned char len){
    unsigned char i;
    do{
        SBUF = 0xaa;
        while(TI == 0);
        TI = 0;
        while(RI == 0);
        RI = 0;
    }
    while(SBUF != 0x55);
    do{
        pf = 0;
        for(i=0; i < len; i++){
            SBUF = data[i];
            pf += data[i];
            while(TI == 0);
            TI = 0;
        }
        SBUF = pf;
        while(TI == 0);
        TI = 0;
        while(RI == 0);
        RI = 0;
    }while(SBUF != 0);
}
void Receive(unsigned char* data, unsigned char len)
{
    unsigned char i;
    do{
        while(RI == 0);
        RI = 0;
    }while(SBUF != 0xaa);
    
    SBUF = 0x55;
    while(TI == 0);
    TI = 0;
    while(1){
        pf = 0;
        for(i=0; i < len; i++){
            while(RI == 0);
            RI = 0;
            data[i] = SBUF;
            pf += data[i];
        }
        while(RI == 0);
        RI = 0;
        if(SBUF != pf){
            SBUF = oxff;
            while(TI == 0);
            TI = 0;
        }else{
            SBUF = 0x00;
            while(TI == 0);
            TI = 0;
        }
    }
}