使用stc89c52单片机。
上位机发送01,收到“Turn on ad he voltage is 5.000000v",丢失了一个“T”。
(应为 Turn on ad The voltage is 5.000000v)
为什么?
#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
#define unchar unsigned char
unchar pc,a,b;
float c=5.0;
void bps()//串口初始化
{
TMOD=0x21;
TH1=0xfd;
TL1=0xfd;
SM1=1;
SM0=1;
REN=1;
EA=1;
ES=1;
TR1=1;
}
void choice()//对上位机传来的数据响应
{
switch(pc)
{
case 1:puts("Turn on ad\n");
a=1;
break;
case 2:puts("Turn off ad\n");
b=1;
break;
default:puts("Error\n");
}
}
void main()
{
bps();
while(1)
{
while(!RI);
RI=0;
ES=0;
TI=1;
choice();
TI=0;
ES=1;
if(a==1)
{
a=0;
ES=0;
TI=1;
printf("The voltage is %f v\n",c);
TI=0;
ES=1;
}
}
}
void ser()interrupt 4
{
RI=0;
pc=SBUF;
} |