在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC18f 串口中斷

            PIC18f 串口中斷

            作者: 時間:2016-11-11 來源:網(wǎng)絡 收藏
            1. /***************************************************
            2. **
            3. ** MCU:PIC18f8772
            4. ** 功能:串口接收
            5. ** 說明:中斷方式
            6. ** 時間:2012-5-29 Lzy
            7. **
            8. *****************************************************/
            9. #include
            10. /*
            11. 串口初始化
            12. 設置異步接收操作的步驟如下:
            13. 1. 初始化SPBRGHx:SPBRGx寄存器,設置合適的
            14. 波特率。按需要將BRGH 和BRG16 位置1 或清
            15. 零,以獲得目標波特率。
            16. 2. 通過將SYNC 位清零并將SPEN 位置1 使能異步串口。
            17. 3. 如果需要中斷,將允許位RCxIE 置1。
            18. 4. 若需要接收9 位數(shù)據(jù),將RX9 位置1。
            19. 5. 通過將CREN 位置1,使能接收。
            20. 6. 當接收完成時標志位RCxIF 將被置1,此時如果
            21. 允許位RCxIE 已置1,還會產(chǎn)生一個中斷。
            22. 7. 讀RCSTAx 寄存器以獲取第9 位數(shù)據(jù)(如果已
            23. 使能),并判斷是否在接收過程中發(fā)生了錯誤。
            24. 8. 通過讀RCREGx 寄存器來讀取接收到的8 位數(shù)據(jù)。
            25. 9. 如果發(fā)生錯誤,通過將使能位CREN 清零來清除錯誤。
            26. 10. 若想使用中斷,請確保將INTCON 寄存器中
            27. GIE 和PEIE 位(INTCON<7:6>)置1。
            28. */
            29. voidUartInit(void)
            30. {
            31. RCSTA1bits.SPEN=1;// 串口使能
            32. TRISCbits.TRISC7=1;// 異步串行接收數(shù)據(jù)輸入
            33. TRISCbits.TRISC6=0;// 異步和同步主模式,TRISC<6> 零(= 0)
            34. // TXSTA1:發(fā)送狀態(tài)和控制寄存器
            35. TXSTA1bits.SYNC=0;// 異步模式
            36. TXSTA1bits.TX9=0;// 選擇8 位發(fā)送
            37. TXSTA1bits.TXEN=1;// 禁止發(fā)送
            38. TXSTA1bits.BRGH=1;// 高速
            39. TXSTA1bits.TXEN=1;// 使能發(fā)送
            40. // RCSTA1:接收狀態(tài)和控制寄存器
            41. RCSTA1bits.RX9=0;// 選擇8 位接收
            42. RCSTA1bits.CREN=1;// 使能接收器
            43. // BAUDCON1:波特率控制寄存器
            44. BAUDCON1bits.BRG16=0;// 8位波特率發(fā)生器——SPBRGHx 和SPBRGx
            45. SPBRG1=25;
            46. // 外設中斷允許寄存器1
            47. PIE1bits.RC1IE=1;// 允許EUSART 接收中斷
            48. INTCONbits.GIE=INTCONbits.PEIE=1;// 中斷控制寄存器
            49. TRISF=0;
            50. }
            51. voidInterruptHandlerHigh(void);
            52. //高優(yōu)先級中斷向量
            53. #pragma code InterruptVectorHigh=0x08
            54. voidInterruptVectorHigh(void)
            55. {
            56. _asm
            57. gotoInterruptHandlerHigh //跳到中斷程
            58. _endasm
            59. }
            60. //高優(yōu)先級中斷服務程序
            61. #pragma code
            62. #pragmainterruptInterruptHandlerHigh
            63. voidInterruptHandlerHigh()
            64. {
            65. if(PIR1bits.RC1IF)// 已接收數(shù)據(jù)
            66. {
            67. PIR1bits.RC1IF=0;
            68. PORTF=RCREG1;// 讀取接收到的數(shù)據(jù)
            69. }
            70. }
            71. voidmain()
            72. {
            73. UartInit();
            74. while(1);
            75. }


            關鍵詞: PIC18f串口中

            評論


            技術(shù)專區(qū)

            關閉