在线情况
1
  • 头像
  • 级别
    • 积分4
    • 经验636
    • 文章12
    • 注册2007-03-08
    请教DC
    我看到这样一个中断程序
     interrupt[UART0TX_VECTOR] void usart0_tx (void)
    {
        while((UTCTL0 & BIT0)==0)
        {
        }
        ucSPITxFlag = 1;  //ucSPITxFlag程序中自己的一个变量
    }
    其中, while((UTCTL0 & BIT0)==0)在程序中是什么含义?
    和while ((IFG1 & UTXIFG0)==0)或者while ((IFG1 & UTXIFG0)==1)那个是等价关系?


    另外,关于SPI传输数据的过程:我的理解是初始化后,一组8位数据给UTXBUF,就开始传输,
    传输完了,CPU就置位UTXIFG0,然后程序通过查询判断UTXIFG0是否置位,来决定是否开始下组数据的传输.请教DC,我的理解对不对?  另外UTXIFG0复位是由软件复位还是CPU复位?

    另外,关于时钟模块问题,如果不对时钟的几个寄存器初始化,默认的是那个?不知道我这个问题提的对不对?




    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
      • 积分4
      • 经验636
      • 文章12
      • 注册2007-03-08
      引用DC  "while ((IFG1 & UTXIFG0) == 0);是等待UTXIFG0为1。正如冰河所说,只有为1时,表示你可以往UTXBUF写数据了。TXBUF0 = RXTXBUFF;"

      说是"等待UTXIFG0为1,"  那这样的话为1之前UTXIFG0当然是0了,IFG1寄存器的第7位(UTXIFG0)也应该是0了,

      但是再引用KKKCXF的
       ""感谢冰河前辈的点拨!
      可是我还有不明白的地方,我无论是在主程序中用查询方式发送数据如下:
                while ((IFG1 & UTXIFG0) == 0);
                TXBUF0 = RXTXBUFF;          
      还是在串口接受中断函数usart0_rx中用上面的查询方式发送数据后都不能使UTXIFGx清除,不知为何?还请赐教哦!""

      while ((IFG1 & UTXIFG0) == 0);此句指令为0成立,则执行下一句指令,
                                     但是当UTXIFG0为0时,表示TXBUF有数据,
                                      这个时候执行TXBUF0 = RXTXBUFF等于
                                     还没送完第一组数据就送第二组数据
                                      矛盾了
                           新手分析,难免出错,敬请原谅
                                      


      微控网感谢您的参与
      在线情况
      3
      • 头像
      • 级别
        • 积分4
        • 经验636
        • 文章12
        • 注册2007-03-08
        现在有四个阶段:
        1 在给TXBUF送第一组数据时,IFG1要不要初始化呢? UTXIFG0要不要初始化呢?
          或者说在什么情况下,TXBUF可以接受第一组数据?
        2 TXBUF接收数据后,还没发送完时,UTXIFG0的状态是1还是0?
        3 TXBUF送完数据后,是由软件还是CPU改变UTXIFG0的状态呢?
        4 while ((IFG1 & UTXIFG0) == 0);这个指令是等待UTXIFG0为1.为1之前其中IFG1的第七位状态是1还是0? UTXIFG0的状态又是什么? 为1之后,IFG1的第七位状态是1还是0? UTXIFG0的状态又是什么?


        微控网感谢您的参与
        在线情况
        4
        • 头像
        • 级别
          • 积分4
          • 经验636
          • 文章12
          • 注册2007-03-08
          书上对ME1模块没有太多的说明,请教斑竹UTXE0,URXE0和USPIE0的功能,USPIE0的含义我能理解,但是USPIE0和URXE0的含义相同吗?
          微控网感谢您的参与
          Powered by LeadBBS 9.2 .
          Page created in 0.2207 seconds with 7 queries.