void interrupt COMM_INT_ISR(void)
{
char temp;
if(RC2IF&&RC2IE)
{
if(FERR)
{
gErr = RC2REG;
}
if(OERR)
{
CREN = 0;
CREN = 1;
}
gBuffer[gIndex] = RC2REG;
gIndex++;
}
}
/*SERIAL COMM*/
void async_init(void)
{
TRISG1 = 1;
TRISG2 = 1; //配置RG IO口为输入
ANSELG = 0;
TX2STA = 0b00100100; //传输禁止,高速
RC2STA = 0b10010000; //开启串口,连续接受字符
BAUD2CON = 0b00000000;//
TX2IE = 0;
SPBRG = 19; //高速传输,波特率(119为9600) (19为57600)
}
void rc_data(char len)
{
char tIndex;
async_init();
gIndex = 0;
gErr = 0;
GIE = 1;
PEIE = 1;
RC2IE = 1;
while(gIndex < len);
RC2IE = 0;
}
void tx_data(u8 packet[], char len)
{
char i;
async_init();
TXEN = 1;
for(i=0;i<len;i++)
{
SEND_ONE(packet[i]);
delay_ms(10);
}
}
整了好久,对着手册眼睛都看肿,没发现问题,真丧失!请大伙帮我看看,为什么我的串口中断读取的时候,可以进入,也没有错误,就是没有存入gBuffer里面? |