河北工業大學計算機硬件基礎課答案講解_第1頁
河北工業大學計算機硬件基礎課答案講解_第2頁
河北工業大學計算機硬件基礎課答案講解_第3頁
河北工業大學計算機硬件基礎課答案講解_第4頁
河北工業大學計算機硬件基礎課答案講解_第5頁
已閱讀5頁,還剩47頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

實驗一 熟悉鍵盤操作及數傳指令編程設計一、 實驗目的1.熟悉軟件模擬調試的環境及鍵盤操作。2.掌握匯編語言程序設計的方法,加深對指令的理解。3.學會軟件模擬調試和察看修改觀察項的方法。二、實驗內容印證數據傳送指令的功能、尋址方式以及PC指針、SP指針、DPTR指針、Ri指針分別對代碼段、堆棧段、外擴數據存儲器段、位尋址區等不同存儲器的訪問方式。三、實驗步驟1.進入調試軟件環境,輸入源程序;2.匯編源程序;3.用單步方式運行程序;4.檢查并記錄各寄存器和存儲單元內容的變化。四、程序清單內部RAM數據傳送需要查看的數據有30H,31H,A,R0等。ORG0000HMOVR0,#30H(R0)←30HMOV30H,#45H(30H)←45HMOV31H,#46H(31H)←46HMOVR2,30H(R2)←45HMOV02H,31H(02H)←46HMOVA,#87H(A)←87HMOV0E0H,30H(A)←45HMOV30H,A(30H)←45HMOV31H,@R0(31H)←45HSJMP$END最終結果 :(30H) ←45H (31H) ←45H (A) ←45H (R0) ←30H外部數據傳送需要查看的數據有外部數據存儲器單元2000H,外部程序存儲器單元2001H。ORG0000HMOV

A,#89H

(A)←89HMOV

DPTR,#2000H

設DPTR指針地址MOVX@DPTR,A(2000H)←89HINCDPTR(DPTR)←2001HCLRA(A)←0MOVCA,@A+DPTR(A)←78HSJMP$ORG2000HDB44HDB78HDB 67HEND最終結果 :(2000H) ←89H (2001H) ←78H堆棧操作需要查看的數據有50H、51H、A及SP指針和堆棧區中數據隨PUSH和POP指令執行后的變化情況和數據的存放次序等。可用于保護現場和恢復現場的程序ORG0000HMOVSP,#5FH設棧頂指針地址MOV50H,#3BH(50H)←3BHMOV51H,#2FH(51H)←2FHMOVA,#12H(A)←12HPUSH50H入棧(60H)←3BHPUSH51H(61H)←2FHPUSHACC(62H)←12HPOP0E0H出棧(0E0H)←12HPOP51H(51H)←2FHPOP50H(50H)←3BHSJMP$END可用于數據交換的程序ORG0100HMOVSP,#6FH設棧頂指針地址MOV50H,#3BH(50H)←3BHMOV51H,#2FH(51H)←2FHPUSH50H入棧(70H)←3BHPUSH51H(71H)←2FHPOP50H出棧(50H)←2FHPOP51H(51H)←3BHSJMP$END數據交換記錄每條指令運行后的結果,從而加深對各種不同的交換指令的理解。ORG0000HMOVA,#58H(A)←58HSWAPA(A)=85HMOV40H,A(40H)←85HMOVA,#30H(A)←30HMOVR0,#30H(R0)←30HMOV@R0,#09H(30H)←09HXCHDA,@R0(A)=39H(30H)=00HMOV50H,#1(50H)←01HMOVA,#89H(A)←89HXCHA,50H(50H)=89H(A)=01HMOVR7,#3(R7)←03HXCHA,R7(A)=03H(R7)=01HXCHA,@R0(30H)=03H(A)=00HSJMP$END五、思考題1.寄存器尋址與寄存器間接尋址有什么區別?答:寄存器是將操作數存放在寄存器中,得到了寄存器就得到了操作數.寄存器間接尋址是將指令指定的寄存器內容作為操作數的地址.該地址所指定的單元內容作為被尋找的操作數.寄存器間接尋址用@R0(0,1)或@DPTR表示,以區別寄存器間接尋址.2.PC指針與SP指針有什么區別?答:PC是一個16位的程序地址寄存器,其內容是當前執行指令的下一條指令在程序地址寄存器的地址,尋址范圍達64KB,PC具有自動加一的功能。PC單元本身沒有地址,是不可尋址的,用戶無法對其進行讀寫。在堆棧時,SP指針用來存放棧頂地址。SP指針為8位,在片內128B內的RAM中開辟棧區,并隨跟蹤棧頂地址。SP初始化為07H,只有在進行堆棧操作時,SP指針才會變化。在進行入棧操作時,SP指針自動加1,然后將操作數存入SP指針所指地址。當進行出棧操作時,SP指針將操作數彈入所選地址,然后自動減 13.DPTR指針與Ri(R0,R1)指針有什么區別?答:用Ri(0,1)指針可以尋址片內 RAM低128B,用DPTR作為間接尋址器, 可尋址片外數據存儲器的 64KB區域。Ri(0,1)與P2配合使用時,用 Ri(0,1)指示低8位地址。P2口輸出高 8位地址??蓪ぶ菲鈹祿鎯ζ骰?I/O的64KB的區域,DPTR指針還可以訪問外部 ROM和擴展I/O接口時的地址。4.立即尋址與直接尋址有什么區別?答:立即尋址:指令直接給出操作數;直接尋址:指令中直接給出操作數所在的單元地址或位地址。同一個特殊功能寄存器不同表達形式。答:在直接尋址時,寄存器ACC可以表示為ACC、OEOH,Cy、0D7H、PSW.7、0D0H.7都可以表示 Cy,PSW可以表示為 0D0H。實驗二 數傳指令和算數運算指令編程設計一、 實驗目的1.掌握數據塊的傳送操作和算術運算指令的應用。2.進一步掌握匯編語言設計和調試方法。3.掌握觀察窗口的使用方法。4.學會給存儲單元賦初值的方法。二、實驗內容1.數據區傳送1)把內部RAM40H~4FH置初值0A0H~0AFH;2)而后把40H~4FH內容傳送到外部RAM9800H~980FH中;3)再把9800H~980FH內容傳送到50H~5FH中。.多字節十進制加法加數放在30H開始的單元中(最低位放在30H,按從小到大的順序存放),被加數和結果存放在20H開始的單元(最低位在20H中),字節數放在2FH中,最高進位位放在位地址7FH單元中。三、 實驗步驟1.分別用單步和連續運行方式,調試上述兩個程序;2.在執行第二個程序之前,給被加數和加數單元賦初值;3.在觀察窗口中觀察結果。四、 實驗程序清單1.數據塊傳送程序:ORG0000HMAIN:MOVR0,#40H(R0)←40HMOVR2,#10H(R2)←10HMOVA,#0A0H(A)←0A0HA1:MOV@R0,A(40H)←0A0HINCR0(R0)=41HINCA(A)←0A1HDJNZR2,A1循環指令,循環16次,(A)=0A0H(A)=0B0H(R0)=50HMOVR0,#40H(R0H)←40HMOVDPTR,#9800H設DPTR指針地址MOVR2,#10H(R2)←10HA2:

MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZR2,A2MOV R0,

#50H

(A)←0A0H(9800H)←0A0H(R0)←41H(DPTR)=9801H循環指令(980FH)=0A0FH

(A)=0B0H(R0)=50HA3:

MOVDPTR,#9800HMOVR2,#10HMOVXA,@DPTRMOV@R0,AINCDPTRINCR0DJNZR2,A3

(DPTR)=9800H(R2)←10H(A)←0A0H(50H)←0A0H(DPTR)=9801H(R0)=51H循環 16次,

(A)=0AFH(5FH)=0AFH(R0)=60H

(DPTR)=9810HSJMP$END2.多字節十進制加法:先賦初值:(30H)=03H (31H)=02H (32H)=01H(20H)=02H (21H)=04H (22H)=07HORG0000HMAIN:MOVR0,#30H(R0)←30HMOVR1,#20H(R1)←20HMOV2FH,#04H(2FH)←04H,為4字節數CLRCCY清零DA1:MOVA,@R0(A)←03HADDCA,@R1(A)←(A)+(20H)DAA進行十進制調整MOV@R1,A(20H)←05HINCR0(R0)=31HINCR1(R1)=21HDJNZ2FH,DA1循環4次,(20H)=05H(21H)=06H(22H)=08H(R0)=34H(R1)=24HMOV7FH,CC記錄最高進位位(7FH)=0SJMP$END五、思考題1.若兩個數據塊都在外部數據存儲器中,如何實現數據塊的傳送?要用寄存器間接尋址。指令為 MOVDPTR,#1010HMOVA,@DPTRMOV@R0,A指令時將 1010H內容送入R0內容所在地址2.在調試第一個程序時,若不用程序給 40H~4FH賦初值,而用鍵盤在 CPUDATA區給40H~4FH單元預賦初值,如何做?打開“視圖”菜單,選擇“存儲器窗口” ,彈出存儲器對話框,在 MEMORY2地址欄中鍵入“D:0X00”回車,建立內部數據存儲器的觀察窗口。找到 40H—4FH所在位置,分別雙擊40H—4FH所在位置,當有光標出現時,用鍵盤輸入初值。3.若把第二個程序改為無符號數的減法,怎樣修改程序?ORG0000HMAIN: MOVR0,#30HMOVR1,#20HMOV2FH,#04HCLRCDA1: MOVA,@R0

;存入減數;存入被減數SUBBA,@R1DA AMOV@R1,AINCR0INCR1DJNZ2FH,DA1MOV7FH,CSJMP$END4.在第二個程序中,若兩數的和存放到從 40H開始的單元,如何修改程序?ORG0000HMAIN: MOVR0,#30HMOVR1,#20HMOV2FH,#04HMOVDPTR,#40HDA1: MOVA,@R0ADDCA,@R1DA AMOVX@DPTR,AINCR0INCDPTRDJNZ2FH,DA1MOV7FH,CSJMP$END實驗三 邏輯運算及位操作指令編程設計一、實驗目的(1) 熟悉字節邏輯運算指令功能。(2) 熟悉位操作指令運算功能。(3)從而更深入的掌握匯編語言程序設計。(4)學會觀察 CPU窗口中BIT區的變化。二、實驗內容存入

1.字節邏輯運算程序在片內RAM的FIRST和SECOND單元中各有一符號數RESULT單元中(設運算結果仍為 8位數)。

X和

Y,要求按下列條件算出

Z,X+Y X為正奇數X∧Y X為正偶數Z=X∨Y X為負奇數X∨Y X為負偶數FIRST EQU 30HSECOND EQU 31HRESULT EQU 32HORG 0000HSTART :MOV R0,FIRSTMOV

A

R0JB

ACC.7,NEGMOV

B,#2DIV

ABMOV

A,BJZ

TEMP1MOV

A,R0ADD

A,SECONDSJMP RESTEMP1:MOV A,R0ANL A,SECONDSJMP RESNEG:CPL ACC.7MOV B,#2DIV ABMOV A,BJZ TEMP2MOV A,R0ORL A,SECONDSJMP RESTEMP2:MOV A,R0XRL A,SECONDRES:MOV RESULT,ASJMP $END.位操作程序布爾電路圖如下:BIT00HBIT01HBIT02HBIT03HORG0000HSTART:MOVC,Z(C)←02HANLC,/Y(C)=02H利用ANL與ORLMOVF,C(03H)←02HMOVC,Y(C)←01H來產生異或的效果ANLC,/Z(C)=01HORLC,F(C)=03HMOVF,C(F)←03HMOVC,X(C)←00HANLC,Y(C)=00HORLC,/F(C)=0FCHMOVF,C(F)←0FCHSJMP$END運算結果為(03H)=0FCH3.拆字程序把外部數據存儲器2000H單元的內容拆開,其高四位送2001H低四位,低四位送2002H低四位,2001H、2002H高四位清零。需要檢查2000H、2001H和2002H單元的內容。程序清單ORG0000HMOVDPTR,#2000H

(DPTR)←2000HMOVXA,@DPTR

(A)←18HMOVB,ASWAPA

(B)←18H(A)=81HANLA,#0FHINCDPTR

(A)=01H(DPTR)=2001HMOVX@DPTR,A

(2001)

←01HINCDPTR

(DPTR)=2002HMOVA,BANLA,#0FHMOVX@DPTR,A

(A)←18H(A)=08H(2002)=08HSJMP$END最終結果:(2000)=18H(2001)=01H(2002)=08H開始2000H內容送A高低位交換,屏蔽高位后送2001H2000H內容送A屏蔽高位后送 2002H結束程序框圖4.拼字程序把外部數據存儲器 2000H、2001H單元的低四位分別送 2002H高低四位。需要察看開始2000H內容送A,屏蔽高位高低位交換,送 B2001H

內容送

A,屏蔽高位A和

B或后送

2002H2000H、2001H

結束2002H單元內容。程序框圖:程序清單ORG0000HMOVDPTR,#2000H

(DPTR)←2000HMOVXA,@DPTR

(A)←18HANLA,#0FH

(A)=08HSWAPA

(A)=80HMOVB,A

(B)←80HINCDPTR

(DPTR)=2001HMOVXA,@DPTRANLA,#0FHORLA,BINCDPTRMOVX@DPTR,ASJMP$END

(A)←34H(A)=04H(A)=84H(DPTR)=2002H(2002)=84H三、

思考題1.字節與位邏輯運算指令在編程上什么區別?應注意什么?字節邏輯運算指令有 ANL,ORL,XRL,RL,RLC,RR,RRC,CLR,CPL。位邏輯運算指令有ANL,ORL,/bit, 并且位操作指令的操作數是字節中的某一位, 每位只取0或1,位操作指令只能用累加器 C.2.若把兩位十六進制數轉換成對應的

ASCII

碼,應如何編寫程序?ORG0000HMOVR0,#30HMOV37H,#02HCLRCDA1:MOVA,@R0CJNEA,#10,AA1: JCA3ADDA,#37HA2:A3:A4:

MOV@R0,AINCR0DJNE37H,DA1SJMPA4ADDA,#30HSJMPA2SJMP$END3.采用其它方法設計第一個程序。FIRST EQU 30HSECOND EQU 31HRESULT EQU 32HORG 0000HSTART :MOV R0,FIRSTMOV

A

,

R0JB

ACC.7,NEGMOVB,#2DIVABMOVA,BJNZTEMP1MOVA,R0JBACC.7,A1ANLA,SECONDSJMPRESA1:CPLACC.7XRLA,SECONDSJMPRESTEMP1:MOVA,R0JBACC.7,A2ADDA,SECONDSJMPRESA2:CPLACC.7ORLA,SECONDRES:MOVRESULT,ASJMP$END4.如何用斷點方式調試本程序?在開始調試時用斷點按鈕和光標配合設定斷點,然后在調試一欄選擇執行到光標處實驗四 代碼轉換一、實驗目的1.掌握各種代碼轉換的算法,加深對各種數據編碼的理解。2.學會軟件模擬調試和察看修改觀察項的方法來觀察轉換結果。一、 實驗內容1.分析清楚個程序的功能。2.調試各種代碼轉換的程序。三、實驗步驟1.進入調試軟件環境,輸入源程序;2.匯編源程序;3.用單步或全速方式運行程序;4.查看最終結果。四、程序清單1.十六進制數 ASCII 碼將十六進制數據 08H,0CH轉換成ASCII碼,轉換結果存入 30H,31H兩個單元中,再將30H,31H兩個單元中的數據分別增 1,然后轉換成十六進制數存入 40H,41H兩個單元中。ORG0000HMOVSP,#2FH設棧頂地址MOVA,#08H(A)←08HADDA,#30H(A)=38HPUSHACC入棧(30)=38HMOVA,#0CH(A)←0CHADDA,#37H(A)←43HPUSHACC入棧(31H)=43HMOVA,30H(A)←38HINCA(A)=39HCLRCCY清零SUBBA,#30H(A)=09HMOV40H,A(40H)←09HPOPACC出棧(A)=43HINCA(A)=44HSUBBA,#37H(A)=0DHMOV41H,A(41H)←0DHPOPACC出棧(A)=38HSJMP$END最終結果:(30H)=38H(31H)=43H(40H)=09H(41H)=0DH2.二進制數BCD碼將二進制數10011011B轉換成BCD碼數,存入30H和31H單元中;再將30H單元中的數據加16H后,轉換成二進制數據,存入40H單元中。ORG0000HMOVA,#10011011B(A)=98HMOVB,#100(B)=64HDIVAB(A)=01H(B)=37HMOV30H,A(30H)←01HMOVA,B(A)←37HMOVB,#10(B)=0AHDIVAB(A)=05H(B)=0AHSWAPA(A)=50HORLA,B(A)=55HMOV31H,A(31H)=55HMOVA,30H(A)=01HADDA,#16H(A)=17HDAA十進制調整PUSHACC(08H)=17HANLA,#00001111B(A)=07HMOV40H,A(40H)=07HPOPACC(A)=17HANLA,#11110000B(A)=10HSWAPA(A)=01HMOVB,#10(B)=0AHMULAB(A)=0AH(B)=00HADDA,40H(A)=11HMOV40H,A(40H)=11HSJMP$END最終結果:(30H)=01H(31H)=55H(40H)=11H3.BCD碼ASCII碼將20H單元中壓縮的BCD碼數78H轉換成ASCII碼,轉換結果存入30H,31H兩個單元中,再將30H,31H兩個單元中的數據分別增1,然后轉換成壓縮BCD碼數存入21H單元中。ORG0000HMOVA,20H(A)←78HANLA,#00001111B(A)=08HADDA,#30H(A)=38HMOV30H,A(30H)←38HPUSHACC(08H)=38HMOVA,20H(A)←78HANLA,#11110000B(A)=70HSWAPA(A)=07HADDA,#30H(A)=37HMOV31H,A(31H)←37HINCA(A)=38HCLRCCY清零SUBBA,#30H(A)=08HMOVR2,A(R2)←08HPOPACC(A)=38HINCA(A)=39HCLRCCY清零SUBBA,#30H(A)=09HSWAPA(A)=90HORLA,R2(A)=98HMOV21H,A(21H)←98HSJMP $END最終結果:(21H)=98H5.自選程序設計六、 思考題如何查看上面三個程序的結果。第一個程序:調試時,打開“視圖”菜單,選擇“存儲器窗口”,彈出存儲器對話框,在MEMORY2地址欄中鍵入“ D:0X00”回車,建立內部數據存儲器的觀察窗口。找到30H,31H,40H,41H所在位置,打開“調試”菜單,選擇單步,按 F10鍵,隨著指針的變化,觀察 30H,31H,40H,41H內容的變化。第二個程序,第三個程序步驟同第一個程序。2. 在程序1中,如果十六進制數未指定是否包含A~F數碼,程序應如何修改?ORG0000HMOV SP,#2FHCLR CLCALLA0PUSHACCMOV A,30HINC ACLR CLCALLA4MOV 40H,APOPACCINC ALCALLA4MOV 41H,ASJMP $A0: CJNEA,#10,A1A1: JCA3ADDA,#37HA3: ADDA,#30HRETA4: CJNEA,#40H,A5A5: JCA6SUBBA,#30HRETEND在程序2中,如果要轉換的二進制數是十六位的,程序應如何編寫?十六進制數轉換成ASCII碼與BCD碼數轉換成ASCII碼有何區別?十六進制數轉化時需要以十為標準確定給這個數加 30H還是37H,而BCD碼的轉換不必進行判斷,直接加 30H即可實驗五 移位操作一、實驗目的:掌握移位操作的方法,并理解左移或右移與乘除法運算的關系。二、實驗內容:1.雙字節二進制數左移一位將兩個內部RAM31H和30H單元中的內容組成的雙字節數通過Cy左移一位。功能示意圖31H 30HCy程序清單ORG0000HCLRCY清零MOVA,30H(A)←12HRLCA(A)=24HMOV30H,A(30H)←24HMOVA,31H(A)←23HRLCA(A)=46HMOV31H,A(31H)←46HSJMP$END雙字節數2312H左移一位后變成4624H2.多字節二進制數右移一位將三個內部RAM32H、31H和30H單元中的內容組成的三字節數通過Cy右移一位。功能示意圖32H31H30HCy程序清單ORG0000HCLRCCY清零MOVA,32H(A)←45HRRCA(A)=22HCY=1MOV32H,A(32H)=22HMOVA,31H(A)←23HRRCA(A)=91HMOV31H,A(31H)←91HMOVA,30H(A)←12HRRCA(A)=89HCY=0MOV30H,A(30H)←89HSJMP$END三字節數452312H右移一位后變成229189H三、思考題1.多于三個字節的移位操作如何進行?設有N個字節ORG0000HMOV20H,#NHMOVDPTR,#30HCLRCA1:MOVXA,@DPTRRRCAMOVX@DPTR,AINCDPTRDJNE20H,A1SJMP$END2.如果不通過 Cy如何移位?實現的功能有何不同?將RLC、RRC命令更改為RL、RR命令通過CY移位會影響CY標志位,不通過CY移位,不會影響CY標志位。實驗六 分支程序設計一、 實驗目的進一步熟悉MCS-51指令系統,了解匯編語言程序設計的基本結構。掌握分支結構程序設計的方法。學會用條件轉移指令、CJNE、JMP及其配合使用來編寫二分支、三分支和多分支程序。二、 實驗內容二分支的條件轉移程序設變量X存放于R0,函數值Y存放在R1,其中X、Y均為二進制數。試按照下式的要求給Y賦值:1 X>0Y= 0 X=0-1 X<0程序框圖2-1如下:開始A←(R0)Y=0?NY(A)>0?NN(A)=1(A)=-1(A)→(R1)結束圖2-1 二、三分支結構程序流程圖自選題目設計三、實驗步驟1.根據實驗內容和參考程序流程圖,編出相應的分支結構程序。2.輸入程序,匯編成功;3.用F4(執行到光標處)、F7(跟蹤執行)、F8(單步執行)或斷點運行等方式調試程序;4.觀察程序的流程,記錄運行結果。四、思考題1.CJNE指令對CY有影響嗎?用 CJNE和JC/JNC答:指令前,若變址 255怎么辦?對CY有影響,若目的操作數大于等于源操作數,則置1。在配合使用前要注意 CY是否清 0。如果變址位的值

指令配合應注意什么?在用 JMPCY置0,若小于源操作數,則>255,則需要修改 DPTR的高82.用什么指令可以實現多分支之間的隔離?答:無條件轉移指令與標號段配合使用,可以使得程序在多分支程序之間跳轉。條件轉移指令余標號段配合使用也可以實現五、實驗報告要求寫出題目運行結果。六、參考程序清單1、二分支的條件轉移程序1) 用二分支結構程序實現:ORG

0000HMOV A,R0JZ LOADJNB ACC.7

,GO

;等于零轉;大于零轉

LOADGOMOV A,#0FFHSJMPLOADGO: MOV A,#01HLOAD: MOV R1,ASJMP $END2)用三分支結構程序實現:ORG 0000HMOV A,R0JNZ COMP ;不等于零轉 COMPMOVR1,#00H;等于零,則0(R1)SJMPMP3COMP:CJNER0,#80H,MP1;(R0)中數與80H比較,不相等則轉移到MP1MOVR1,#0FFH;若比較相等,則-1(R1)LJMPMP3MP1:JCMP2;兩數不相等,(R0)>0轉MP2MOVR1,#0FFH;(R0)<0,-1(R1)LJMPMP3MP2:MOVR1,#01H;(R0)>0,1(R1)MP3:SJMP$END實驗七 循環程序設計一、實驗目的1.進一步熟悉 MCS-51指令系統,了解匯編語言程序設計的基本結構。2.掌握循環結構程序設計的方法,弄清單重及多重循環控制過程。二、

3.通過設計軟件延時程序,學會計算內外循環次數以及循環體的循環時間。實驗內容1.設計一個循環程序具體要求:將內部 RAM中30H至32H的內容右移四位,程序流程圖如圖 2-3所示。2.設計循環程序:冒泡法排序。具體要求:設單片機 8031外部RAM從3600H單元開始存放 10個無符號數,試編寫程序能使它們按從大到小的順序排列(最大數存放在 3600H單元)。程序流程圖如圖 2-4所示。3.自選題目設計。三、 實驗步驟1.輸入預先編好的程序,匯編成功;2.用自動單步方式執行程序,觀察循環計數器的變化情況。3.用斷點運行方式調試排序程序,記錄排序過程。四、實驗報告要求1.編出相應的循環結構程序,列出程序清單,并且會計算循環體的循環時間。2.寫出自選題目的設計內容、程序清單及運行結果。五、思考題1.程序中循環時間由什么來控制?答:由循環計數器和條件轉移指令來控制循環執行次數,從而控制循環時間2.若用DJNZ或CJNE指令來控制循環,編寫程序有什么不同?答:用DJNZ來控制循環,必須已知循環次數。在程序開頭要設置循環次數,在未知循環次數的條件下要用 CJNE,當滿足CJNE的條件時,循環結束,否則循環繼續。六、參考流程圖開始4 (R7)(R6)CY30H(R0)((R0)) (A)右移(A)一次((R0))(R0)+1(R0)N(R6)-1=0?YN(R7)-1=0?Y結束圖2-3循環結構程序流程圖七、循環結構程序參考清單:1.三個字節右移四位:ORG0000HMOVR7,#4RR30:MOVR6,#3CLRCMOVR0,#30HRR31:MOVA,@R0RRCAMOV@R0,AINCR0DJNZR6,RR31DJNZR7,RR30SJMP$END初值為:(30H)=12H(31H)=23H(32H)=34H運算結果為: (30H)=01H(31H)=23H(32H)=33H冒泡法排序:ORG0000HMOVPSW,#00HMOVP2,#36HMOVR2,#10-1LOOP0:MOVR0,#00HMOVR1,#01HMOV03H,R2CLR7FHLOOP1:MOVXA,@R0MOV30H,AMOVXA,@R1CJNEA,30H,LOOP2SJMPL1LOOP2:JCL1MOVX@R0,AXCHA,30HMOVX@R1,ASETB7FHL1:INCR0INCR1DJNZR3,LOOP1JNB7FH,LOOP3DJNZR2,LOOP0LOOP3:SJMP$END開始置地址指針,置外循環計數器置內循環地址指針,置內循環計數器 Y清零交換標志位( 7FH)←0N取兩操作數前數≥后數Y交換兩數,置 1交換標志位(7FH)←1NY內循環結束Y7FH)=1?外循環結束結束實驗八 查表程序設計一、實驗目的1.進一步熟悉

MCS-51

指令系統和匯編語言程序設計。2.學會用

MOVC

指令編寫查表程序。二、實驗內容1.設計并調試一個查平方表的程序,其功能為應用查表指令 MOVCA累加器A中數的平方值,結果平方值送 A。要求待查的( A)≤15。

,@A+PC,求2.設計并調試一個根據電壓值查與其對應的溫度值的查表程序,其功能為應用查表指令MOVCA,@A+DPTR,求(A)中電壓值對應的溫度值,將溫度值送R2R3(溫度值為二字節的壓縮BCD碼),電壓值的范圍為(A)≤0FFH。實驗程序參考框圖如2-5所示。三、實驗步驟1.敲入程序和預定表后;2.通過修改自變量參數啟動并調試程序,直至正確為止。3.邊調試邊體會用 PC或DPTR作指針查表的區別。開始表首地址 (DPTR)A)+(A)+(DPTR)(DPTR)0 (A)查表取第一個字節 (R2)(A)DPTR)+1(DPTR)查表取第二個字節 (R3)結束圖2-5 查表程序框圖四、 實驗報告要求根據實驗內容和程序參考流程,編出所需查表程序,列出實驗程序清單。五、思考題1.當表的長度〉255個字節時應選哪一條指令查表?答:應選用“

MOVA,@A+DPTR

”指令,并且需要對

DPH,DPL

進行運算處理,求出表頭地址2.用

PC指針查表編程時應注意什么?答:要注意對其進行修正,指令為“

ADDA,#DATA”,DATAP

為PC

當前值與表頭地址的差值,DATA=表頭地址—PC當前值六、參考程序清單1.求平方值查表程序:ORG0000HADD A,#02HMOVC A,@A+PCSJMP$DB0,1,4,9,16,25DB36 ······225END當執行“MOVC A,@A+PC”指令時,由于 PC指針指向“SJMP$”,SJN$為雙字節指令,PC地址與A的平方的地址差2個字節,因此需要修正,但由于DPTR可以直接指向目的地址,因此不需要修正。2.測量溫度查表程序:R2初值為02HORG0000HMOVDPTR,#TABCLRCCY清零MOVR0,A(R0)←02HADDA,R0(A)=04HMOVF0,C(F0)←0ADDA,DPL(A)=22HMOVDPL,A(DPL)←22HADDCA,DPH(A)=00H(AC)=0MOVC,F0(C)=0ADDCA,#0(A)=00HMOVDPH,A(DPTR)=0022HCLRA(A)=0MOVCA,@A+DPTR查第一個字節(A)=00HMOVR2,A(R2)←00HCLRA(A)=0INCDPTR(DPTR)=0023HMOVCA,@A+DPTR查第二個字節(A)=05HMOVR3,A(R3)←05HSJMP$TAB:DW1213589END查表結果為: 5實驗九

散轉程序設計一、

實驗目的1.進一步熟悉

MCS-51

指令系統和匯編語言程序設計。2.學會用三種不同的方法設計散轉程序,并掌握它們的區別。二、 實驗內容設計并調試一個程序,其功能為根據( 20H)的值i(i≤7)取相應的處理程序

Pi的入口地址并轉移到程序 Pi,Pi的處理程序的功能為( Ri)+1→(Ri),[(20H)+1]^7 (20H),再重復地根據(20H)散轉。參考程序框圖如圖 2-6所示:三、實驗步驟1.輸入編好的程序,匯編成功;2.調試程序,使用修改寄存器的方法,使點運行,運行一個循環后檢查運行結果, 觀察

R0—R7初值為0,然后啟動系統,帶斷R0—R7是否依次計數,排除程序中錯誤,直至

R0—R7同步計數為止。四、實驗報告要求1.列出根據流程圖編寫的程序清單,寫出程序執行的結果。2.采用另外兩種不同的方法編寫程序,列出調試通過的程序清單。開始0 (20H)根據(20H)查轉移地址 (DPTR)0→ ( A )根據(DPTR)散轉(R0)+1→0(R0)(R1)+1→(R1)7(R7)+1→(R7)120H)+1→(20H)(20H)^7→ (20H)圖2-6

散轉程序框圖五、參考程序清單方法一:ORG

0000HTB0:

MOVMOV

20HDPTR

,#00H,#TABLMOV

R0,20HTABL:

MOVADDADDMOVMOVJMP

A,R0A,R0A,DPTRDPTR,AA@A+DPTRAJMPAJMP

,PR0PR1

#00HAJMPPR2AJMPPR3AJMPPR4AJMPPR5AJMPPR6AJMPPR7PR0 : INC R0LJMP PRPR1: INC R1LJMP PRPR2: INC R2LJMP PRPR3: INC R3LJMP PRPR4: INC R4LJMP PRPR5: INC R5LJMP PRPR6: INC R6LJMP

PRPR7:

INC

R7PR

MOV

A,20HINC

AANL

A

,#07HMOV

20H

,ALJMP TB0SJMP $END運算結果為:(R0)=1

(20)=01H方法二:ORG

0000HMOV 20HMOV A,20HTB0: MOV DPTRMOV A,R0ADD A,R0JNC NADDNADD: MOV R3,AMOVC A,@A+DPTRXCH A,R3INC AMOVC A,@A+DPTRMOV DPL,AMOV DPH,R3MOV AJMP @A+DPTRTABL: DWPR0DWPR1

,

,#00H,#TABL#00HDWPR2DWPR3DWPR4DWPR5DWPR6DWPR7PR0 : INC R0LJMP PRPR1: INC R1LJMP PRPR2:INCR2LJMPPRPR3:INCR3LJMPPRPR4:INCR4LJMPPRPR5:INCR5LJMPPRPR6:INCR6LJMPPRPR7:INCR7PR:MOVA,20HINCAANLA,#07HMOV20H,ALJMPTB0SJMP$實驗十 子程序設計一、實驗目的1 .進一步熟悉 MCS-51指令系統和匯編語言程序設計。.掌握子程序設計及參數傳遞的方法。.掌握子程序調用與返回時堆棧的變化與作用。二、實驗內容.根據參考流程框圖2-7,使用工作寄存器或累加器來傳遞參數的方法把入口參數放到累加器 A中,然后將累加器中的一個十六進制數的 ASCⅡ字符轉換為一位十六進制數存放于 A。.用指針寄存器來傳遞參數,將(R0)和(R1)指出的內部RAM兩個3字節無符號整數相加,結果送(R0)指出的內部RAM中,入口時,(R0)(R1)分別指向加數和被加數的低位字節,出口時(R0)指向結果的高位字節。3 .用堆棧傳遞參數,把一位十六進制數轉化為 ASCⅡ碼子程序(主程序用 PUSH指令,已把參數壓入堆棧) 。參考程序框圖如 2-7圖所示:開始0 CA)—30H(A)(A)10? YN(A)—7 (A)返回圖2-7ASCII 碼字符轉換為十六進制數框圖四、實驗報告要求畫出實驗內容中 2和3的程序流程圖,并列出三個題目的主—子程序清單。五、思考題1、使不同種參數傳遞方法實現子程序調用的異同是什么?答:一用累加器和工作寄存器傳遞參數:將數據通過工作寄存器和累加器傳送,即在調用子程序之前把數據送入寄存器或者累加器,調用以后就用這些寄存器或者累加器中的數據進行操作,子程序執行以后,結果仍由寄存器或累加器送回。二用指針寄存器來傳遞參數:調用時,參數傳遞只通過R0,R1,DPTR來傳遞。調用結束時,子程序運算的結果也可以存放在內存單元中,傳回來的也只是存放有這些單元地址的寄存器。三用堆傳遞參數:在調用前,先要把傳送的參數壓入堆棧,進入子程序之后,在講壓入堆棧的參數彈出到工作寄存器或者其他內存單元。2、ACALL和LCALL指令有什么區別?使用時應注意什么?答:ACALL指令為二字節指令。指令中提供八位地址,與 PC當前值的高五位共同組成16位目標地址。LCALL指令為三字節指令, 指令中提供 16位子程序入口地址送入 PC,可以調用64KB范圍的子程序。使用時應注意要先設 SP指針地址。3、RET指令的功能是什么?答:子程序調用返回指令,要用在子程序末尾。六、參考程序清單1.用累加器和工作寄存器傳遞參數子程序清單:ORG 0000HXADATA40HMOV A,XAACALLASCHMOV XA,ASJMP$ASCH : CLR CSUBB A ,#30H ; 入口參數放在 ACC中CJNE A ,#10,$+3JC AH10SUBB A ,#07HA10 : RETEND3.用指針寄存器來傳遞參數子程序清單:ORG 0000HMOV R0,#30HMOV R1,#40HACALL NADDNADD:MOVR7,#3;用R0、R1傳遞參數CLRCNADD1:MOVA,@R0ADDCA,@R1MOV@R0,ADECR0DECR1DJNZR7,NADD1INCR0RETEND開始置循環數,計數器清 0N(R0)→A (A)+(R1) →(A)(A) →(R0) (R0)-1 →(R0)(R1)-1 →(R1)Y判斷R7-1是否為0(R0)-1 →(R0)返回三字節無符號數相加框圖4.用堆傳遞參數子程序清單:ORG 0000HY1 DATA30HMOV SP,#50HMOV DPTR,#DBPUSH02HACALLHASCPOP YIHASC

MOV R0,SPDECDECXCHANLADDMOVCXCH

R0R0AAAAA

,@R0,#0FH,#2,@A+PC,@R0RETDBDB

‘0123456789’‘ABCDEF’END實驗十一

P1

口及外部中斷一、 實驗目的1.掌握利用MCS-51單片機P1口實現I/O的三種傳送方式。2.掌握MCS-51單片機外部中斷源的原理和編程方法。3.了解MCS-51單片機處理外部中斷的全過程。4.弄懂外部中斷觸發方式的選擇。二、 實驗要求熟練掌握結合 DP-51PROC單片機綜合仿真實驗儀和仿真調試。三、 實驗內容及實驗電路1、P1口無條件輸出實驗,電路圖圖 3-1所示。

KielC51

集成開發環境進行圖3-1P1口無條件輸出實驗參考程序 1:8個LED 燈同時閃亮。ORG 8000HLJMP MainORG 80F0HMain:MOVR7,#0Loop:MOVR6,#0DJNZR6,$DJNZR6,$DJNZR6,$DJNZR6,$DJNZR7,LoopCPLP1.0;P1.0取反CPLP1.1;P1.1取反CPLP1.2;P1.2取反CPLP1.3;P1.3取反CPLP1.4;P1.4取反CPLP1.5;P1.5取反CPLP1.6;P1.6取反CPLP1.7;P1.7取反SJMPMainEND實驗結果記錄: 8個燈同時閃亮(亮: ●滅:○)●●●●●●●● ○○○○○○○○ ●●●●●●●●2、P1口條件輸出實驗,電路如圖 3-2所示。圖3-2P1口條件輸出實驗參考程序 2:ORG 8000HLJMP MainORG 8100HMain:JB P1.7,SETLEDCLRLED:CLR P1.0CLR P1.1CLR P1.2CLR P1.3CLR P1.4CLR P1.5CLR P1.6SJMP MainSETLED:SETB P1.0SETB P1.1SETB P1.2SETB P1.3SETBP1.4SETBP1.5SETBP1.6SJMPMainEND實驗結果記錄:(亮:●滅:○)SW1置0時,8個燈全亮●●●●●●●●SW1置1時,8個燈全滅○○○○○○○○3、P1口中斷輸入/輸出實驗,電路如圖 3-3所示。圖3-2P1口中斷輸入/輸出實驗參考程序 3:ORG 8000HLJMP MainORG 8003HLJMP INT0SVMain:MOVSETBSETBSETBSJMP

SP,#5FHEAIT0EX0$INT0SV:MOVMOVSWAPMOVRETIEND

P1,#0FFHA,P1AP1,A實驗結果記錄:(亮:●滅:○)SW1,SW2,SW3置0,按K1鍵,012456燈亮 ●●●●●●SW1,SW2,SW3置1,按K1鍵,012燈亮,456燈不亮 ●●●○○○四、 實驗步驟實驗內容 1:P1口無條件輸出實驗1. 斷開DP-51PROC實驗儀的電源,按圖 3-1接線,使用排線將 A2區的J61接口與D1區的J52接口相連。接通DP-51PROC實驗儀的電源,將TKSMonitor51仿真器上的工作模式選擇開關撥到RUN處。1、建立名為 P1_wtjio工程,按實驗參考程序 1編輯新文件,文件名為:然后編譯,無誤轉換為調試方式,運行程序,觀察并記錄運行結果。實驗內容 2:P1口條件輸出實驗

p1_wtj.asm。1、斷開DP-51PROC實驗儀的電源,按圖D1區的J52接口相連,使用導線把 A2

3-2接線,使用排線將 A2區的P1.7與D1區J54的

區的SW1

J61接口與相連。2、接通DP-51PROC實驗儀的電源,將TKSMonitor51 仿真器上的工作模式選擇開關撥到RUN處。3、建立名為 P1_tjio工程,按實驗參考程序后編譯,無誤轉換為調試方式,預先將 SW1結果。實驗內容 3:P1口中斷方式輸入 /輸出實驗

2編輯新文件,文件名為: p1_tj.asm。然置1或置0,運行程序,觀察并記錄運行1、斷開DP-51PROC實驗儀的電源,按圖 3-3接線,使用導線將P12分別與D1區的SW1、SW2、SW3相連,使用導線把J53的KEY1(圖3-3中的K1即為D1區的K1)相連。

A2A2

區的P10、P11、區INT0與D1區2、接通DP-51PROC實驗儀的電源,將TKSMonitor51 仿真器上的工作模式選擇開關撥到RUN處。3、建立名為P1_zdio工程,按實驗參考程序3編輯新文件,文件名為:p1_zd.asm。然后編譯,無誤轉換為調試方式,預先置好開關的狀態,運行程序,觀察中斷的執行過程,并記錄運行結果。五、 思考題1、如何將

P1

口無條件輸出的實驗,修改為將

8個

LED

發光二極管向左或向右循環點亮?ORG8000HLJMPMAINORG800BHMAIN: MOV P1,#0FFHMOV A,#07FHMOV P1,AACALL DELMAIN1:RL AMOV P1,AACALL DELSJMP MAIN1DEL: MOVR7,#0FFHDEL1:MOVR6,#0FFHDJNZR6,$DJNZR6,$DJNZR6,$DJNZR6,$DJNZR7,DEL1RETEND2、如何利用INT0中斷使P1口控制8個LED發光二極管向左或向右循環點亮?電路如何修改?程序如何修改?ORG8000HLJMPMAINORG 8003HLJMPINT0SVMAIN:MOVSP,#5FHSETBEASETBIT0SETBEX0SJMP$INT0SV: MOVSP,#5FHCLREAPUSHACCPUSH01HSETBEAMOVP1,#0FFHMOVR1,#0AHLN: MOV A,#07FHMOV P1,AACALL DELMAIN1:RL AMOV P1,AACALL DELDJNZ R1,MAIN1CLREAPOP01HPOPACCSETBEARETIDEL: MOVR7,#0FFHDEL1:MOVR6,#0FFHDJNZR6,$DJNZR6,$DJNZR6,$DJNZR6,$DJNZR7,DEL1RETEND實驗十二 定時器及中斷(1秒基時)一、 實驗目的1.通過實驗了解定時器的工作原理、編程方法。2.通過實驗了解定時器工作方式、定時與計數、單啟動與雙重啟動的選擇。3.掌握通過一個定時器加入軟件計數產生 1S基時的方法。4.通過實驗了解多個中斷源申請中斷的處理方法。二、 實驗內容及實驗電路及步驟1.產生1S延時的設計:(11.0592MHZ)方案1:定時器0定時加軟件計數。1)采用定時器 0,方式1,定時50MS中斷。當 1S時間到后,使 P1.0閃亮。一個機器周期為 =(1/11.0592Mhz)*12us 。定 時 器 0 的 定 時 初 值 =65536-50000/(1/11.0592Mhz*12us))=(65536-46080)=19456=4C00H軟件計數:計數器采用 R2,計數20次。實驗電路如圖 3-4所示:用導線將 A2區的P10與D1區的LED1相連。圖3-4 定時器0實驗接線圖參考程序:ORG8000HAJMPMAINORG800BHAJMPT0SMAIN: MOVSP,#60HMOVTMOD,#01HMOVTH0,#4CHMOVTL0,#00HMOVR2,#00HMOVIE,#10000010BSETBTR0CLRP1.0SJMP$T0S:MOVTH0,#4CHMOVTL0,#00HINCR2CJNER2,#20,NEXTCPLP1.0MOVR2,#00HNEXT:RETIEND實驗結果記錄:(亮:●滅:○)燈閃亮●○○○○○○○○○○○○○○○●○○○○○○○○○○○○○○○●○○○○○○○○○○○○○○○●○○○○○○○○○○○○○○○●○○○○○○○○○○○○○○○2)采用定時器0,方式1,定時50MS,查詢方式,當1S時間到后,使P1.0閃亮。用導線將A2區的P10與D1區的LED1相連。參考程序:ORG8000HAJMPMAINMAIN:MOVTMOD,#01H;T/C0定時,方式1。MOVTH0,#4CH;T0定時50MS。MOVTL0,#00HMOVR2,#00H;軟件計數器初值SETBTR0LOOP:JBCTF0,T0SSJMPLOOPT0S:MOVTH0,#4CHMOVTL0,#00HINCR2CJNER2,#20,NEXT;1S使P1.0取反一次。CPLP1.0MOVR2,#00HNEXT:SJMPLOOPEND實驗結果記錄:(亮:●滅:○)燈閃亮●○○○○○○○○○○○○○○○●○○○○○○○○○○○○○○○●○○○○○○○○○○○○○○○●○○○○○○○○○○○○○○○●○○○○○○○○○○○○○○○)采用GATE=1時,利用信號/INT0與TR0雙重啟動T/C0,產生1S延時。用導線將A2區的P10與D1區的LED1相連,用導線將A2區的INT0與D1區的SW1相連,運行相面程序前先將SW1置在0位,程序運行后將SW1置在1位,觀察LED1的閃亮情況,然后將SW1再置在0位,LED1將停止閃亮,再SW1置在1位,重復前述步驟,觀察GATA與/INT0引腳信號的作用。注意:調試前, SW1一定處于 0的位置。參考程序:ORG8000HAJMPMAINORG800BHAJMPT0SMAIN: MOVSP,#60HMOVTMOD,#09H ;T/C0 定時,方式 1,GATE=1。MOVTH0,#4CH ;T0 定時50MS,中斷一次。MOVTL0,#00HMOVR2,#00H ; 軟件計數器初值MOVIE,#10000010BSETBTR0CLRP1.0SJMP$T0S:MOVTH0,#4CHMOVTL0,#00HINCR2CJNER2,#20,NEXT;1S 使P1.0取反一次。CPLP1.0MOVR2 ,#00HNEXT:RETIEND實驗結果記錄:(亮:●滅:○)運行前將 SW1置0位,運行后置 1,則燈閃亮●○○○○○○○○○○○○○○○●○○○○○○○○○○○○○○○●○○○○○○○將SW1再置0位,燈停止閃亮●○○○○○○○●○○○○○○○

圖3-5 定時器級聯實驗接線圖●○○○○○○○●○○○○○○○●○○○○○○○再置1,則又閃亮●○○○○○○○○○○○○○○○●○○○○○○○○○○○○○○○●○○○○○○○方案2:采用T/C0與T/C1級聯加軟件計數的方法。)電路圖如圖3-5所示。接線方法:⑴斷開DP-51PROC實驗儀的電源,按圖3-5接線,使用排線將 A2區的J61接口與D1區的J52接口相連,⑵使用導線把 A2區的P3.0與A2區T1(P3.5)相連。3)參考程序:ORG8000HLJMPMAINORG800BHLJMPTC0SVORG801BHLJMPtc1SVORG8100HMAIN:MOVSP,#70HMOVTMOD,#61HMOVTH1,#0FBHMOVTL1,#0FBHMOVTH0,#4CH;T0定時50MS,中斷一次。MOVTL0,#00HSETBET1SETBET0SETBEASETBTR1MOVR2,#0SETBP3.0MOVMOVSJMP$TC1SV:

A,#0FHP1,AINCR2CJNER2,#2,NEXTMOVR2,#0CPLAMOVP1,ANEXT:RETITC0SV:MOVTH0,#4CHMOVTL0,#00HCPLP3.0RETIEND實驗結果記錄:(亮:●滅:○)●●●●○○○○○○○○●●●●●●●●○○○○○○○○●●●●●●●●○○○○○○○○●●●●

前四個燈與后四個燈交替閃亮2、計數器實驗采用T/C0每計1個數,使 8個LED全部點亮。設計方案:采用 T/C0方式2,計數,每計 1個數中斷一次,在中斷服務程序中,點亮/熄滅8個LED。使用排線將 A2區的J61接口與D1區的J52接口相連,用導線將 A2區的T0與D1區的SW1相連,請自行畫出電路。注意:調試前,SW1一定處于1的位置。參考程序:ORG8000HAJMPMAINMAIN:

ORG800BHAJMPT0SMOVSP,#60HMOVTMOD,#06HMOVTH0,#0FFH

;

;T/C0 定時,方式 2。計1個數,中斷一次

.MOVTL0,#0FFHSETBET0SETBEASETBTR0MOVP1,#0FFHSETB00HSJMP$T0S: JNB00H,MIEP1MOVP1,#00HCLR00HRETIMIEP1:MOVP1,#0FFHSETB00HRETIENDSW1值燈況SW1值燈況0●●●●●●●●1○○○○○○○○1●●●●●●●●0●●●●●●●●0○○○○○○○○1●●●●●●●●1○○○○○○○○0○○○○○○○○0●●●●●●●●1○○○○○○○○1●●●●●●●●0●●●●●●●●0○○○○○○○○1●●●●●●●●三、思考題1、將實驗十一思考題2的軟件延時修改為采用T/C0的硬件延時。采用T/C0中斷與/INT0中斷方式實現8個LED循環點亮(左或右)。ORG8000HLJMPMAINORG8003HLJMPINTSVORG800BHLJMPTOSMAIN:MOVSP,#5FHMOVTMOD,#01HMOVTH0,#4CHMOVTL0,#00HMOVIE,#83HMOVA,#0FEHMOVR2,#00HSETBIT0SETBTR0SETBPX0CLRF0SJMP$TOS:MOVTH0,#4CH+4MOVTL0,#00H+4INCR2CJNER2,#255,NEXTJBF0,TOS1AAJMPTOS2TOS1:RLANOPTOS2:MOVP1,AMOVR2,#00HNEXT:RETIINTSV:CPLF0RETIEND2 、將實驗 1中T/C0定時改為25MS,軟件計數應該為多少?修改程序產生 1S。初值=65536-(25000*11.0592)/12=42496=0A600HORG8000HAJMPMAINORG800BHAJMPT0SMAIN: MOVSP,#5FHMOVTMOD,#01HMOVTH0,#A6HMOVTL0,#00HMOVR2,#00HMOVIE,#82HSETBTR0CLRP1.0SJMP$T0S:INCR2CJNER2,#40,NEXTCPLP1.0MOVR2,#00HNEXT:MOVTH0,#A6HMOVTL0,#00HRETIEND實驗十三 A/D轉換器ADC0809實驗一、實驗目的熟悉外部擴展的A/D轉換器ADC0809的工作原理,學習使用并行模數轉換芯片進行電壓信號的采集和數據處理。二、實驗設備及器件IBMPC機DP-51PROC數字萬用表

單片機綜合仿真實驗儀

一臺一臺一臺三、實驗內容及實驗電路通過片外總線方式訪問并行模擬數字轉換器芯片方法??梢詫崿F單通道采集或8通道采集。電路如圖

ADC0809,掌握模擬電壓的通用采集3-5所示。圖3-5ADC0809引腳接線圖四、實驗要求理解掌握ADC009的A/D轉換原理和并行A/D轉換器接口的編程方法,學會使用ADC0809并行模數轉換器實現電壓信號采集的方案設計。五、實驗步驟1、單通道采集接線⑴使用2×10的排線連接D7區的J28接到A7區的J84;⑵將D2區10K電位器的左端金屬孔通過導線連接到該區的GND金屬孔,而右端金屬孔通過導線連接到該區的VCC金屬孔;⑶D2區10K電位器的中間金屬孔連接到A7區的P2_IO2金屬孔(IN0);⑷將A7區的P2_IO3~P2_

溫馨提示

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

評論

0/150

提交評論