[技术问答]

请教N76E003串口与定时器的问题

[复制链接]
1184|5
手机看帖
扫描二维码
随时随地手机跟帖
liu_33|  楼主 | 2018-12-1 11:50 | 显示全部楼层 |阅读模式
定时器一和二都开启,定时器一定时100US,定时器二1S,串口用定时器三9600波特率。单独使用时都正常,全部都工作是串口不能接收数据,如果把定时器一定时改成1S也可以工作。请教各位有碰到这样的情况吗?这种情况怎么用。迫切需要一个100US定时和9600的串口。高手解答下。
liu_33|  楼主 | 2018-12-1 11:51 | 显示全部楼层
  //  InitialUART0_Timer3(9600);            /* 115200 Baud Rate from timer1*/
       
      clr_T1M;


    u8TH0_Tmp = (65536-TH0_INIT)/256;
    u8TL0_Tmp = (65536-TL0_INIT)%256;   
    u8TH1_Tmp = (65536-TH1_INIT)/256;
    u8TL1_Tmp = (65536-TL1_INIT)%256;
   
    TH0 = u8TH0_Tmp;
    TL0 = u8TL0_Tmp;
    TH1 = u8TH1_Tmp;
    TL1 = u8TL1_Tmp;
   
    set_ET0;                                    //enable Timer0 interrupt
    set_ET1;                                    //enable Timer1 interrupt

    set_TR0;                                    //Timer0 run
    set_TR1;                                    //Timer1 run



//   SCON = 0xD2;                                                                                                                // Special setting the mode 3
   
//   set_ES;                                 //enable UART interrupt
    set_EA;                                 //enable global interrupt
//        clr_TI;  
//   clr_TB8;

使用特权

评论回复
liu_33|  楼主 | 2018-12-1 11:52 | 显示全部楼层
以上是调试时的代码

使用特权

评论回复
tuoxieshu| | 2018-12-2 01:33 | 显示全部楼层
应该是优先级高的定时器1打断了串口定时器3,
在串口发送时先停止别的定时器,保证串口不受影响。如果一直需要接受数据,只能是换定时器1做串口定时器,优先保证串口,但是反过来也一样有可能不能保证100us的定时精度。这个没有办法,系统资源就这么多。

使用特权

评论回复
jasontu| | 2018-12-3 08:54 | 显示全部楼层
可以贴中断的代码跟MAIN里面的代码
应该是TIMER 1中断内的**住。
建议用个FLAG,在MAIN中用FLAG作判断後处理。

使用特权

评论回复
liu_33|  楼主 | 2018-12-9 22:11 | 显示全部楼层
谢谢两位,应该是这个问题。准备弄个快点的IC

使用特权

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

本版积分规则

7

主题

74

帖子

2

粉丝