標(biāo)題: 單片機(jī)S2CON&=~S2TI; 請(qǐng)教大神 [打印本頁(yè)]

作者: jackduan2018    時(shí)間: 2023-10-13 16:39
標(biāo)題: 單片機(jī)S2CON&=~S2TI; 請(qǐng)教大神
串口通訊里有這樣一個(gè)語(yǔ)句看不懂:S2CON&=~S2TI;  這條語(yǔ)句的目的是對(duì)寄存器  S2CON 的 S2TI位進(jìn)行軟件清零;  
它是不是等價(jià)于:    S2CON&(~S2TI);  ?
S2CON 不支持位尋址,那這個(gè)語(yǔ)句怎么還可以這么寫(xiě)?這樣的操作得出來(lái)的結(jié)果會(huì)是什么 ?
求教大神,謝謝!      




作者: aking991    時(shí)間: 2023-10-14 08:43
S2TI定議時(shí)0x02,那對(duì)應(yīng)的bit.1是1,那~S2TI就是把這個(gè)對(duì)應(yīng)位取反即是0,值就等于0xFD,那么把S2CON這個(gè)0xFD相與,那么S2CON的bit.1也就是0,即是清發(fā)送標(biāo)志,那樣寫(xiě)沒(méi)毛病
作者: joyb    時(shí)間: 2023-10-14 09:01
S2RI 定義為 0000 0001 即0x01
或者 sbit S2RI =S2CON^0//說(shuō)明S2RI是寄存器 S2CON中的第幾位
S2TI 定義為 0000 0010 即0x02
或者 sbit S2TI =S2CON^1
這樣 當(dāng)S2RI=1時(shí) S2CON&S2RI 即為非0
當(dāng)S2RI=0時(shí) S2CON&S2RI 即為0
作者: jackduan2018    時(shí)間: 2023-10-14 13:40
謝謝各位大神
大神就是大神 不用看就知道定義過(guò)了
S2RI是SCON里的一個(gè)位
但是在頭文件里把S2RI定義成了0X02,我沒(méi)看頭文件,所以怎么看也看不明白
謝謝各位大神


作者: powerdruy    時(shí)間: 2023-10-26 18:35
教你一個(gè)套路,可以用在不能位尋址的寄存器上,
比如MSP430的GPIO輸出寄存器

  1. #define BIT0 0x01
  2. #define BIT1 0x02
  3. #define BIT2 0x04
  4. #define BIT3 0x08
  5. P0 |= BIT0;//P0.0置1,P0.0口輸出1
  6. P1 &=~BIT3;//P1.3清0,P1.3口輸出0
復(fù)制代碼


作者: 圣博朗西斯    時(shí)間: 2023-10-27 09:55
那樣寫(xiě)的語(yǔ)法是沒(méi)問(wèn)題的。對(duì)于支不支持位尋址應(yīng)該還是支持位尋址吧,要不然會(huì)報(bào)錯(cuò)的或者你看一下程序里有沒(méi)有宏定義
作者: jackduan2018    時(shí)間: 2025-2-14 08:26
powerdruy 發(fā)表于 2023-10-26 18:35
教你一個(gè)套路,可以用在不能位尋址的寄存器上,
比如MSP430的GPIO輸出寄存器

謝謝大神,學(xué)習(xí)了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1