微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC18f 串口中断

PIC18f 串口中断

时间:11-11 来源:互联网 点击:
  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 位数据,将RX9 位置1。
  19. 5. 通过将CREN 位置1,使能接收。
  20. 6. 当接收完成时标志位RCxIF 将被置1,此时如果
  21. 允许位RCxIE 已置1,还会产生一个中断。
  22. 7. 读RCSTAx 寄存器以获取第9 位数据(如果已
  23. 使能),并判断是否在接收过程中发生了错误。
  24. 8. 通过读RCREGx 寄存器来读取接收到的8 位数据。
  25. 9. 如果发生错误,通过将使能位CREN 清零来清除错误。
  26. 10. 若想使用中断,请确保将INTCON 寄存器中
  27. GIE 和PEIE 位(INTCON<7:6>)置1。
  28. */
  29. voidUartInit(void)
  30. {
  31. RCSTA1bits.SPEN=1;// 串口使能
  32. TRISCbits.TRISC7=1;// 异步串行接收数据输入
  33. TRISCbits.TRISC6=0;// 异步和同步主模式,TRISC<6> 零(= 0)
  34. // TXSTA1:发送状态和控制寄存器
  35. TXSTA1bits.SYNC=0;// 异步模式
  36. TXSTA1bits.TX9=0;// 选择8 位发送
  37. TXSTA1bits.TXEN=1;// 禁止发送
  38. TXSTA1bits.BRGH=1;// 高速
  39. TXSTA1bits.TXEN=1;// 使能发送
  40. // RCSTA1:接收状态和控制寄存器
  41. RCSTA1bits.RX9=0;// 选择8 位接收
  42. RCSTA1bits.CREN=1;// 使能接收器
  43. // BAUDCON1:波特率控制寄存器
  44. BAUDCON1bits.BRG16=0;// 8位波特率发生器——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. //高优先级中断向量
  53. #pragma code InterruptVectorHigh=0x08
  54. voidInterruptVectorHigh(void)
  55. {
  56. _asm
  57. gotoInterruptHandlerHigh //跳到中断程
  58. _endasm
  59. }
  60. //高优先级中断服务程序
  61. #pragma code
  62. #pragmainterruptInterruptHandlerHigh
  63. voidInterruptHandlerHigh()
  64. {
  65. if(PIR1bits.RC1IF)// 已接收数据
  66. {
  67. PIR1bits.RC1IF=0;
  68. PORTF=RCREG1;// 读取接收到的数据
  69. }
  70. }
  71. voidmain()
  72. {
  73. UartInit();
  74. while(1);
  75. }

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top