新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機的串口中斷設置

        51單片機的串口中斷設置

        作者: 時間:2014-01-18 來源:網絡 收藏

        首先,你要用軟件允許中斷,

        即C語言中EA = 1; 允許總中斷ES = 1;

        //允許中斷匯編中可用

        SETB EA ;允許總中斷

        SETB ES ;允許中斷

        當單片機接收到一幀數據后,RI會置1,向CPU申請中斷,若之前有中斷允許,則產生了中斷,進入中斷服務程序。

        當然,單片機發送完一幀數據,TI也會置1,同樣會產生中斷!

        一般我們在發送數據時要關中斷,因為一般你不用在發送時不用處理數據;

        接收數據時要開中斷,以便你在中斷服務程序中將接收到的數據進行存儲并處理。

        補充:其實,不管你有沒有允許中斷,上位機(此時即給單片機發送信息的機器)只要給單片機發送數據,單片機就會自動接收數據,并把它放在數據緩沖器SBUF中,如果你之前有允許串行口中斷,RI就會置1,向單片機CPU申請中斷,并進入中斷服務程序,做完中斷函數后就會自動返回斷點。如果你沒有允許中斷,便不會產生串行中斷。其實,別的中斷都是某個I/O口電平變化產生。這只是外部中斷產生條件,不過,你之前也需要用軟件允許外部中斷。

        另外,常見的51系列單片機有5個中斷源三種中斷5:

        1、外部中斷0和1;

        2、定時器/計數器溢出中斷0和1;

        3、串行口中斷。

        另外,STC51系列還有定時器/計數器T2中斷,A/D轉換中斷,PWM中斷,串行中斷2等等。你還有什么不懂的可以自己多翻一翻書,學到后面去了你就明白了。

        中斷服務程序中,那條 RI=0;是不可少的,這是用軟件清零RI,準備再次接受一幀數據產生中斷,如果你沒有這條語句,就會進入死循環,出不來了。

        void serial() interrupt 4

        { P1=SBUF;

        RI=0;

        }

        51單片機相關文章:51單片機教程


        c語言相關文章:c語言教程


        單片機相關文章:單片機教程


        單片機相關文章:單片機視頻教程


        單片機相關文章:單片機工作原理


        塵埃粒子計數器相關文章:塵埃粒子計數器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 郑州市| 宣城市| 织金县| 张家界市| 贺州市| 浮梁县| 汾阳市| 吕梁市| 望江县| 图们市| 合川市| 高州市| 宣城市| 卢龙县| 江安县| 北宁市| 灵丘县| 永顺县| 偏关县| 邵阳市| 温州市| 钟山县| 连南| 桂阳县| 明溪县| 林芝县| 翁牛特旗| 都昌县| 博白县| 武功县| 墨竹工卡县| 鄄城县| 鄱阳县| 天台县| 金门县| 苏尼特右旗| 竹溪县| 舒兰市| 高邑县| 乐昌市| 安达市|