51單片機的串口中斷設置
首先,你要用軟件允許中斷,
即C語(yǔ)言中EA = 1; 允許總中斷ES = 1;
//允許串口中斷匯編中可用
SETB EA ;允許總中斷
SETB ES ;允許串口中斷
當單片機接收到一幀數據后,RI會(huì )置1,向CPU申請中斷,若之前有中斷允許,則產(chǎn)生了中斷,進(jìn)入中斷服務(wù)程序。
當然,單片機發(fā)送完一幀數據,TI也會(huì )置1,同樣會(huì )產(chǎn)生中斷!
一般我們在發(fā)送數據時(shí)要關(guān)中斷,因為一般你不用在發(fā)送時(shí)不用處理數據;
接收數據時(shí)要開(kāi)中斷,以便你在中斷服務(wù)程序中將接收到的數據進(jìn)行存儲并處理。
補充:其實(shí),不管你有沒(méi)有允許中斷,上位機(此時(shí)即給單片機發(fā)送信息的機器)只要給單片機發(fā)送數據,單片機就會(huì )自動(dòng)接收數據,并把它放在數據緩沖器SBUF中,如果你之前有允許串行口中斷,RI就會(huì )置1,向單片機CPU申請中斷,并進(jìn)入中斷服務(wù)程序,做完中斷函數后就會(huì )自動(dòng)返回斷點(diǎn)。如果你沒(méi)有允許中斷,便不會(huì )產(chǎn)生串行中斷。其實(shí),別的中斷都是某個(gè)I/O口電平變化產(chǎn)生。這只是外部中斷產(chǎn)生條件,不過(guò),你之前也需要用軟件允許外部中斷。
另外,常見(jiàn)的51系列單片機有5個(gè)中斷源三種中斷5:
1、外部中斷0和1;
2、定時(shí)器/計數器溢出中斷0和1;
3、串行口中斷。
另外,STC51系列還有定時(shí)器/計數器T2中斷,A/D轉換中斷,PWM中斷,串行中斷2等等。你還有什么不懂的可以自己多翻一翻書(shū),學(xué)到后面去了你就明白了。
中斷服務(wù)程序中,那條 RI=0;是不可少的,這是用軟件清零RI,準備再次接受一幀數據產(chǎn)生中斷,如果你沒(méi)有這條語(yǔ)句,就會(huì )進(jìn)入死循環(huán),出不來(lái)了。
void serial() interrupt 4
{ P1=SBUF;
RI=0;
}
51單片機相關(guān)文章:51單片機教程
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
塵埃粒子計數器相關(guān)文章:塵埃粒子計數器原理
評論