在线情况
1
  • 头像
  • 级别
    • 积分20
    • 经验2215
    • 文章164
    • 注册2006-06-05
    当往UTXBUF中写数据的时候,UTXIFG置位,复位条件不太清楚,是否是在异步模式下,
    当TXEPT=1时UTXIFG复位?希望斑竹指教啊
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
      • 积分20
      • 经验2215
      • 文章164
      • 注册2006-06-05
      谢谢斑竹!
      刚才在2400下进行实验,发现置位是在发生PUC(上电清除)或SWRST信号(串行状态机控制位)清除后的,可当进入中断后并执行TXBUF0 = RXBUF0后并没发现UTXIFG复位??
      微控网感谢您的参与
      在线情况
      3
      • 头像
      • 级别
        • 积分20
        • 经验2215
        • 文章164
        • 注册2006-06-05
        我的情况是:当我退出中断后,没发现UTXIFG复位,此时也有数据从TX引脚送出.
        象release所说的,如果在进入中断后把UTX的标志位先软件清一下,
        当执行到送数据语句时:
                  while ((IFG1 & UTXIFG0) == 0);//看UTXBUFF是否准备好,只有当UTXIFG0为1时才能执行下去!!
                  TXBUF0 = RXTXBUFF[i];          
        就会执行不下去,还请release帮帮忙哦,谢谢!!
        微控网感谢您的参与
        在线情况
        4
        • 头像
        • 级别
          • 积分20
          • 经验2215
          • 文章164
          • 注册2006-06-05
          感谢冰河前辈的点拨!
          可是我还有不明白的地方,我无论是在主程序中用查询方式发送数据如下:
                    while ((IFG1 & UTXIFG0) == 0);
                    TXBUF0 = RXTXBUFF;          
          还是在串口接受中断函数usart0_rx中用上面的查询方式发送数据后都不能使UTXIFGx清除,不知为何?还请赐教哦!
          微控网感谢您的参与
          在线情况
          5
          • 头像
          • 级别
            • 积分20
            • 经验2215
            • 文章164
            • 注册2006-06-05
            呵呵,DC所说的小弟明白,就是在UTXIFG0为1时才可以往UTXBUF写数据,我不懂的是:当
            往UTXBUF写过数据之后,按冰河前辈所言"应该使UTXIFG0清除,复位后,UTXIFG0也将将置位"
            1:这里的"复位"是否就是UTXIFG0为0?还是程序的RESET?
            2:接着后面的"UTXIFG0置位"是否就是紧跟着前面的UTXIFG0为0后就立刻置位了??
            3:无论是在我的主程序中还是在串口接受中断函数usart0_rx中用上面的查询方式发送数据以后,都不能使UTXIFG0清除,不知为何?(是否是2的原因?)
            还请高手帮忙指点一下哦!谢谢!!!





            付出总有回报!!!
            微控网感谢您的参与
            在线情况
            6
            • 头像
            • 级别
              • 积分20
              • 经验2215
              • 文章164
              • 注册2006-06-05
              原来如此,多谢DC指教哦!





              付出总有回报!!!
              微控网感谢您的参与
              在线情况
              7
              • 头像
              • 级别
                • 积分20
                • 经验2215
                • 文章164
                • 注册2006-06-05
                感谢冰河前辈的指教!
                在我的2400通讯中,当RESET后,UTXIFG0自动置1,如果强行使UTXIFG0为0,再执行下面的查询发送就不会发送了,搞清楚UTXIFG0的复位也是很重要的!!
                 while (!(IFG1 & UTXIFG0));                // USART0 TX buffer ready?
                  TXBUF0 = RXBUF0;                          // RXBUF0 to TXBUF0



                付出总有回报!!!
                微控网感谢您的参与
                Powered by LeadBBS 9.2 .
                Page created in 0.1719 seconds with 7 queries.