#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);
}
最近比较忙,暂不详细解释。
文章评论(0条评论)
登录后参与讨论