51_jiaduoW~W 发表于 2012-7-23 16:01:23

51 串口中断问题?求解,很诡异的问题!

请问是怎么回事?下面是我的代码!!
问题:
我用中断发送数据,但每次发送只能发送最后一位要发送的数据,比如
        uart_transmit_byte('A');
        uart_transmit_byte('B');
        uart_transmit_byte('C');
只能将C发送过去,其他的都发布过去,下面是我的代码,(查询方式没有问题)
void uart_init(void)
{
        SCON = 0X50;                                //设置定时器1提供波特率,REN置位,允许接受
        TMOD = 0X20;                                //TIME1工作在模式2,自动重新装载
        //靠…………能不能认真点,0x20写成0x02了,怪不得收不到数据。smod的高四位是定时器1
        TH1 = 0Xf3;
        TL1 = 0Xf3;                                        //波特率在9600bps
        TR1 = 1;                                        //定时器1开始工作
        EA = 1;
        ES = 1;                                                //串口中断允许
}


void uart_interrupt() interrupt 4
{
        unsigned char buf;
        if(TI)
        {
                TI = 0;
        }
        if(RI)
        {
                RI=0;
                buf = uart_receive_byte();
                switch(buf)
                {
                        case '0'://立刻上传数据
                                now=1;
                                break;
                        case '1':
                                DELAY_TIME = 1;
                                break;
                        case '2':
                                DELAY_TIME = 2;
                                break;
                        case '3':
                                DELAY_TIME = 3;
                                break;
                        case '4':
                                DELAY_TIME = 4;
                                break;
                        case '5':
                                DELAY_TIME = 5;
                                break;
                        default:break;               
                }
        }
}

dlmaowf 发表于 2012-7-24 11:31:47

没有在中断里发送啊

51_jiaduoW~W 发表于 2012-7-24 19:40:45

中断里怎么发送啊。怎么在中断发送,如果再中断发送,发送完又进入中断。再发送,再进入中断,不就没头了啊。兄弟,求指教

sf49ers 发表于 2012-7-24 19:48:39

51_jiaduoW~W 发表于 2012-7-24 19:40 static/image/common/back.gif
中断里怎么发送啊。怎么在中断发送,如果再中断发送,发送完又进入中断。再发送,再进入中断,不就没头了啊 ...

那你在哪儿发送,怎么发送的?
发送一般是有起始地址和长度的,发完指定长度就不发了
还有,从发送开始到结束产生中断是要时间的,会先退出中断程序,干点别的,再进来

51_jiaduoW~W 发表于 2012-7-25 00:06:11

哦,我明白了。谢谢指教。原来我的理解一直是错误的
页: [1]
查看完整版本: 51 串口中断问题?求解,很诡异的问题!