发送正常,接收不能,接收时RX的脚(P3.0)也有电平变化。就是不产生中断,请高手指点。
//*************************初始化***************************************
//发送数据和接收数据前的控制板通讯初始化
//9600BPS,发送数据—接收数据
//10BIT一帧,1个起始位,8BIT数据,1个停止位。
//****************************************************
void comm_port_init(void)
{
SCON=0x50; //串口工作方式1,单机方式,发送的是数据,接受的也是数据,
ren=1 允许接收,TB0=0;
TMOD=0x20; //定时器1工作方式2
PCON=0; //波特率不增倍
TL1=0xfd; //计数初值9600bps
TH1=0xfd; //重装值
TR1=1; //启动定时器
ES=1; //串行中断允许
tx_en=0; // 接收使能
}
//******************************************************************
//串口中断函数
//接收代码,
//******************************************************************
void rec_int(void) interrupt 4
{
green_lamp=0; //接收指示灯亮
ES=0; //串口中断禁止
if(1==RI) //是接收引起的中断
{
buff=SBUF;
RI=0; //清除接收标志
a=buff;
}
else if(1==TI)
{
TI=0; //是发送引起的中断
}
ES=1;
green_lamp=1;//接收指示灯灭
} |