stc12串口收发计算机,STC12C5A60S2 串口中断接收程序
printf("%c",UART1_Recv_BUF[i]);
Appcall(UART1_Recv_BUF,UART1_Recv_count);
printf("rn");
UART1_Recv_count = 0;? ? ? ? ? ? //緩存清零
UART1_Overflow_Flag=0;? ? ? ? //允許串口繼續(xù)接收數(shù)據(jù)
}
}
}
小知識(shí):
[1]換行符、回車符的定義
ASICC語(yǔ)言編程描述
回車符0a(13)r
換行符0dn
換行符、回車符的來(lái)歷:
在計(jì)算機(jī)還沒(méi)有出現(xiàn)之前,有一種叫做電傳打字機(jī)(Teletype Model 33)的玩意,每秒鐘可以打10個(gè)字符。但是它有一個(gè)問(wèn)題,就是打完一行換行的時(shí)候,要用去0.2秒,正好可以打兩個(gè)字符。要是在這0.2秒里面,又有新的字符傳過(guò)來(lái),那么這個(gè)字符將丟失。于是,研制人員想了個(gè)辦法解決這個(gè)問(wèn)題,就是在每行后面加兩個(gè)表示結(jié)束的字符。一個(gè)叫做“回車”,告訴打字機(jī)把打印頭定位在左邊界;另一個(gè)叫做“換行”,告訴打字機(jī)把紙向下移一行。這就是“換行”和“回車”的來(lái)歷,從它們的英語(yǔ)名字上也可以看出一二。
后來(lái),計(jì)算機(jī)發(fā)明了,這兩個(gè)概念也就被般到了計(jì)算機(jī)上。那時(shí),存儲(chǔ)器很貴,一些科學(xué)家認(rèn)為在每行結(jié)尾加兩個(gè)字符太浪費(fèi)了,加一個(gè)就可以。于是,就出現(xiàn)了分歧。
Unix系統(tǒng)里,每行結(jié)尾只有“”,即“n”;
Windows系統(tǒng)里面,每行結(jié)尾是“”,即“nr”;Mac系統(tǒng)里,每行結(jié)尾是“”。
在ascii中,回車和換行是不同的字符。0x0A是回車,即光標(biāo)移動(dòng)到本行的最左面; 0x0D是換行,即光標(biāo)移動(dòng)到下一行。
[2]常見(jiàn)的串口工具如何發(fā)生“換行符”
在用串口工具發(fā)送數(shù)據(jù)時(shí),如果勾選了發(fā)送新行,串口工具就會(huì)在數(shù)據(jù)尾部添加“換行符”
[2] STC單片機(jī)波特率計(jì)算
STC單片機(jī)官網(wǎng)上有一個(gè)比較好用的波特率計(jì)算工具,大家都可以自己下載了使用。
選擇好晶振,波特率發(fā)生器、定時(shí)器時(shí)鐘后, 該程序就可以自動(dòng)生成代碼了。非常方便。
STC官網(wǎng)地址:http://www.stcmcu.com/
[3]關(guān)于STC單片機(jī)獨(dú)立波特率發(fā)生器的理解
a. STC單片機(jī)有1個(gè)獨(dú)立的波特率發(fā)生器,雖然用獨(dú)立的波特率發(fā)生器就不需要用定時(shí)器了。但是要注意的時(shí),獨(dú)立波特率發(fā)生器和“晶振”頻率還是有關(guān)的。
b. 如果要串口的數(shù)據(jù)收發(fā)誤碼率較低,還是要選用 11.0592 、22.1184? 這些晶振。
注意看上圖,誤碼率為 0.00%
c. 6M、? 12M 、24M 這些晶振如果在串口通信里,是不建議用的
d. 在STC單片機(jī)上,用 11.0592 晶振,是可以非常方便的上 115200 波特率高速傳輸?shù)?#xff0c;這是普通的AT89S51單片機(jī)很難實(shí)現(xiàn)的。
只要讓單片機(jī)工作在1T的工作模式下,11.0592的晶振,也可以輕松跑到115200波特率。
總結(jié)
以上是生活随笔為你收集整理的stc12串口收发计算机,STC12C5A60S2 串口中断接收程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 手机测试陨石软件,不用仪器检测,肉眼就能
- 下一篇: centos7 解决下载速度慢的问题