串口通讯时被0x0d这个回车符搞晕了
这是我写的串口发送程序,目的是想显示百分比(hour_per),第二个数把第一个数覆盖掉,我在keil中仿真,串口显示正常的,但是连上硬件,用串口调试助手,百分比显示不能覆盖,而是一条龙地显示下去。我一为0x0d没有发送出去,但是我把0x0d改成别的字符却能够发送出去的,是不是硬件不认0X0D啊? 还有,是不是0x0d仅回车,0x0a仅换行啊? 高手帮忙! void UART_send_hour_per(void) { xdata uchar temp[4]={0x00,0x00,0x25,0x0d}; uchar *p; IE&=~0x10;//disable uart interrupt temp[0]=(hour_per/10)+0x30; temp[1]=(hour_per%10)+0x30; p=&temp[0]; do{ SBUF0=*p++; while(TI0==0);//等待发送结束 TI0=0; }while(!(0x0d==*(p-1))); IE|=0x10;//enable uart interrupt }
|