八只LED燈做流水燈試驗(yàn)報(bào)告_第1頁
八只LED燈做流水燈試驗(yàn)報(bào)告_第2頁
八只LED燈做流水燈試驗(yàn)報(bào)告_第3頁
八只LED燈做流水燈試驗(yàn)報(bào)告_第4頁
八只LED燈做流水燈試驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

51LED燈做流水燈試驗(yàn)第一節(jié):單片機(jī)在上電初始后,其各端口輸出為高電平。假設(shè)我們現(xiàn)在想讓接在P1.0LED1P1.0口的電平變?yōu)榈碗娖骄涂梢粤恕O胱孡ED1滅,LED0P1.0上升,P1.1變低,LED1LED2隨后既點(diǎn)亮!依始類8LEDSP-51試驗(yàn)板

”學(xué)習(xí)套件上的相關(guān)圖紙:P1.0低、P1.0高、P1.1低、P1.1高、P1.2低、P1.2高、P1.3低、P1.3高、P1.4低、P1.4高、P1.5低、P1.5高、P1.6低、P1.6高、P1.7低、P1.7高、返回到開頭、程序完畢。P1.1你變低,它就變低了。由于單片機(jī)聽不懂我們的漢語的,只能承受二進(jìn)制的碼。我們又怎樣來用二進(jìn)制語談?wù)撌箚纹瑱C(jī)按我們的意思去工作呢?為了讓單片機(jī)工作,只能將程序?qū)憺槎M(jìn)制代碼交給其執(zhí)行;早期單片機(jī)開發(fā)人員就是使用人工編寫的二進(jìn)制代碼交給單片機(jī)去工作的。

“、0……代”今日,我們不必用煩人的二進(jìn)制去編寫程序,完全可以將我們簡潔理解的 程序語言”通過翻譯”軟件翻譯”成單片機(jī)所需的二進(jìn)制代碼,然后交給單片機(jī)去執(zhí)行。這里的程序語言”目前主要有匯編和C兩種;在這里我們所說的翻譯”軟件,同行們都叫它為編譯器”,將程序語言”通過編譯器產(chǎn)生單片機(jī)的二進(jìn)制代碼的過程叫編譯。前面說到,要想使LED1變8LED流水燈試驗(yàn)寫為匯編語言程序。漢語”語言漢語”語言匯編語言開頭:star:P1.0低clrp1.0P1.0高setbp1.0P1.1低clrp1.1P1.1高P1.2低setbp1.1clrp1.2P1.2P1.2高setbp1.2P1.3低clrp1.3P1.3高setbp1.3P1.4低clrp1.4P1.4高setbp1.4P1.5低clrp1.5P1.5高setbp1.5P1.6低clrp1.6P1.6高setbp1.6P1.7低clrp1.7P1.7高setbp1.7返回到開頭ljmpstar完畢end這里用到了四條匯編指令:clr、setb、Ijmp、end;clr:是將其后面指定的位清為0;setb:是將其后面指定的位置成 1;Ijmp:是無條件跳轉(zhuǎn)指令,意思是:跳轉(zhuǎn)到指定的標(biāo)號(hào)處連續(xù)運(yùn)行。end:是一條告知編譯器:程序到此完畢的偽指令。偽指令只告知編譯器此程序到此有何 要求或條件,它不參與和影響程序的執(zhí)行。這里需要說明的是,按匯編語法要求,所編制的程序〔下稱源程序〕之格式和書寫要求必需依以下原則:1、源程序必需為純文本格式文件,如用 Windows”附件沖的記事本”編寫的文本文件;2、源程序的擴(kuò)展名應(yīng)是*.ASM;3、一行只能寫一條語句,以回車作為本句的完畢,每一語句行長度應(yīng)少于80個(gè)字符〔即40個(gè)漢字〕。4、每行的格式應(yīng)為:標(biāo)號(hào):命令參數(shù);注釋即一行由四部份組成,各部份的挨次不能搞錯(cuò),依實(shí)際要求可以缺省其中的一部份或幾部份,甚至全部省去,即空白行。需要使用標(biāo)號(hào)時(shí)標(biāo)號(hào)后面必需有假設(shè)命令有多個(gè)參數(shù),則參數(shù)與參數(shù)之間必需用

:“”〔冒號(hào)〕,而命令語句和參數(shù)之間必需用空格分開,,“”〔逗號(hào)〕分開,需要注釋時(shí)注釋前必需用 ;”〔分號(hào)〕,;””后面的語句可以寫任何字符,包括漢字用于解釋前面的匯編語句,它將不參與匯編,不生成代碼。由于匯編程序?qū)ξ覀冞€不直觀,所以在編寫源程序時(shí),應(yīng)當(dāng)養(yǎng)成多寫注釋的習(xí)慣,這樣有助于今后源程序的閱讀和維護(hù)。標(biāo)號(hào)是標(biāo)志程序中某一行的符號(hào)名,編譯后標(biāo)號(hào)的數(shù)值就是標(biāo)號(hào)所在行代碼的地址。在宏匯編

ASM51中標(biāo)號(hào)的長度不受限制,但標(biāo)號(hào)中不能包含 :’或其它的一些特別符號(hào),也不能用漢字,可以用數(shù)字作標(biāo)號(hào),但必需用字母開頭。當(dāng)標(biāo)號(hào)作參數(shù)用〔如標(biāo)號(hào)作轉(zhuǎn)移地址〕,在命令后面岀現(xiàn)時(shí),必需舍去LJMPSTARSTAR是不能再有:〕。每行只能有一個(gè)標(biāo)號(hào),一個(gè)標(biāo)號(hào)只能用在一處,假設(shè)有兩行用了同一個(gè)標(biāo)號(hào),則匯編時(shí)就會(huì)出錯(cuò)。由于標(biāo)

:’’〔如上面程號(hào)的長度沒有限制,可以用有意義的英文或漢語拼音來說明行,使源程序讀起來更便利。源程序中的字母不區(qū)分大小寫,也就是說 star和STAR是一樣的,請不要用大小寫方式去區(qū)分不同的標(biāo)號(hào)。好拉!法規(guī)知道了,現(xiàn)在該來看看前面我們編寫的源程序該怎樣處理了:編寫源程序:先將編譯軟件安裝好〔c51eval軟件的安裝〕。軟件安裝好我們就可以編寫程序了。第一步:雙擊圖標(biāo),消滅如圖一Uvw51所示的主界面其次步:建文件單擊菜單欄內(nèi)的文件 建”或者單擊

圖標(biāo)按鈕則在上圖所示的灰色區(qū)域內(nèi)岀現(xiàn)一個(gè)白色的編輯區(qū),圖二第三步:編程程序建立了一個(gè)的編程文件后,我們就可以在這里編寫我們所需要的程序了,下面我們就來編寫前面所說的程序吧。!如圖三所示:第四步:保存文件程序編寫好了,我們固然要記得保存了,要不我們編寫程序就白費(fèi)力了。好了,下面我們將上面編寫的程序保存起來:單擊文件----保存”或者單擊圖標(biāo) ,岀現(xiàn)如圖四所示的對(duì)話框:圖四c51eval保存文件時(shí)默認(rèn)的文件擴(kuò)展是名

*.C,請按圖五所示轉(zhuǎn)變?yōu)闉?.a51:圖五我們這里就先將文件保存在 D/DDW文件夾中,文件名你可以任憑取,這里先叫他為 LED.a51;需強(qiáng)調(diào)的是保存文件的文件夾和文件名不能使用中文!即保存文件時(shí)不能以如下格式保存:

正確的保存路徑:D/DDW/LED.a51固然,保存的文件夾名DDW、編寫的程序的文件名LED,你都可以任憑的取一個(gè),可以是D/ABC/000.a51。這就取決于你的興趣了。 錯(cuò)誤的保存路徑:D/源程序/DDW/LED.a51,或者是D/DDW流水燈程序.a51??傊谠闯绦虻谋4媛窂较虏荒苡兄形牡膶绗F(xiàn),同時(shí)文件名不能取的太長。第五步:建立工程將匯編的源程序保存后,還沒有得到我們所需要的文件,這時(shí)我們還需要再建立工程,以便得到我們所需hex文件。建工程的步驟如下:首先先翻開建工程的對(duì)話框文件,如圖六所示:圖六點(diǎn)擊建工程后岀現(xiàn)如圖七所示的對(duì)話框,我們將對(duì)話框的參數(shù)設(shè)定好。將文件名設(shè)置成與剛剛源程序的文件名一樣,即設(shè)為LED.prj,同時(shí)保存的路徑跟前面的源程序保存的路徑一樣,在 可以把剛剛建立的工程文件LED.prj添加到剛保存的LED.A51源程序上了,留意它們都在同一個(gè)根名目下。圖七按圖七所示操作后,會(huì)消滅如圖八所示的對(duì)話框:圖八點(diǎn)擊圖九按圖九所示完成操作后,軟件會(huì)自動(dòng)翻開一個(gè)對(duì)話框,如圖十所示:圖十如圖十所示點(diǎn)擊保存后,系統(tǒng)會(huì)自動(dòng)回復(fù)到匯編狀態(tài)。如圖十所示點(diǎn)擊保存后,系統(tǒng)會(huì)自動(dòng)回復(fù)到匯編狀態(tài)。這時(shí)點(diǎn)擊*創(chuàng)立全部圖標(biāo)*按鈕,則進(jìn)展了轉(zhuǎn)換,圖十一完成上述操作后,在圖十一,我們看到了創(chuàng)立成功了的提示畫面,這時(shí)我們點(diǎn)擊 0K就大功告成了。翻開我們文件的保存路徑:我的電腦/D/DDW我們可以看到包含hex文件在內(nèi)的全部相關(guān)程序文件了。我們上面的工程文件也在其中了。 他的名字叫作LED.hex文件。好啦,到此我們已將第一個(gè)流水燈程序編寫、編譯、燒寫進(jìn)展完啦,再下來就是將燒寫好的 AT89C51從編程器上取下,放到SP-51試驗(yàn)板”學(xué)習(xí)套件的試驗(yàn)部份通電讓LED1 LED8”流水”說明:由于單片機(jī)的時(shí)鐘高達(dá) 12MHz,8個(gè)LED發(fā)光與熄滅的時(shí)間很短,實(shí)際試驗(yàn)結(jié)果憑我們的肉眼是看不到請連續(xù)學(xué)習(xí)下節(jié)課

流水”燈效果呢?流水燈試驗(yàn)詳解二LED的熄滅與點(diǎn)亮。單片機(jī)內(nèi)部能按部就班的自開工作,正是在系統(tǒng)時(shí)鐘的作用下,內(nèi)部各規(guī)律硬件產(chǎn)生各種所需脈沖信號(hào)而實(shí)現(xiàn)的。這個(gè)時(shí)鐘信號(hào)〔既晶體振蕩信號(hào)〕12MHZ.在單片機(jī)中,要處理最短周期的一條指令需要由

12個(gè)振蕩周期〔既晶振振蕩周8051核的單片機(jī),大多數(shù)指令只用一個(gè)機(jī)器周期〔既單周期〕,也有雙周期和四周期的指令。本試驗(yàn)中用到的SETBP.xCLRP.x均屬于單周期指令,也就是說,執(zhí)行一句SETBP.x用時(shí)1uS〔微秒〕CLRP.x1uS;難怪我們前面的程序不能看到流水效果。DDW:CLR;程序開頭P1.0;DDW:CLR;程序開頭P1.0;LED1亮ACALLDELAYSETBP1.0;調(diào)用延時(shí)子程序;LED1滅CLRP1.1;換燈,同上帚CLRP1.4曠ACALLDELAYSETBP1.4

現(xiàn)在,將程LED熄滅,連續(xù)執(zhí)行下ACALLDELAYSETBP1.1?CLRP1.2ACALLDELAYSETBP1.2?CLRP1.3?ACALLDELAY?SETBP1.3?CLRP1.5曠ACALLDELAY?SETBP1.5?CLRP1.6?ACALLDELAY?SETBP1.6?CLRP1.7?ACALLDELAY?SETBP1.7?LJMPDDW;返回到開頭循環(huán)DELAY:?;延時(shí)子程序MOVR1,#50AD10:?MOVR2,#100帚AD11:?MOVR3,#100?DJNZR3,$?DJNZR2,AD11?DJNZR1,AD10?RET;延時(shí)子程序完畢,返回到調(diào)用處的下一句END?請將上面的程序保存為ILED.asm,進(jìn)展編譯,并燒寫到AT89S51中,之后將89S51安裝到套件的試驗(yàn)部份插座上試驗(yàn),RET;延時(shí)子程序完畢,返回到調(diào)用處的下一句END?機(jī)內(nèi)部有不少存放器,這些存放器在單片機(jī)通電時(shí),你可以給他寫入數(shù)據(jù)〔是單片機(jī)按你程序要求寫的數(shù)據(jù),而不是編程器寫的〕,當(dāng)其次次給他寫入數(shù)據(jù)時(shí),前次的數(shù)據(jù)就被數(shù)據(jù)掩蓋;固然也可以從存放器中讀取數(shù)據(jù)。當(dāng)單片機(jī)沒有電源供給時(shí),存放器內(nèi)部的數(shù)據(jù)也隨即消逝;這些存放器人們叫他用編程器將我們編寫的程序燒寫到單片機(jī)中的存儲(chǔ)器叫

RAM而ROM現(xiàn)在,我們應(yīng)當(dāng)清楚:RAM是讓程序去使用的,ROM!我們編寫的程序存放的地方! 前面說過,單片機(jī)內(nèi)部有不少 RAM本試驗(yàn)用的AT89C51有多少存放器?我們現(xiàn)在不必關(guān)心,現(xiàn)在只須知道單片機(jī)內(nèi)部知名叫 R0~R7的這8個(gè)存放器。這8個(gè)存放器每個(gè)都由8個(gè)單獨(dú)的位存放器組成,最大存放數(shù)據(jù)為二進(jìn)制的時(shí)留意不要大于其有效范圍。上面延時(shí)程序中,先用到

11111111,十六進(jìn)制=FF,十進(jìn)制=255。在使用MOVR1,#50,MO\是移動(dòng)的意思,該句是將50這R1中;50是馬上數(shù),按匯編語言要求前面要加“面要加“?H”,十六進(jìn)制數(shù)的高位是字母時(shí)在字母前面還要加“

#”號(hào),匯編語言還規(guī)定,十六進(jìn)制數(shù)后0”,例如:#0F8H;二進(jìn)制數(shù)后面加“B”,例如:#11110000B。十進(jìn)制不加,例如:#100。延時(shí)程序的其次、三句為: MOVR2,#100;MOVR3,#100;這兩句意思同前。第四句中 DJNZR3,$的意思是將R3里面的數(shù)減1后假設(shè)R3不等于0則跳到后面指定的程序位置,這里的“$”既要跳轉(zhuǎn)的程序位置,“$”代表當(dāng)前語句處,也就是說, R3不等于0,程序返回再次執(zhí)行本句。假設(shè)R3減1后等于0,程序完畢本句,連續(xù)執(zhí)行下面的語句。延時(shí)程序的最終一句是RET,意思是退岀本子程序,返回到調(diào)用本子程序處的下一句。依據(jù)上面的解釋,一進(jìn)入延時(shí)子程序首先為R1,R2,R3存放器裝入我們需要的數(shù)據(jù),然后先對(duì) R3進(jìn)展減數(shù),每次減1,R3減完后減R2,減R2時(shí)就費(fèi)事啦,由于R2每減1后不為0需要跳轉(zhuǎn)到AD11標(biāo)號(hào)處執(zhí)行下面的語句,此時(shí)R3再次裝入數(shù)據(jù)100,并且還要再次對(duì)R3進(jìn)展減數(shù)……,R2減完后減R1,減R1的過程你爭論爭論看看。 每執(zhí)行DJNZ?Rn,rel〔RnR0~R7,rel指轉(zhuǎn)移地址〕指令一次,需要2個(gè)機(jī)器周期,單片機(jī)需耗時(shí)2uS〔指本試驗(yàn)〕,假設(shè)無視裝數(shù)等語句,延時(shí)子程序從開頭到完畢,單片機(jī)共耗時(shí) 100*100*50*2nS,既1000000uS=1秒!假設(shè)加上裝數(shù)等語句的耗時(shí),延時(shí)時(shí)間大于1秒。到此,我們做的流水燈已成功,原理大致也明白啦,假設(shè)你自認(rèn)為這一課你完全明白了,那請你將“流水燈”的流向轉(zhuǎn)變一下,也可以改為兩邊向內(nèi)流,內(nèi)部向外流……,我想你確定能用前面學(xué)到的方法實(shí)現(xiàn)這些功能??赡苡行└呤终f,前面的編程方法是最最笨的!,不錯(cuò)!但玩單片機(jī)初期不必講究語言的簡練,只要能完成預(yù)先要求就好,這是初學(xué)者要知道的。那么還有更好的編程思路嗎?有!請連續(xù)學(xué)習(xí)下節(jié)課做流水燈試驗(yàn)詳解三在上節(jié)課中讓LED流水是去逐個(gè)把握P1端口的每個(gè)位來實(shí)現(xiàn)的,那么我們在程序一開頭就給P1口送一個(gè)數(shù),這個(gè)數(shù)本身就讓P1.0先低,其他位為高,然后讓這個(gè)數(shù)據(jù)向高位移動(dòng)不就實(shí)現(xiàn)如此!惋惜,8051P1數(shù)據(jù)移動(dòng)的指令,但有對(duì)累加器ACC中數(shù)據(jù)左移或右移的指令,

流水”效果啦?確實(shí)ACC8051單片機(jī)內(nèi)部算術(shù)規(guī)律單元中的一個(gè) 存放器”〔這里叫他存放器是不正確的,但你可以先這樣理解, ACC在指令中常寫為A〕,他在數(shù)據(jù)傳輸和數(shù)據(jù)處理過程中作用格外重要, ACC為8位。他可與片內(nèi)全部單

P1和其他端口在單片機(jī)中也是一個(gè)存放器。這樣我們可以將需移動(dòng)的數(shù)據(jù)的數(shù)據(jù)〔11111110〕;因上句送到?p1的數(shù)據(jù)〔11111110〕;因上句送到?p17程序如下:DDW:?;開頭MOVMOVACC,#0FE tACCLED1熄滅HP1,ACC ;ACCP1口MOVR0,#7LOOP:?8位流水過程;數(shù)據(jù)移動(dòng)循環(huán)RlA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論