(玩電子) 電子技術學習與研究
當前位置︰單片機教(jiao)程網 >> 基礎教(jiao)程 >> 瀏(liu)覽文章(zhang)

北京福彩网官网

作者(zhe):佚名   來源(yuan):本站原創   點擊數:x  更新lv)奔洌007年07月15日(ri)   【字體︰ 小(xiao)

前面學習了大部分的基本語法,以(yi)下所要學習的各(ge)種基本語句的語法能說(shuo)是組成程序的靈魂。在前面的課程中的例子里,也(ye)簡單理解過一(yi)些(xie)語句的使用(yong)方(fang)法,能看出C語言是一(yi)種結構化的程序設計語言。C 語言供給了相當豐富的程序控制語句。學習掌(zhang)握(wo)這些(xie)語句的使用(yong)方(fang)法也(ye)是單片機C語言學習中的重點。

表(biao)達式語句是最(zui)基本的一(yi)種語句。不一(yi)樣(yang)的程序設計語言都會有不一(yi)樣(yang)的表(biao)達式語句,如VB就是在表(biao)達式後面加入回車就構成了VB 的表(biao)達式語句,而在51單片機的C語言中則是加入分號“;”構成表(biao)達式語句。舉例如下︰

b  =  b  *  10; Count++;

X  =  A;Y  =  B;

Page  =  (a+b)/a-1;

以(yi)上的都是合法的表(biao)達式語句。在我收(shou)到的一(yi)些(xie)網友的 Email 中,發現很(hen)多開(kai)始(shi)學習的朋友一(yi)般在編寫調試程序時忽略了分號“;”,造(zao)成程序不能被正常的編譯(yi)。我本人shuo)木 槭竊謨到編譯(yi)錯誤時先語法是否有誤,這在開(kai)始(shi)學習時一(yi)般會因在程序中加入了全角符號、運算符打錯 漏(lou)掉或沒有在後面加“;”。

在 C 語言中有一(yi)個特殊的表(biao)達式語句,稱為(wei)空語句,它僅僅是由一(yi)個分號“;”組成。 有時候(hou)為(wei)了使語法正確,那麼就要求有一(yi)個語句,但這個語句又(you)沒有實際的運行(xing)效果那麼這 時就要有一(yi)個空語句。說(shuo)起(qi)來就像大家(jia)yi)諭磣孕薜氖焙hou)用(yong)書包(bao)佔位一(yi)樣(yang),呵呵。

空語句通常用(yong)會以(yi)下兩(liang)種使用(yong)方(fang)法。

(1)while,for 構成的nan) 酚錁 竺婕右yi)個分號,形成一(yi)個不執行(xing)其它操(cao)作的空循環體。 我yi)嶧岢3Syong)它來寫等待事lu)?某絛頡4蠹jia)要注意的是“;”號作為(wei)空語句使用(yong)時,要 與語句中有xing)?槌剎糠值姆趾畔嗲穡 nbsp;      for  (;a<50000;a++);第一(yi)個分號也(ye)應該算是 空語句,它會使 a 賦值為(wei) 0(但要注意的是如程序前有 a 值,則 a 的初值為(wei) a 的當前值),最(zui)後一(yi)個分號則使整(zheng)個語句行(xing)成一(yi)個空循環。若此(ci)時 a=0,那麼 for  (;a<50000;a++);就相當

于(yu) for  (a=0;a<50000;a++);我本人習慣(guan)是寫後面的寫法,這樣(yang)能使人更不難(nan)讀明白。 (2)在程序中為(wei)有關語句供給標號,標記(ji)程序執行(xing)的位置,使相關語句能跳轉到要執行(xing)

的位置。這會用(yong)在 goto 語句中xiao)/p>

下面的示(shi)例程序是簡單說(shuo)明 while 空語句的使用(yong)方(fang)法。硬件的功能很(hen)簡單,就是在 P3.7 上 接一(yi)個開(kai)關,當開(kai)關按(an)下lv)P1 上的燈(deng)會全亮(liang)起(qi)來。當然實際應用(yong)中按(an)鈕的功能實現並沒有 這麼的簡單,一(yi)般還要進行(xing)防抖動(dong)處理等qu)/p>

先在我們(men)的實驗板(ban)上加一(yi)個按(an)鈕。電路圖如圖 10-1。


 


 

程序如下︰

#include  <AT89x51.h>

void  main(void)

{

圖 10-1  加了按(an)鈕的實驗電路圖

unsigned  int  a;

do

{

P1  =  0xFF;  //關閉 P1 上的 LED

while(P3_7);  //空語句,等待 P3_7 按(an)下為(wei)低電平,低電平時執行(xing)下面的語句 P1  =  0;  //點亮(liang) LED

for(;a<60000;a++);  //這也(ye)是空語句的使用(yong)方(fang)法,注意 a 的初值為(wei)當前值

}  //這樣(yang)第一(yi)次(ci)按(an)下lv)被嵊幸yi)延時點亮(liang)一(yi)段(duan)時間,以(yi)後按(an)多久就亮(liang)多久

while(1);  //點亮(liang)一(yi)段(duan)時間後關閉再次(ci)判斷 P3_7,如此(ci)循環

}


 

上面的實驗電路已加入了 RS232 串行(xing)口(kou)電路,只要稍微(wei)改變一(yi)下,就能變為(wei)具有仿(fang)真功能的 實驗電路。這個改變的關鍵就是把芯片改用(yong)  SST89C58,並在芯片中燒(shao)入仿(fang)真監控程序。 SST89C58 同樣(yang)也(ye)是一(yi)種 51 架構的單片機,它具有 24K+8K 的兩(liang)個程序存儲區,能選(xuan)擇其 一(yi)做為(wei)程序的啟動(dong)區。只要把一(yi)個叫 SOFTICE.HEX 的監控程序用(yong)支持 SST89C58 的編程器(qi)燒(shao) 錄(lu)到芯片中(使用(yong)編程器(qi)或用(yong) CA 版(ban)的 SST89C58 燒(shao)錄(lu) SOFTICE 的具體方(fang)法和文件能參考 ),就 能把上 面 的電路升級duan)wei)

MON51 仿(fang)真實驗器(qi)。那麼怎麼用(yong)它和 KEIL 實現聯(lian)機仿(fang)真呢?

圖 10-2    項目設置菜shuo)/p>


 

圖 10-3    項目設置 首先要在你(ni)要仿(fang)真的程序項目設置仿(fang)真器(qi)所使用(yong)的驅動(dong),在 Debug 頁中選(xuan)擇對(dui)應本仿(fang)真器(qi)的 KeilMon51 驅 動(dong),如圖 10 中 1 所示(shi)。圖 10-3 的 3 是選(xuan)擇在仿(fang)真時能使用(yong)的工(gong)具窗口(kou),如內存顯示(shi),斷點等等qu)0an) 2 進 行(xing)圖 10-4 中的仿(fang)真器(qi)設置。設置好串行(xing)口(kou)號,波特率(lv),晶體震蕩(dang)器(qi)為(wei) 11.0592M 時選(xuan) 38400。Cache  Options 為(wei)仿(fang)真 緩選(xuan)取(qu)後會加快仿(fang)真的運行(xing)的速度(du)。設好後編譯(yi)運行(xing)程序就能連(lian)接仿(fang)真器(qi)了,連(lian)接成功會出現如圖 10-

5 的畫面。如連(lian)接不成功就出現圖 10-6 的圖,這個時候(hou)能先復ci)壞緶吩侔an)"Try Again",還不成功連(lian)接的話(hua)則 應檢查(cha)軟件設置和硬件電路。圖 10-5 中 1 是指(zhi)示(shi)仿(fang)真器(qi)的固件版(ban)本為(wei) F-MON51V3.4 版(ban)。點擊 3 中xing)『點位置時為(wei)設置和取(qu)消斷點,點擊 2 則運行(xing)到下一(yi)個斷點。圖 10-7 則是變量和存儲器(qi)的查(cha)看。仿(fang)真器(qi)在

軟件大概的使用(yong)方(fang)法和軟件仿(fang)真相差不多。

圖 10-4    仿(fang)真器(qi)設置


 

圖 10-5    仿(fang)真器(qi)連(lian)接成功

圖 10-6    連(lian)接不成功提示(shi)

圖 10-7    變量及內存查(cha)看

發表(biao)評(ping)論(lun)】【告訴好友】【收(shou)藏此(ci)文】【關閉窗口(kou)

北京福彩网官网

北京福彩网官网

北京福彩网官网 | 下一页