找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1368|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

又是一個奇怪的問題,關(guān)于單片機(jī)串口的程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:226798 發(fā)表于 2019-8-27 22:52 來自手機(jī) | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
是這樣的,我想用查詢的方式用串口發(fā)送數(shù)據(jù),結(jié)果數(shù)據(jù)不對,懷疑是發(fā)送標(biāo)志位有問題,我就寫了如下測試代碼:
SCON |= 0X02;
SCON &= 0XFD;
發(fā)送標(biāo)志位正常清零了,但是!
我寫這樣:void CF(void){if(SCON&0X02)SCON &= 0XFD; }
SCON  |=0X02;
CF();
這樣就不行是為什么
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:235200 發(fā)表于 2019-8-28 01:40 | 只看該作者
就你這個問題,我親自加入程序中進(jìn)行了調(diào)式STC15F2K60S2
void cf(void) {if(SCON&0X02)SCON &= 0XFD;}

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


所以不存在你所說的標(biāo)志位TI不能清除的現(xiàn)象
回復(fù)

使用道具 舉報

板凳
ID:235200 發(fā)表于 2019-8-28 01:49 | 只看該作者
這是仿真結(jié)果

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

6.png
回復(fù)

使用道具 舉報

地板
ID:226798 發(fā)表于 2019-8-28 10:02 來自手機(jī) | 只看該作者
csmyldl 發(fā)表于 2019-8-28 01:40
就你這個問題,我親自加入程序中進(jìn)行了調(diào)式STC15F2K60S2
void cf(void) {if(SCON&0X02)SCON &= 0XFD;}


不好意思,之前代碼寫錯了,之前函數(shù)是這樣的void CF(void){if(SCON&0X02 !=0)SCON &= 0XFD; },不知道怎樣寫為什么就清除不了,后來我懷疑是SCON壓棧保存了,就又全部使用函數(shù)調(diào)用也不行,最后我就用貼出來的代碼把判斷!=0去了就正常了,只是不太理解其中的原因
回復(fù)

使用道具 舉報

5#
ID:226798 發(fā)表于 2019-8-28 10:04 來自手機(jī) | 只看該作者
csmyldl 發(fā)表于 2019-8-28 01:49
這是仿真結(jié)果

感謝回答,代碼這樣是正確運(yùn)行的,只是if(SCON&0X02!=0)就無法清除,好尷尬,是不是這個判斷有問題
回復(fù)

使用道具 舉報

6#
ID:235200 發(fā)表于 2019-8-29 11:17 | 只看該作者
其實這樣的邏輯也是可以的,只是語句的優(yōu)先級未分清,應(yīng)把if(SCON&0X02!=0)改為if((SCON&0X02)!=0),因為&的優(yōu)先級低于!=,你那樣寫是先執(zhí)行0x02!=0的結(jié)果1與SCON進(jìn)行按位與
回復(fù)

使用道具 舉報

7#
ID:226798 發(fā)表于 2019-8-29 14:27 來自手機(jī) | 只看該作者
csmyldl 發(fā)表于 2019-8-29 11:17
其實這樣的邏輯也是可以的,只是語句的優(yōu)先級未分清,應(yīng)把if(SCON&0X02!=0)改為if((SCON&0X02)!=0) ...

剛剛我查了,&作為運(yùn)算符的優(yōu)先級是高于邏輯符的優(yōu)先級的,而且我也試過了加括號,感謝回答
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表