当前位置: 代码迷 >> 单片机 >> stc单片机 串口,该怎么解决
  详细解决方案

stc单片机 串口,该怎么解决

热度:520   发布时间:2016-04-28 14:47:34.0
stc单片机 串口
小弟遇到一个问题:(程序如下)为什么我在串口上采用“16进制发送”,上位机接收不到数据(如果我不采用16进制发送,才可以接收到数据,如图片显示)?
程序蓝色字体是串口中断部分~~~
还是想请大神指点下,感谢了~~~

void main()
{
UartInit();
while(1)
{
if(flag==1)
{
flag=0;
UartSendByte(0x01);
}
}
}
void UartInit()
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0x95; //设定定时初值
TH1 = 0x95; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1;
EA=1;
ES=1;
}
void UartSendByte(uchar temp)//把数据发送给上位机,送给串口显示
{
ES=0;
SBUF=temp;
while(!TI);
TI=0;
ES=1;
}

void UartRoutine() interrupt 4
{
RI=0;
flag=1;
}

------解决思路----------------------
0x01+48     ascll显示
0x01            hex显示
0在ascll里面对应48
------解决思路----------------------
采用16进制发送,是啥意思?

lz的这个代码还得加油加油提高提高

  相关解决方案