久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 又是一個奇怪的問題,關于單片機串口的程序 [打印本頁]

作者: anubis577    時間: 2019-8-27 22:52
標題: 又是一個奇怪的問題,關于單片機串口的程序
是這樣的,我想用查詢的方式用串口發送數據,結果數據不對,懷疑是發送標志位有問題,我就寫了如下測試代碼:
SCON |= 0X02;
SCON &= 0XFD;
發送標志位正常清零了,但是!
我寫這樣:void CF(void){if(SCON&0X02)SCON &= 0XFD; }
SCON  |=0X02;
CF();
這樣就不行是為什么
作者: csmyldl    時間: 2019-8-28 01:40
就你這個問題,我親自加入程序中進行了調式STC15F2K60S2
void cf(void) {if(SCON&0X02)SCON &= 0XFD;}

//主程序
void main()
{
       
SCON|=0X02;     //運行到這步  (0x98)中內容是0x02
cf();                 //運行到這步  (0x98)中內容是0x00


所以不存在你所說的標志位TI不能清除的現象
作者: csmyldl    時間: 2019-8-28 01:49
這是仿真結果

6.png (25.81 KB, 下載次數: 62)

6.png

作者: anubis577    時間: 2019-8-28 10:02
csmyldl 發表于 2019-8-28 01:40
就你這個問題,我親自加入程序中進行了調式STC15F2K60S2
void cf(void) {if(SCON&0X02)SCON &= 0XFD;}


不好意思,之前代碼寫錯了,之前函數是這樣的void CF(void){if(SCON&0X02 !=0)SCON &= 0XFD; },不知道怎樣寫為什么就清除不了,后來我懷疑是SCON壓棧保存了,就又全部使用函數調用也不行,最后我就用貼出來的代碼把判斷!=0去了就正常了,只是不太理解其中的原因
作者: anubis577    時間: 2019-8-28 10:04
csmyldl 發表于 2019-8-28 01:49
這是仿真結果

感謝回答,代碼這樣是正確運行的,只是if(SCON&0X02!=0)就無法清除,好尷尬,是不是這個判斷有問題
作者: csmyldl    時間: 2019-8-29 11:17
其實這樣的邏輯也是可以的,只是語句的優先級未分清,應把if(SCON&0X02!=0)改為if((SCON&0X02)!=0),因為&的優先級低于!=,你那樣寫是先執行0x02!=0的結果1與SCON進行按位與
作者: anubis577    時間: 2019-8-29 14:27
csmyldl 發表于 2019-8-29 11:17
其實這樣的邏輯也是可以的,只是語句的優先級未分清,應把if(SCON&0X02!=0)改為if((SCON&0X02)!=0) ...

剛剛我查了,&作為運算符的優先級是高于邏輯符的優先級的,而且我也試過了加括號,感謝回答




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品麻 | 国产日产久久高清欧美一区 | 99伊人网| 亚洲欧美激情国产综合久久久 | 久久精品国产一区二区三区 | 黄色在线观看网站 | www.久久.com | av电影一区 | 91欧美精品成人综合在线观看 | 亚洲精品一二三 | 亚洲精品乱码 | 国产精品黄 | 亚洲成人免费视频在线观看 | 国产这里只有精品 | 99日韩 | 国产日韩欧美综合 | 日本黄色一级片视频 | 国产激情第一页 | 亚洲网站免费看 | 国产一区二区自拍 | 国产免费观看一级国产 | 亚洲精品在线视频 | 国产精品日本一区二区在线播放 | 国产一区二区三区在线 | 日本久久视频 | 成人久草 | 亚洲欧美视频一区二区 | 日韩视频免费看 | 很很干很很日 | 成人午夜精品 | 人人艹人人 | 日韩美女爱爱 | 91精品国产综合久久久久 | 国产精品一区二区三区久久久 | 亚洲视频免费一区 | 羞羞网站免费观看 | 91麻豆精品一区二区三区 | 久久精品亚洲国产 | 日韩在线视频一区二区三区 | 91偷拍精品一区二区三区 | 成人一级视频在线观看 |