在51微控制器中,不同型別的數之間能相互賦值嗎 它們的指標呢

時間 2021-08-30 10:27:48

1樓:

不同型別之間是不能直接賦值的,要經過型別的強制轉換:

int型佔4個位元組,char型佔1個位元組,小的給大的型別一般的編譯器是可以通過的,但大的給小的你就要指明了

舉個例子:

int a=2;

char b=5;

a = b; /*這種操作一般是允許的*/

b = (char)a; /*這需要型別轉換*/

2樓:

可以,但是注意資料型別轉換時型別的提公升帶來的麻煩,大體規則如下如果有一邊的型別是long double,則把另一邊也轉成long double。

否則,如果有一邊的型別是double,則把另一邊也轉成double。

否則,如果有一邊的型別是float,則把另一邊也轉成float。

否則,兩邊應該都是整型,首先按上一小節講過的規則對a和b做integer promotion,然後如果型別仍不相同,則需要繼續轉換。首先我們規定char、short、int、long、long long的轉換級別(integer conversion rank)乙個比乙個高,同一型別的有符號和無符號數具有相同的rank。

3樓:匿名使用者

可以,但要資料轉換。如:

uchar a;

uint b;

a=(uchar)(b);

51微控制器中,定義乙個變數如何賦值

4樓:***x櫻

被編譯器優化了,因為你對同乙個變數重新賦值了,前面的就沒有意義

5樓:敖子鹿妍晨

pic微控制器如果帶eeprom的話,那你把變數儲存在其中,這樣斷電不會丟,你也可以根據需要修改。

51微控制器就有點麻煩了,最簡單的就是外面加24c02

51微控制器c語言程式設計能合併不同的io口來賦值嗎

6樓:

你有兩種方法可以達到這個目的,一種是用定義巨集的方式,另外一種就是寫乙個賦值函式。我個人建議用函式的方法,巨集容易出錯誤。

51微控制器c語言程式設計能給位賦值麼?

7樓:追夢幽白

keil的話可以。開啟你的reg51(或reg52等)標頭檔案,你就會看到已經宣告的位變數,

格式是:sbit 位變數名=sfr名^位位址值 (p3也是標頭檔案中最開始部分宣告的)

標頭檔案中有

sbit wr=p3^6;

所以你直接寫 wr=1就行了

8樓:

c語言中不能直接給二進位制某一位賦值

但是可以通過按位操作來實現

如果你的p3是整型或者字元型的變數,可以通過「按位或」對某一位賦1,通過「按位與」對某一位賦0

p3=p3|0x40;//這樣就是在不改變其他位的同時給第6位賦10x40轉換成二進位制位01000000

假如:p3的值為10110010

10110010

| 01000000結果為 11110010

9樓:匿名使用者

是可以的 雙擊錯誤資訊 到那一行看看上下有沒有錯

關於51微控制器的中斷問題,51微控制器外部中斷0的問題

優先中斷,就是在執行乙個中斷的時候,又來了乙個中斷 如果新來的中斷,其優先順序高於正在執行的中斷,那麼就會暫停現在的中斷而去執行新來的中斷,等這個新中斷執行完之後再會回去繼續執行剛才那個沒執行完也就是那個被打斷的中斷 如果新來的中斷,其優先順序不如正在執行的中斷的優先順序高,那麼程式會繼續執行這個中...

51微控制器io口輸出不同的不同的pwm

1 首先要明白pwm的含義,pwm就是輸出不同占空比的脈衝,2 普通51微控制器io口輸出pwm的話,可以用定時器去計時,比如要輸出100hz的占空比50 的pwm。可以配置1ms的定時器中斷,在中斷中計數,乙個中斷就是1ms,100hz的脈衝,週期是10ms,50 的占空比,可以計數到5的時候把i...

我想從事微控制器類的工作,我想問在51微控制器和ARM深入以後

看你目標方向。你要是只考慮 wince 做系統,那麼不需要學 linux unix 鐵定不用學的。微控制器沒有作業系統,也不需要學 linux 只要你的微控制器開發 windows 下面可以實現就不需要。但問題是,你想把自己的能力限制死麼?linux 現在是免費而且開源的。而 wince 是收費的,...