原创 MPLAB C18学习 串口及串口中断

2010-5-11 20:16 3450 5 5 分类: MCU/ 嵌入式
         
#include <p18cxxx.h>

//RS-232初始化
void UARTInit(void)               
{
    TRISCbits.TRISC6 = 0;        //在一本书上看到这么写的
    TRISCbits.TRISC7 = 1;        //数据手册中没有
    SPBRG1 = 0x26;                //6M晶振,HS/PLL工作模式,38400波特率
    TXSTA1bits.CSRC = 1;
    TXSTA1bits.TX9 = 0;
    TXSTA1bits.SYNC = 0;
    TXSTA1bits.BRGH = 1;
    TXSTA1bits.TX9D = 0;
    RCSTA1bits.RX9 = 0;
    RCSTA1bits.SREN = 0;
    RCSTA1bits.ADDEN = 1;
    RCSTA1bits.SPEN = 1;
    RCSTA1bits.CREN = 1;
    TXSTA1bits.TXEN = 1;
    PIR1bits.RC1IF = 0;
    PIE1bits.RCIE = 1;
    INTCONbits.GIE = 1;
    INTCONbits.PEIE = 1;
}

//高优先级中断
#pragma code InterruptVectorHigh = 0x08

void InterruptVectorHigh (void)
{
    _asm
        goto Interrupt
    _endasm
}

#pragma code

#pragma interrupt Interrupt

void Interrupt(void)
{
    uchar tmp;
    if(RCIF)                        //串口中断
    {
        RCIF = 0;
    }   
}

void main(void)
{
    UARTInit();                        //RS-232初始化
    while(1);   
}
 
最近比较忙,暂不详细解释。
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /3 下一条