打印

问题!!!斑竹求救!!!!!!!1

[复制链接]
1332|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
guoqi|  楼主 | 2007-5-11 17:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片两个定时器我时这么用的,
定时器0,作为一个定时器。初始化如下。
void InitialT0(void)
{

    TMOD = TMOD|0x01;
    TH0    = HLOAD;
    TL0 = LLOAD;
    
    EA = 1;// Open the global interrupt
    ET0 = 1;//Open the respective interrupt
    TR0 = 1;//Start counter
}
中断函数:
unsigned char temp;
void timer0(void) interrupt 1 using 0
{
    TR0 = 0;
    TH0 = HLOAD;
    TL0 = LLOAD;
    CNT = CNT + 1;
    temp = IO_LED_UP;
    IO_LED_UP = !temp;
    TR0 = 1;
}
第二定时器作为波特率发生器。
void InitialSerial(void)
{


    TMOD    &= 0x0F;
    TMOD    |= 0x20;
    TH1    = 253; //baudrate = 19200    
    TR1    = 1; //timer 1 starting
    
    //init UART
    PCON    |= 0x80;//SMOD = 1
    SCON    = 0x40; //uart mode 1

    EA    = 1; //global interrupt enable 
    ES    = 1; //enable uart interrupt    
    REN    = 1; //enable rx
    
}

然后我在主函数里面判断,当CNT==2时,我就通过串口发数据。串口发数据程序正常(测试过)。
int main(void)
{
    

    InitialSerial();
    InitialT0( );
    while(1)
         {
          if(CNT==2)
        {
            TR0 = 0;
            sp_start_xmt(string1,strlen(string1));
            CNT = 0;
            TR0 = 1;
        }

          }
}
然后通过PC串口发现没有接受到数据。为什么啊?
但是我把那个定时器0的TR0 = 1屏蔽时,我发现串口可以发数据了。
为什么?


急啊!

相关帖子

沙发
guoqi|  楼主 | 2007-5-12 10:30 | 只看该作者

搞定了,自己的失误!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

57

帖子

0

粉丝