上課到這一課相隔了好長(cháng)一段時(shí)間,這些日子里收到不少網(wǎng)友的來(lái)信支持和鼓勵,要求盡快完成余下的部分。出門(mén)在外的人不得不先為吃飯而努力,似乎這也成為我的借口,以后每晚抽空打一些吧這樣大家也就可以不用隔太久就能看到一些新東西?;蛟S我的筆記并不是很正確,但我盡量的保證每課的實(shí)驗都會(huì )親自做一次,包括硬件的部分,已求不會(huì )誤人子弟。 隨著(zhù)訪(fǎng)問(wèn)量不斷的增加,網(wǎng)站已啟用了www.cdle.net的國際域名,在這里我感謝各位一直支持磁動(dòng)力工作室的朋友,更要感激身在遠方一直默默支持我的女友。 明浩 2003-7-14 晚 呵,費話(huà)少說(shuō)了。上兩課說(shuō)了常量和變量,先來(lái)補充一個(gè)用以重新定義數據類(lèi)型的的語(yǔ)句吧。這個(gè)語(yǔ)句就是typedef,這是個(gè)很好用的語(yǔ)句,但我自己卻不常用它,通常我定義變量的數據類(lèi)型時(shí)都是使用標準的關(guān)鍵字,這樣別人可以很方便的研讀你的程序。如果你是個(gè)DELPHI編程愛(ài)好者或是程序員,你對變量的定義也許習慣了DELPHI的關(guān)鍵字,如int類(lèi)型常會(huì )用關(guān)鍵字Integer來(lái)定義,在用C51時(shí)你還想用回這個(gè)的話(huà),你可以這樣寫(xiě): typedef int integer; integer a,b;
這兩句在編譯時(shí),其實(shí)是先把integer定義為int,在以后的語(yǔ)句中遇到integer就用int置換,integer就等于int,所以a,b也就被定義為int。typedef不能直接用來(lái)定義變量,它只是對已有的數據類(lèi)型作一個(gè)名字上的置換,并不是產(chǎn)生一個(gè)新的數據類(lèi)型。下面兩句就是一個(gè)錯誤的例子: typedef int integer; integer = 100;
使用typedef可以有方便程序的移植和簡(jiǎn)化較長(cháng)的數據類(lèi)型定義。用typedef還可以定義結構類(lèi)型,這一點(diǎn)在后面詳細解說(shuō)結構類(lèi)型時(shí)再一并說(shuō)明。typedef的語(yǔ)法是 typedef 已有的數據類(lèi)型 新的數據類(lèi)型名
運算符就是完成某種特定運算的符號。運算符按其表達式中與運算符的關(guān)系可分為單目運算符,雙目運算符和三目運算符。單目就是指需要有一個(gè)運算對象,雙目就要求有兩個(gè)運算對象,三目則要三個(gè)運算對象。表達式則是由運算及運算對象所組成的具有特定含義的式子。C是一種表達式語(yǔ)言,表達式后面加";"號就構成了一個(gè)表達式語(yǔ)句。 賦值運算符 對于"="這個(gè)符號大家不會(huì )陌生的,在C中它的功能是給變量賦值,稱(chēng)之為賦值運算符。它的作用不用多說(shuō)大家也明白,就是但數據賦給變量。如,x=10;由此可見(jiàn)利用賦值運算符將一個(gè)變量與一個(gè)表達式連接起來(lái)的式子為賦值表達式,在表達式后面加";"便構成了賦值語(yǔ)句。使用"="的賦值語(yǔ)句格式如下: 變量 =表達式; 示例如下 a =0xFF; //將常數十六進(jìn)制數FF賦于變量a b =c = 33; //同時(shí)賦值給變量b,c d =e; //將變量e的值賦于變量d f =a+b; //將變量a+b的值賦于變量f
由上面的例子可以知道賦值語(yǔ)句的意義就是先計算出"="右邊的表達式的值,然后將得到的值賦給左邊的變量。而且右邊的表達式可以是一個(gè)賦值表達式。 在一些朋友的來(lái)信中會(huì )出現"=="與"="這兩個(gè)符號混淆的錯誤原碼,問(wèn)為何編譯報錯,往往就是錯在if (a=x)之類(lèi)的語(yǔ)句中,錯將"="用為"=="。"=="符號是用來(lái)進(jìn)行相等關(guān)系運算。 算術(shù),增減量運算符 對于a+b,a/b這樣的表達式大家都很熟悉,用在C語(yǔ)言中,+,/,就是算術(shù)運算符。C51中的算術(shù)運算符有如下幾個(gè),其中只有取正值和取負值運算符是單目運算符,其它則都是雙目運算符: + 加或取正值運算符 - 減或取負值運算符 * 乘運算符 / 除運算符 % 取余運算符 算術(shù)表達式的形式: 表達式1 算術(shù)運算符 表達式2
如:a+b*(10-a), (x+9)/(y-a)
除法運算符和一般的算術(shù)運算規則有所不同,如是兩浮點(diǎn)數相除,其結果為浮點(diǎn)數,如10.0/20.0所得值為0.5,而兩個(gè)整數相除時(shí),所得值就是整數,如7/3,值為2。像別的語(yǔ)言一樣C的運算符與有優(yōu)先級和結合性,同樣可用用括號"()"來(lái)改變優(yōu)先級。這些和我們小時(shí)候學(xué)的數學(xué)幾乎是一樣的,我也不必過(guò)多的說(shuō)明了。 :( 還有這么多運算符呀!暫時(shí)停一停吧,我們先來(lái)做一個(gè)實(shí)驗吧。學(xué)習運算符和另外一些知識時(shí),我們還是給我們的實(shí)驗板加個(gè)串行接口吧。借助電腦轉件直觀(guān)的看單片機的輸出結果,以后我還會(huì )用一些簡(jiǎn)單的實(shí)例講解單片機和PC串口通訊的簡(jiǎn)單應用和編程。如果你用的是成品實(shí)驗板或仿真器,那你就可以跳過(guò)這一段了。 在制作電路前我們先來(lái)看看要用的MAX232,這里我們不去具體討論它,只要知道它是TTL和RS232電平相互轉換的芯片和基本的引腳接線(xiàn)功能就行了。通常我會(huì )用兩個(gè)小功率晶體管加少量的電路去替換MAX232,可以省一點(diǎn),效果也不錯(如有興趣可以查看http://www.cdle.net網(wǎng)站中的相關(guān)資料)。下圖就是MAX232的基本接線(xiàn)圖。
|
評論