單片機復習資料_第1頁
單片機復習資料_第2頁
單片機復習資料_第3頁
單片機復習資料_第4頁
單片機復習資料_第5頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

試卷構成分析以及試題來源試卷構成:共十道題100分1、簡答題(4*10=40分)來源:實驗報告最后的思考題課堂測驗的小紙條上的簡答題主要答案在書上均可以查找到2、程序題(4*8+2*14=60分)小程序題共4題32分,來源于實驗中子程序或者中斷程序實現某一功能還有就是課堂測驗中的小程序。大題為完整的寫出兩段程序,主要來源實驗程序。單片機輔導內容1、AT89S51的并行I/O口P0、P1、P2、P3口的使用

需要注意的是,P0口在使用的時候必須接上拉電阻,P3口具有第二功能定義,應熟記。P3.0RXD

(串行數據輸入口)

P3.1TXD

(串行數據輸出口)

P3.2INT0(外部中斷0)

P3.3INT1(外部中斷1)

P3.4T0(定時器/計數器0外部輸入)

P3.5T1(定時器/計數器1外部輸入)

P3.6WR(外部數據存儲器寫脈沖)

P3.7RD

(外部數據存儲器讀脈沖)在程序中怎樣給I/O口賦值

比如我要點亮一個LED(接P1.1口),該怎樣編寫程序:

匯編:MOVA,0%低電平驅動MOVP1.1,A(A在這里相當于一個寄存器使用)C語言:P1.1=0;(需要注意在程序開頭加這樣一句sbitP1.1,P1^1)這樣的話就比匯編語言要簡潔一些了。當然注意I/O口都是八個口,我要用多個口怎么辦?同學們自己思考,例如我要點亮8位LED數碼管該怎么辦?指令的尋址寄存器尋址:MOVA,Rn(把Rn的值給A)直接尋址:MOVA,40H(把40H里的內容給A)

寄存器間接尋址:MOVA,@Ri(i=0或1)把Ri里的內容內容給A立即數尋址:MOVA,#40H(把40H給A)基址寄存器加變址寄存器間接尋址:MOVCA,@A+DPTRMOVCA,@A+PC

(查表法相對尋址:SJMPrelSJMPLOOOP位尋址:MOVC,bit堆棧操作指令PUSH:這條指令的功能是,首先將棧指針SP加1,然后把direct(操作數的地址)中的內容送到棧指針SP指示的內容RAM單元中。例:當(SP)=60H,(A)=30H,(B)=70H時,執行下列指令PUSHAcc;(SP)+1=61HSP,(A)61HPUSHB;(SP)+1=62HSP,(B)62HPOP:這條指令的功能是,將棧指針SP指示的棧頂(內部RAM單元)內容送入direct字節單元中,棧指針SP減1.例:當(SP)=62H,(62)=70H,(61H)=30H時,執行下列指令POPDPH;((SP))DPH,(SP)-1SPPOPDPL;((SP))DPL,(SP)-1SP特殊說明:PUSHAccPOPAcc這里只能用Acc具體的應用:保護寄存器中的數值例如:LOOP:PUSHR2PUSHAINCR2DECAMOVR3,AMOVR4,R2POPAPOPR2這樣做了以后R2和A的值并沒有改變

關鍵字查找程序設計例:從50個字節的無序表中查找一個關鍵字“31H”并放入51H.ORG0000HMAIN:MOVR1,#50MOVR2,#31HMOVDPTR,#TABLEMOVA,#0LOOP:PUSHAMOVCA,@A+DPTRMOVR4,APOPAINCADJNZR1,L1RETL1:CJNER4,R2,LOOPMOV51H,R4TABLE:DB39H78H78H……..數據極值查找片內RAM中存放一批數據(40個),查出最大值并存放在首地址中。設R0存放在首地址,R2中存放字節數。ORG0000HMAIN:MOVR2,#40HMOVA,R0MOVR1,AMOVA,@R1;取第一個地址里的內容LOOP:MOVR4,AINCR1CLRCMOVR3,@R1;取下一個地址里的內容SUBBA,R3;相減比較JNCLOOP1;C等于0,A中數值較大MOVA,R3;C=1,R3較大,送ALOOP1:MOVA,R4;保存A,以便下一次比較LOOP2:DJNZR2,LOOPMOV@R0,ARET測試字符長度一串字符,依次存放在內部RAM從30H單元開始的連續單元中,字符串以0AH為結束標志,測試字符串長度。MOV R4,#0FFH ;長度計數器初值送R4 MOVR1,#2FH ;字符串指針初值送R1NEXT:

INC R4 INC R1 CJNE@R1,#0AH,NEXT;比較,不等比較下一個 END50ms延時程序DELAY:MOVR7,#200;1usD1:MOVR6,#125;1usD2:DJNZR6,D1;2us*125=250usDJNZR7,D1;2us*200=500usRET;2us單指令執行的時間約為1us,所以可以通過計算得到比較準確的時間。所以總時間為1+(1+250+2)*200+2=50.603ms單個發光二極管閃爍ORG0000HSTART:SETBP1.5LCALLDELAY1SCPLP1.5LCALLDELAY1SAJMPSTARTDELAY1S: MOVR5,#10 D1:MOVR6,#20 D2:MOVR7,#250 DJNZR7,$ DJNZR6,D2 DJNZR5,D1RETEND;主程序voidmain(){ while(1){ p1_5=0; delay(); p1_5=1; delay(); }};頭文件#include<reg52.h>sbitp1_5=P1^5;;延時子程序:

voiddelay(void){unsignedinti,j;for(i=100;i>0;i--){ for(j=110;j>0;j--);}}單個發光二極管閃爍C語言12例如:上題在數碼管中循環顯示0-9

匯編程序:ORG0000HMAIN:MOVDPTR,#TABLEMOVR1,#0LOOP:MOVA,R1MOVCA,@A+DPTRMOVP2,ACALLDELAYINCR1CJNER1,#0AH,LOOPMOVR1,#0LJ

溫馨提示

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

評論

0/150

提交評論