UART通信
Jan 19, 2020
发送一个字符
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;
}
}
}