主流C51微控制器編譯器比對,在MCS 51微控制器中怎麼用CJNE指令比較兩數大小

2023-01-10 23:35:34 字數 1532 閱讀 5202

1樓:匿名使用者

int short 的大小是因機器而異嘛(準確點應該是編譯器)。你都說了人家規定的是「最小」為16位,又不是隻能是16位,也沒有說兩者應該相等(事實上是short不超過int就ok啦)。所以當然可以short型別為半個機器字長,而int型別則為一個機器字長的啦。

「c++標準規定了每個算術型別的最小儲存空間,但他並不自知編譯器使用更大的儲存空間 」

說簡單點就是c++規定了個最小的值,但是將你的**編譯成機器碼的編譯器則確定了你這個長度值為多少。因為c++是一種語言,一個規範,或者說只是一種規定,然後要將你按這種規範寫的**編譯成能在機器上執行的**的是編譯器。而在不同的機器上執行的程式的實際結構是不一樣的,比如微控制器與pc相差就很大。

要將按相同規範寫的程式在各種各樣亂七八糟的機器上執行,就需要相應的編譯器了。所以實際的大小是由你編譯**的編譯器確定的。

ps:當然當前一般的pc上int都是32位,short16位的。因為現在32位的機子是主流嘛。

如果你不寫什麼微控制器的程式可以不用太在意這個問題。但是寫微控制器程式時就要注意了,因為一般一個微控制器的編譯器可以編譯很多種型號晶片的**,而這些型號有可能從8位到32位都有……

2樓:匿名使用者

51微控制器用的最多的就是keil c51編譯器,比較通用。什麼51都可以,只要到其廠商的官方**上面下個相應的驅動程式就可以了

3樓:千沈濮望

主要是keil和iar。

keil是大眾化的,用的人多。

iar專業,**效率高,用的人就不是那麼多了。

4樓:匿名使用者

彙編的沒有幾種,沒什麼品牌,因為彙編轉成可執行**沒什麼技術難度,現在工業上用的也就是keil的 a51 ,彙編多在院校使用,企業上基本上全用c了早期有c編譯器有富蘭克林,與keil,現在基本全是keil c51了

5樓:匿名使用者

難道你是自動化08的 nb啊 頂強哥!!!

在mcs-51微控制器中怎麼用cjne指令比較兩數大小

6樓:匿名使用者

通過測試cy的值來判斷兩個數的大小,例如:

mov a,#10h

clr c ;清除標誌位cy

cjne a,#11h,loop ;a為第1運算元,立即數11h為第2運算元,比較這兩個數,不等則轉移

loop:jb c,loop1 ;測試cy,如果cy = 1(第1運算元小於第2運算元)跳轉到loop1

sjmp loop2 ;否則跳轉到loop2

loop1:

..........

loop2:

...........

51微控制器中怎樣比較兩個數的大小

7樓:荀寶穀梁琛麗

jc是判斷借位標誌cy的跳轉指令,程式應該有做減法的指令,當a

微控制器c51怎樣才能學好

步驟 1.找本書大概瞭解一下微控制器結構,大概瞭解就行。不用都看懂,又不讓你出書的。三天 2.找學習板練習編寫程式,學微控制器就是練程式設計序,遇到不會的再問人或查書。二十天 3.自己網上找些小電路類的資料練習設計外圍電路。焊好後自己除錯,熟悉過程。十天 4.自己完全設計具有個人風格的電路,產品,你...

C51微控制器中如何把float的變數取出它的整數存入

用c語言的強制型別轉換就可以吧!比如 float a unsigned char b b unsigned char int a 有些編譯copy器float直接轉換bai成duunsigned char 會有警告,所以先轉 zhi換成int型,再轉dao成unsigned char型。c51微控制...

我想問問,我能否在微控制器C51中定義空陣列,然後向裡面寫值,改變值

完全可以而且必要的,比如說在非同步序列收發應用中,就是用一個陣列來做資料快取的。定址方便不易出錯。微控制器的記憶體少的可憐,定義陣列要根據需求來定義,數值不超過256,就要用unsigned char型的。比如unsigned char a 10 注意,後面的10是必要的。這是在做微控制器程式,必須...