串口通信,与PC机通信,可以发送但是不能接收,以下是我的程序,请指教啊!!!!
void interrupt ISrR(void)
{
if(RCIF&&RCIE) //判断是否为串口接收中断
{
RCIF=0;
PORTC_2=!PORTC_2; //指示灯的作用,发现只能进一次中断,在上电的时候
if(OERR)
{
CREN=0;CREN=1;
}
}
}
void main(void)
{
unsigned char j;
SPBRG=25; //波特率设为9600
TXSTA=0x24;//使能发送
RCSTA=0x90;// 使能接收
RCIF=0; //清零外部中断
GIE=1; //开放全局中断
PEIE=1; //使能外设中断
TRISC=0x00;//将PORC定为输出
TRISB=0x20;//将PORB RXD 设为输入口,TXD 设为输出口
PORTC_2=0;
PORTC_4=1; //485通信片选,发送使能
for(j=0;j<3;j++)
{
TXREG=0x69;
while(!TRMT);//如果发送在正在进行,那么等待
}
PORTC_4=0; //485通信片选,接收发送使能
RCIE=1; //使能接收中断
while(1); //等待接收中断
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
加下以下两句:
ANSEL = 0x00;
ANSELH = 0x00;
后立刻见效。再回头看690的datasheet,结果人家是提到这点的。看来看书不能马虎。
一周热门 更多>