微控制器的小問題,微控制器的一個小問題

時間 2021-09-06 09:15:33

1樓:匿名使用者

1:第二個void是說明沒有形參,可以不寫就像void ds_reset_1()這樣,但各個c編譯器編譯效率和方式不一樣,有的編譯器會自作主張把()括號裡面加上寫看似沒有用的引數,但可能會對程式的正常執行造成影響。這點是在凱尼格的《c陷阱與缺陷》裡明確提出的一個c語言的漏洞,解決這個漏洞的方法就是不用形參的時候,括號內加一個void

2:在51微控制器中sbit是針對可位定址空間(20h~2fh)的一個位。sbit大部分是用在暫存器中的,方便對暫存器的某位進行操作的。

而bit是跟int char 等那樣,用來宣告30h~7fh的使用者ram區域的。

這裡的(void)還是參考上面第一個解釋,它是在函式沒有形參時候的一個防止掉入c漏洞的一個解決方法。

3:參考上面第二。

4,如上面一二的解釋,在函式的括號內加上void,說明了這個函式沒有形參。一般情況下等同於不寫void,但為了程式的健壯性和可靠性。貝爾實驗室的資深科學家凱尼格建議加上void。

多提一點就是,像主函式。如void main(void),而我們一般都寫 main(),這樣有兩個隱患,第一是main前面是宣告瞭返回值的資料形式,如果不寫,它應該等同於int main(),雖然在微控制器中,主函式不會給誰返回一個數,但如果程式後面不寫上一個return 0的話,有些編譯器就會亂編譯,致使程式可能出現跑飛的情況。而第二個void 也不要忽視,因為有的編譯器會預設給main幾個形參的。

這樣如果你下面的程式中寫了一個跟這個預設形參相同的變數名時候,就會出現問題了。

2樓:匿名使用者

void ds_reset_1(void)宣告一個函式,該函式無引數無返回值,

bit tmrbit_1(void) 宣告一個函式,該函式無引數,返回值是bit型,只有0,1,兩種取值範圍

bit testb; 這是定義一個位變數,只有0,1,兩種取值範圍

那麼就可以寫成

testb=tmrbit_1();

bit 是keil c 特有的資料型別,建議仔細看看書,在這幾句話也不好說清楚

sbit 和 sfr 這些是特殊功能暫存器定義用的,比如微控制器的 p1口引腳

在程式設計的時候可以寫成p1=0x33;

為什麼可以這樣寫,編譯器,或者說c語言它怎麼知道p1口在那裡?

這就要sfr來定義了

sfr p1=0x90;

因為在微控制器裡面p1口的地址就是0x90,

這樣就可以用p1口

如果要使用p1.0 引腳,比如要寫p1.0=0;

是不可以的,還需要定義

sbit p1_0=p1^0;

只有定義後,就可以使用語句p1_0=0; 這樣p1.0引腳就拉低了

建議仔細看看書

sbit sfr 的定義方法有很多

sbit還有一個非常適用的功能,不防拿出來和大家分享

微控制器有位定址區,位定址區也可以位元組定址,當某程式需要很多的bit變數,但又希望這些bit變數管理起來比較方便,比如微控制器a定義了8個bit變數,收集a內部的某些資訊,現需要將這8個邏輯資訊傳送給微控制器b,

就可這樣使用

char bdata sbuf_t;

sbit sbuf_t0=sbuf_t^0;

sbit sbuf_t1=sbuf_t^1;

sbit sbuf_t2=sbuf_t^2;

sbit sbuf_t3=sbuf_t^3;

.............

這樣8個bit變數sbuf_t0~sbuf_t8 就使用方便了

sbuf_t=0x00;

8個bit變數就全部等於0了

3樓:匿名使用者

引數中寫void的,是無引數的意思,一般是可以省略的,但有些編譯器會有警告,所以建議沒有引數時寫void。

2,3看不太懂。標準c裡是沒有bit這個資料型別的,可能是在程式中作了位定義。sbit也不懂了。你的問題不是很明確,補充一下吧

4樓:匿名使用者

回答的很充分了。佩服!

關於微控制器的一點問題,微控制器的問題

入門的話 最好選擇51微控制器,簡單!網路資源豐富,例程也多,只要感興趣加上堅持。這些功能都能實現。你提的第一個問題51微控制器就可是實現,定時的話微控制器裡面有定時器功能,設定好相應的時間就可以控制燈亮滅,手動控制的話,用按鈕接微控制器io口來控制燈泡亮滅。第二個問題就有點難度了,像你那樣的要求也...

微控制器如何控制鎖,微控制器如何控制一個鎖?

不一定要用繼電器,你等於控制一個電磁鐵而已,用三極體去驅動就可以,你可以用兩級驅動,微控制器驅動一個小三極體,再用這個小 管驅動一個功率管比如mos管來驅動繼電器。 可以用微控制器 ds18b20晶片實現溫度計的功能,再增加一個繼電器,當溫度高於40度,控制繼電器吸合,鎖釦脫離。鎖釦最好做成單方向的...

微控制器問題

很同情你,你們微機原理學過吧,學過就不是很難啊主要是看通用暫存器的組成和程式設計還有中斷下面的看一下就會了,內容不多 4 微控制器的地址空間,地址範圍,訪問方法 5 微控制器的位定址空間範圍和操作方法 6 微控制器各地址空間的資料傳輸方法 原理稍微看下就行了 pwm就放棄吧 再把課後題的選擇做一做 ...