本帖最后由 TEC 于 2022-1-28 02:00 编辑
在测试上位机接收STC89C52RC单片机高速发送字节数据准确率的时候,发现一个现象,描述如下:
1、结尾没有延时(0xff自减到0),结束字节不是'\n',上位机显示的是乱码,16位显示有规律,波特率降到1200也不行。
2、结尾有延时(短了不行,0xff自减到0可以),结尾发送的不管是不是'\n',上位机都能正常显示字符。
3、结尾发送的是'\n',有没有延时,上位机都可以正常显示字符。
这是怎么回事呢?我在aduc7061板子上也会遇到同样的问题,aduc7061需要0x5ff自减到0的延时。
- #include<reg52.h>
- void usart_init()
- {
- TMOD=0x20;
- TH1=0xfd;
- TL1=0xfd;
- SM0=0;
- SM1=1;
- REN=1;
- ES=1;
- EA=1;
- TR1=1;
- }
- void main()
- {
- unsigned int z;
- usart_init();
- while(1)
- {
- //z=0xff;//延时初值
- ES=0;
- TI=0;
- SBUF='a';
- while(!TI);
- TI=0;
- SBUF='b';
- while(!TI);
- TI=0;
- SBUF='c';
- while(!TI);
- TI=0;
- SBUF='d';
- while(!TI);
- TI=0;
- SBUF='e';
- while(!TI);
- TI=0;
- SBUF='g';
- while(!TI);
- TI=0;
- SBUF='h';
- while(!TI);
- TI=0;
- // SBUF='\n'; //加结束符,正常显示
- // while(!TI);
- // TI=0;
- ES=1;
- // while(z--);//加延时,显示正常。
- }
- }
复制代码
|