在线情况
13
  • 头像
  • 级别
    • 积分31
    • 经验5985
    • 文章202
    • 注册2006-05-28
    分析得很精辟,佩服!
    微控网感谢您的参与
    在线情况
    14
    • 头像
    • 级别
      • 积分20
      • 经验2215
      • 文章164
      • 注册2006-06-05
      感谢冰河前辈的点拨!
      可是我还有不明白的地方,我无论是在主程序中用查询方式发送数据如下:
                while ((IFG1 & UTXIFG0) == 0);
                TXBUF0 = RXTXBUFF;          
      还是在串口接受中断函数usart0_rx中用上面的查询方式发送数据后都不能使UTXIFGx清除,不知为何?还请赐教哦!
      微控网感谢您的参与
      在线情况
      15
      • 头像
      • 级别
      • 门派
      • 职务总版主
      • 声望+9
      • 财富5
      • 积分3065
      • 经验390701
      • 文章6744
      • 注册2006-03-07
      while ((IFG1 & UTXIFG0) == 0);是等待UTXIFG0为1。正如冰河所说,只有为1时,表示你可以往UTXBUF写数据了。TXBUF0 = RXTXBUFF;
      [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
      在线情况
      16
      • 头像
      • 级别
        • 积分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的原因?)
        还请高手帮忙指点一下哦!谢谢!!!





        付出总有回报!!!
        微控网感谢您的参与
        在线情况
        17
        • 头像
        • 级别
        • 门派
        • 职务总版主
        • 声望+9
        • 财富5
        • 积分3065
        • 经验390701
        • 文章6744
        • 注册2006-03-07
        1:所指的复位是指UTXIFG0为0,也就是现在还不能向UTXBUF写数据.
        2:也就是处理完发送后,UTXIFG0由0变1置位.也就说UTXIFG0为0后就立刻置位.
        3:就是前面的两个原因.当你在程查询时或发送数据后UTXIFG0都不是为0.
        [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
        在线情况
        18
        • 头像
        • 级别
          • 积分20
          • 经验2215
          • 文章164
          • 注册2006-06-05
          原来如此,多谢DC指教哦!





          付出总有回报!!!
          微控网感谢您的参与
          在线情况
          19
          • 头像
          • 级别
          • 门派
          • 声望+3
          • 财富2
          • 积分6
          • 经验2093
          • 文章50
          • 注册2006-04-02
          1,我说的是指芯片复位,UTXIFGx是置位的
          2参考TI的例子
          while (!(IFG1 & UTXIFG0));                // USART0 TX buffer ready?
            TXBUF0 = RXBUF0;                          // RXBUF0 to TXBUF0
          微控网感谢您的参与
          在线情况
          20
          • 头像
          • 级别
          • 门派
          • 职务总版主
          • 声望+9
          • 财富5
          • 积分3065
          • 经验390701
          • 文章6744
          • 注册2006-03-07
          是的,UTXIFG0为0,也就是现在还不能向UTXBUF写数据.
          [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
          在线情况
          21
          • 头像
          • 级别
            • 积分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



            付出总有回报!!!
            微控网感谢您的参与
            在线情况
            22
            • 头像
            • 级别
            • 门派
            • 职务总版主
            • 声望+9
            • 财富5
            • 积分3065
            • 经验390701
            • 文章6744
            • 注册2006-03-07
            呵呵,这样学习讨论我们取得成功能.保持这种讨论氛围下去吧...
            [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
            在线情况
            23
            • 头像
            • 级别
              • 积分31
              • 经验5985
              • 文章202
              • 注册2006-05-28
                这样就是说UTXIFG总是置位的,只有在USART模块在发送数据的那一段时间才处于复位状态。
              [ 这个贴子最后由tubaozi01在2006-8-3 20:36:53编辑过 ]
              微控网感谢您的参与
              在线情况
              24
              • 头像
              • 级别
                • 积分1
                • 经验372
                • 文章11
                • 注册2006-06-03
                非常详细,有帮助。谢谢各位了。
                微控网感谢您的参与
                Powered by LeadBBS 9.2 .
                Page created in 0.1719 seconds with 6 queries.