本帖最后由 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--);//加延時,顯示正常。
- }
- }
復制代碼
亂碼.PNG (64.35 KB, 下載次數: 32)
下載附件
2022-1-28 01:44 上傳
加延時2.PNG (29.87 KB, 下載次數: 44)
下載附件
2022-1-28 01:44 上傳
正常.PNG (41.92 KB, 下載次數: 33)
下載附件
2022-1-28 01:44 上傳
|