18禁网站免费,成年人黄色视频网站,熟妇高潮一区二区在线播放,国产精品高潮呻吟AV

學習啦>創(chuàng)業(yè)指南>辦事指南>辦事流程>

串口中斷程序流程圖

時間: 嘉敏1004 分享

  串行接口簡稱串口,也稱串行通信接口或串行通訊接口(通常指COM接口),是采用串行通信方式的擴展接口。什么原因導致串口中斷,中斷的問題在哪里。小編給大家整理了關于串口中斷程序流程圖,希望你們喜歡!

  串口中斷程序流程圖

  引起串口中斷的問題

  1、 你要發(fā)送的數據,經串行口發(fā)送后,SCON中的TI會置1,這時候就會有串行口中斷,通知單片機數據已經發(fā)送成功,單片機就可以進入串行口中斷程序(匯編中入口地址0023H),這時候你就可以再一次發(fā)送數據,也就是將數據寫到SBUF中,發(fā)送后中斷返回,等到發(fā)送成功后會再一次產生串行口中斷,這時你就可以再次進入中斷處理程序,發(fā)送數據。

  流程是: (主程序中)發(fā)送數據--等待中斷--發(fā)送成功產生中斷--進入中斷清除TI,再次發(fā)送--中斷返回---等待中斷---發(fā)送成功產生中斷--進入中斷清除TI,再次發(fā)送。。。。 循環(huán)而已

  2、如果你想定時發(fā)送,比如每隔一段時間發(fā)送一次,這時你可以用定時器,在定時器的中斷處理程序中發(fā)送數據,而不去理會串行口中斷(可以關閉串行口中斷或者在串行口中斷中什么也不做直接返回)。

  需要注意的是:如果你用串行口工作方式1或者3,那么定時器1就被作為波特率發(fā)生器,是不能開定時器1的中斷的。定時器0不受影響,可以用。如果你選的是方式2,則兩個定時器都可以用,也可以組合使用,產生較長時間定時。

  3、你想用外中斷觸發(fā),來發(fā)送數據的話,和2情況相同,此時可以由你自己手工控制什么時候發(fā)送,只需要關閉串行口中斷(默認為關閉),開外中斷,在外中斷處理程序中發(fā)送數據,要想知道發(fā)送成功了沒有,可以檢查TI,不影響外中斷。

  綜合來說就是中斷可開可閉,也可以同時用兩個甚至多個,但這樣容易引起數據發(fā)不到就被另一個中斷打斷,最好根據實際情況選擇其中一種

  關于計數結束

  你的計數結束表述不明確啊,是計數器溢出了計數結束呢,還是說后面沒有脈沖了(即外部脈沖結束了)計數結束呢?如果是前者,很簡單只要在計數器的中斷處理程序中完成你所需的操作,如果是后者,就沒那么簡單了,因為單片機不可能知道什么時候外部脈沖什么時候結束,除非用外部中斷的方式通知單片機,你可以在外部中斷處理程序中,完成取數,給上位機通過串口送數,這時候你必須做出選擇 1,如果某次計數結束,你上一次經過串口發(fā)送的數據,還沒發(fā)送成功,你放棄本次發(fā)送 2,如果某次計數結束,你上一次經過串口發(fā)送的數據,還沒發(fā)送成功,你繼續(xù)發(fā)送,覆蓋原來數據。

  其實你應該把你的東西詳細說出來,你只說一個方面,可能你的想法不太對路,我還要按照你的不太對路的想法給你解釋,這樣不太方便。 如果你想計數的話,一般的方法是,給一個定時器設定一個時間,另一個做計數器,定時器時間一到,就在段中取數,給上位機送數,定時器可工作在方式2,循環(huán)送數。不知道你是不是想做這個。

  如果你是發(fā)送數據,你不應該把注意力放在串口中斷上,除非你過分追求發(fā)送的成功率,一般情況下都能發(fā)送成功。

  你說的“用串口中斷傳數給上位機”,這句話本身就有問題,TI是在發(fā)送完畢后產生中斷,你甚至可以不理它,用定時器中斷的處理程序來完成取數,送數。所以說你必須明確到底是發(fā)送完畢后立即再次發(fā)送(利用TI),還是每次你所謂的“計數結束”后發(fā)送數據(此時勸你不要在意TI)。

串口中斷程序流程圖相關文章:

1.串口通信程序流程圖

2.串口通信流程圖

3.程序控制流程圖

4.程序結構流程圖

5.處理客戶投訴的流程圖

3109412