小弟想做一个上位机程序,上位机发送数字,
单片机接收该数据并比较该数字是否等于50,如果等于就点亮led灯。然后单片机给上位机回应“I get XX”(XX是上位机发送的数字)。现在的问题是我发送50,led灯也不亮。查找了好多帖子,感觉应该是数字的进制转换问题。什么十六进制,十进制,ASCII码,搞得头大。。。请大神指导应该怎么改程序,谢谢。
labview程序和单片机程序如下,单片机我是用
proteus仿真的。
#include
#define uchar unsigned char
#define uint unsigned int
uint flag,a,i;
uchar code table[]="I get "; //字符串数组,如果单片机收到数据就把这个字符串数组发到上位机
***it led=P0^0;
void init()// STC89C52单片机的串口初始化(程序没问题,按书上写的)
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;
for(i=0;i<6;i++)
{
SBUF=table[i]; //把字符串数组发送到上位机
while(!ti);
TI=0;
}
SBUF=a; //把收到的数字也发送到上位机,这样做的目的是我想在上位机上显示“I get 50”
while(!TI);
TI=0;
ES=1;
flag=0;
}
}
}
void ser() interrupt 4
{
RI=0;
a=SBUF;//接收上位机发送来的数字,并把值赋给变量a
flag=1;
if(a==50) //如果接收到的数字为50就点亮led灯
led=1;
}