请教为什么串口能发送不能接收

2020-01-26 12:55发布

以下是串口测试程序,我用串口助手测试,我的程序是接收到电脑发送数据则回传一个数据,但电脑发送数据后电脑收不到任何数据,但我让程序主动发送数据则电脑接收正常,下载程序也正常说明串口收发都是正常的,不明白为什么会这样,以前都试过可以的。
unsigned char test;
void UartInit(void);
void main(void)
{
  EA=1;
  test=0x12;
  UartInit();
  while(1)
  {
   ....
  }
}
void UartInit(void)        //4800bps@8MHz
{
    PCON &= 0x7F;        //波特率不倍速
    SCON = 0x50;        //8位数据,可变波特率
    AUXR |= 0x40;        //定时器1时钟为Fosc,即1T
    AUXR &= 0xFE;        //串口1选择定时器1为波特率发生器
    TMOD &= 0x0F;        //清除定时器1模式位
    TMOD |= 0x20;        //设定定时器1为8位自动重装方式
    TL1 = 0xCC;        //设定定时初值
    TH1 = 0xCC;        //设定定时器重装值
    ET1 = 0;        //禁止定时器1中断
    TR1 = 1;        //启动定时器1
    ES=1;   //打开口中断
}
void Uart_Isr(void) interrupt 4
{
    if(RI)
    {
        RI=0;
        SBUF=test;
    }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
lcw_swust
1楼-- · 2020-01-27 06:49
szzyq 发表于 2013-10-16 09:51
本来用的STC-ISP自带的串口助手,不行才用这个结果也是一样,以前调串口的时候也试过不行后来又行的,这次 ...

我这是可以的,是不是串口号弄错了?
或者把串口助手的波特率调高些试试?
或者直接将单片机TXD引脚短暂的接GND看是否收到数据。
szzyq
2楼-- · 2020-01-27 10:29
 精彩回答 2  元偷偷看……
szzyq
3楼-- · 2020-01-27 10:59
这样看来不是程序问题了
szzyq
4楼-- · 2020-01-27 13:55
lcw_swust 发表于 2013-10-16 10:07
我这是可以的,是不是串口号弄错了?
或者把串口助手的波特率调高些试试?
或者直接将单片机TXD引脚短暂 ...

终于搞清楚是怎么回事了,原来是将串口定义成强推挽模式了,变成不能接收信号了        P3M1=0xbc;    //B10111100
        P3M0=0x01;    //B00000001
谢谢你帮我试了下程序,否则我都不知道原因出在哪里。
lcw_swust
5楼-- · 2020-01-27 15:42
szzyq 发表于 2013-10-16 11:11
终于搞清楚是怎么回事了,原来是将串口定义成强推挽模式了,变成不能接收信号了        P3M1=0xbc;    //B101111 ...

哦,这倒是没有想到。

一周热门 更多>