找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于51單片機(jī)bit用法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:891089 發(fā)表于 2022-7-8 20:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
好兄弟們,比如我下面的程序段
sbit dat=P0^0;
......
void x(bit y){......};
......
int main()
{
   x(dat);
   .......
}
沒有報錯。
這種方法為啥不行嘞
bit不是可以對變量賦值嗎?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:891089 發(fā)表于 2022-7-8 20:45 | 只看該作者
x的內(nèi)容是 y=0;或者 y=1;
回復(fù)

使用道具 舉報

板凳
ID:301191 發(fā)表于 2022-7-9 00:48 | 只看該作者
頂一下
回復(fù)

使用道具 舉報

地板
ID:883242 發(fā)表于 2022-7-9 00:54 | 只看該作者
確實傳bit y的值進(jìn)去了,哪里不行了?
回復(fù)

使用道具 舉報

5#
ID:827243 發(fā)表于 2022-7-9 06:28 | 只看該作者
標(biāo)準(zhǔn)C來說,函數(shù)里修改參數(shù)的值是無效的,這里還涉及到了非標(biāo)類型bit,

建議采用如下方式。

char x(bit y) {
}

dat=(bit)x(dat);
回復(fù)

使用道具 舉報

6#
ID:887371 發(fā)表于 2022-7-9 09:37 | 只看該作者
注意,51的sfr只能直接尋址,你想間接操控P00是不被允許的。

樓主函數(shù)中的y和dat是有區(qū)別的。
y是51單片機(jī)的CY標(biāo)志,它會在進(jìn)入函數(shù)時會等于dat的值。
y=0;或 y=1;僅僅是CY標(biāo)志標(biāo)志改變,但dat值不會跟著改變。
回復(fù)

使用道具 舉報

7#
ID:891089 發(fā)表于 2022-7-9 14:32 來自觸屏版 | 只看該作者
Hephaestus 發(fā)表于 2022-7-9 00:54
確實傳bit y的值進(jìn)去了,哪里不行了?

io口默認(rèn)置高電平,置低無反應(yīng)。這個方法應(yīng)該不可行,用其他方法了。我會把另一個方法回復(fù)我自己,謝謝了
回復(fù)

使用道具 舉報

8#
ID:891089 發(fā)表于 2022-7-9 14:33 來自觸屏版 | 只看該作者
datouyuan 發(fā)表于 2022-7-9 09:37
注意,51的sfr只能直接尋址,你想間接操控P00是不被允許的。

樓主函數(shù)中的y和dat是有區(qū)別的。

是的,換了個方法,先謝謝了。新方法我會回復(fù)我自己
回復(fù)

使用道具 舉報

9#
ID:891089 發(fā)表于 2022-7-9 14:34 來自觸屏版 | 只看該作者
新方法,
回復(fù)

使用道具 舉報

10#
ID:891089 發(fā)表于 2022-7-9 14:34 來自觸屏版 | 只看該作者
  sbit dat0=P0^0; sbit dat1=P0^1; void x(uchar io){ switch(io) {   case 0:dat0=1;break  case 1:da1=1;break; //.... } };此貼封樓了
回復(fù)

使用道具 舉報

11#
ID:1039028 發(fā)表于 2022-7-10 11:22 | 只看該作者
bit只是一個數(shù)據(jù)0或1
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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