- /***************************************************
- **
- ** MCU:PIC18f8772
- ** 功用:串口接纳
- ** 阐明:中止方法
- ** 时刻:2012-5-29 Lzy
- **
- *****************************************************/
- #include
- /*
- 串口初始化
- 设置异步接纳操作的进程如下:
- 1. 初始化SPBRGHx:SPBRGx寄存器,设置适宜的
- 波特率。按需求将BRGH 和BRG16 方位1 或清
- 零,以取得方针波特率。
- 2. 经过将SYNC 位清零并将SPEN 方位1 使能异步串口。
- 3. 假如需求中止,将答应位RCxIE 置1。
- 4. 若需求接纳9 位数据,将RX9 方位1。
- 5. 经过将CREN 方位1,使能接纳。
- 6. 当接纳完结时标志位RCxIF 将被置1,此刻假如
- 答应位RCxIE 已置1,还会产生一个中止。
- 7. 读RCSTAx 寄存器以获取第9 位数据(假如已
- 使能),并判别是否在接纳进程中产生了过错。
- 8. 经过读RCREGx 寄存器来读取接纳到的8 位数据。
- 9. 假如产生过错,经过将使能位CREN 清零来铲除过错。
- 10. 若想运用中止,请保证将INTCON 寄存器中
- GIE 和PEIE 位(INTCON<7:6>)置1。
- */
- voidUartInit(void)
- {
- RCSTA1bits.SPEN=1;// 串口使能
- TRISCbits.TRISC7=1;// 异步串行接纳数据输入
- TRISCbits.TRISC6=0;// 异步和同步主形式,TRISC<6> 零(= 0)
- // TXSTA1:发送状况和操控寄存器
- TXSTA1bits.SYNC=0;// 异步形式
- TXSTA1bits.TX9=0;// 挑选8 位发送
- TXSTA1bits.TXEN=1;// 制止发送
- TXSTA1bits.BRGH=1;// 高速
- TXSTA1bits.TXEN=1;// 使能发送
- // RCSTA1:接纳状况和操控寄存器
- RCSTA1bits.RX9=0;// 挑选8 位接纳
- RCSTA1bits.CREN=1;// 使能接纳器
- // BAUDCON1:波特率操控寄存器
- BAUDCON1bits.BRG16=0;// 8位波特率产生器——SPBRGHx 和SPBRGx
- SPBRG1=25;
- // 外设中止答应寄存器1
- PIE1bits.RC1IE=1;// 答应EUSART 接纳中止
- INTCONbits.GIE=INTCONbits.PEIE=1;// 中止操控寄存器
- TRISF=0;
- }
- voidInterruptHandlerHigh(void);
- //高优先级中止向量
- #pragma code InterruptVectorHigh=0x08
- voidInterruptVectorHigh(void)
- {
- _asm
- gotoInterruptHandlerHigh //跳到中止程
- _endasm
- }
- //高优先级中止服务程序
- #pragma code
- #pragmainterruptInterruptHandlerHigh
- voidInterruptHandlerHigh()
- {
- if(PIR1bits.RC1IF)// 已接纳数据
- {
- PIR1bits.RC1IF=0;
- PORTF=RCREG1;// 读取接纳到的数据
- }
- }
- voidmain()
- {
- UartInit();
- while(1);
- }
PIC18f 串口中止
/*******************************************************MCU:PIC18f8772**功能:串口接收**说明:中断方式**时间:2012-5-
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/275286.html