<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          PIC18f 串口中斷

          作者: 時間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
          1. /***************************************************
          2. **
          3. ** MCU:PIC18f8772
          4. ** 功能:串口接收
          5. ** 說明:中斷方式
          6. ** 時間:2012-5-29 Lzy
          7. **
          8. *****************************************************/
          9. #include
          10. /*
          11. 串口初始化
          12. 設(shè)置異步接收操作的步驟如下:
          13. 1. 初始化SPBRGHx:SPBRGx寄存器,設(shè)置合適的
          14. 波特率。按需要將BRGH 和BRG16 位置1 或清
          15. 零,以獲得目標(biāo)波特率。
          16. 2. 通過將SYNC 位清零并將SPEN 位置1 使能異步串口。
          17. 3. 如果需要中斷,將允許位RCxIE 置1。
          18. 4. 若需要接收9 位數(shù)據(jù),將RX9 位置1。
          19. 5. 通過將CREN 位置1,使能接收。
          20. 6. 當(dāng)接收完成時標(biāo)志位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. // 外設(shè)中斷允許寄存器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)先級中斷服務(wù)程序
          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. }


          關(guān)鍵詞: PIC18f串口中

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();