1樓:匿名使用者
使用sbit io_dout=p1^0;這個直觀易理解,推薦。
2樓:匿名使用者
是位地址的寫法,p1^0
關於51微控制器io口sbit賦值的問題 15
3樓:匿名使用者
你的l1是一個位變數,而a是一個8位的字元型,a=0x40,是第七位為1,你執行把a賦值給l1,得到的是把a的最低位給了位變數l1,所以l1是得0。l1的值要麼是1,要麼是0。
4樓:匿名使用者
dat=num&0x80;是邏輯與的結果送dat,這裡由最高位決定。
l1=a; 遮蔽後送最低位。
關於微控制器io口重新定義的問題
5樓:匿名使用者
sbit 是屬於定義、宣告bai,du並不會產生實際的**,用zhi在if後面是不
dao行的。
一個可版行的方法是使用條件權
預處理,像這樣
#if flag
sbit hx711_dout=p1^4;
#else
sbit hx711_dout=p1^2;
#endif
注意,這裡的flag,只能是預定義的符號,不可以是變數。
6樓:匿名使用者
sbit 不能放到程式體中,因此這樣定義是不可行的。
微控制器io口定義
7樓:愛笑的天宇
spce061a的i/o埠抄,對某一位襲的設定包括以
下3個基本項:資料向量data、屬性向量attribution和方向控制向量direction。3個埠內每個對應的位組合在一起,形成一個控制字,用來定義相應i/o口位的輸入輸出狀態和方式。
例如,假設需要ioa0是下拉輸入管腳,則相應的data、attribution和direction的值均被置為「0」。如果需要ioa1是帶喚醒功能的懸浮式輸入管腳,則data、attribution和direction的值被置為「010」。a口和b口的data、attribution和direction的設定值均在不同的暫存器裡,使用者在進行i/o口設定時要特別注意這一點。
8樓:匿名使用者
因為標頭檔案裡面沒有對p1^1定義,你可以開啟標頭檔案看看,裡面定義了p0~p3口等其他暫存器,但是沒定義p1^1,所以程式裡你可以直接用p1,而不能用p1^1,自己需要先定義。
9樓:螞蟻叼骨頭
現在你不要把c和彙編搞混了哦, c的話需要編譯器給其做編譯,如果你在c中直接用p1.1或者p1^1,也
內就不符容合編譯規則了。為什麼不能用呢,這是一種規則啊。想用,何必不把p1.1定義呢。也許你也是習慣用匯編而已。
10樓:電子粉絲
這種是便於看懂程式,好記憶.
微控制器c語言如何用sbit定義多個io口
11樓:楊總核心
^不大清楚你的意思,51裡面我常用的方法是這樣:
【例子1】
sbit key_1 = p1^0;
sbit key_2=p0^3;
然後下文直接使用版key_1和key_2就行了權如果是需要io口太多,又是同一組的,就用sfr
微控制器串列埠作用微控制器序列口與普通IO口區別?
能接收和傳送 r232方式的序列資料,是微控制器和 微控制器通訊,微控制器和計算機,微控制器和板卡,無線模組等等通訊的一個基礎通訊方式,很早在6 7時年代流行的通訊方式,是微控制器和外加序列通訊的一個重要方式,也是個常用而簡單方式。是學習微控制器基礎知識的核心。序列通訊的基本概念 一 非同步通訊與同...
51微控制器c語言程式設計能合併不同的io口來賦值嗎
你有兩種方法可以達到這個目的,一種是用定義巨集的方式,另外一種就是寫一個賦值函式。我個人建議用函式的方法,巨集容易出錯誤。微控制器不同組io口整合成一個變數 人家已經都說了,是 巨集定義 巨集定義能幹的事情多了,對於你這裡所提出的 多個埠賦值 來說,基本上相當於一個無殼的函式。打個比方,例如 def...
1 為什麼把51微控制器的I O口稱為「準雙向」口
1.因為p1 2 3有固定的bai內部上拉電du阻,所以有時稱它zhi們為準雙向口。當用dao 做輸入時被拉高專,低則要屬 靠外部電路拉低。而p0則是真雙向口,因為作為輸入時它是懸浮的。2.為了保證程式 在作業系統中理解為程序 能夠連續地執行下去,cpu必須具有某些手段來確定下一條指令的地址。而程式...