山東大學(xué)單片機-答案_第1頁
山東大學(xué)單片機-答案_第2頁
山東大學(xué)單片機-答案_第3頁
山東大學(xué)單片機-答案_第4頁
山東大學(xué)單片機-答案_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、w單片機原理-答案、問答題1、利用MSC1211或8051設(shè)計應(yīng)答方式下的多機通訊程序。通訊參數(shù):晶振 為11.0592MHz, 9600, n, 8, 10通訊過程如下:主機首先發(fā)送從機地址,從 機收到地址后進行比較,如果地址相符,則將從機地址回發(fā)給主機作為應(yīng)答信號。 主機收到從機的地址應(yīng)答信號后,將內(nèi)存單元中的120個數(shù)據(jù)發(fā)送給從機,并 進行數(shù)據(jù)塊校驗(將各個數(shù)據(jù)進行異或),若校驗正確,則從機發(fā)送00H給主機, 否則發(fā)送0FFH給主機,主機重新發(fā)送數(shù)據(jù)。(應(yīng)在適當(dāng)?shù)牡胤郊映绦蜃⑨專┙猓褐鳈C程序如下:ORG 0000HLJMP MAINTORG 0023HLJMP INTSTMAINT:;跳

2、至主程序入口地址;串行口中斷服務(wù)程序入口SCON, #90HMOVMOVMOVMOV;責(zé)工作方式2,并允許接收TMOD, #20H;責(zé)T1工作方式2TH1 , #OFDHTL1, #OFDHMOVMOVSETBSETBSETBDPTR, #ADDR ;設(shè)直數(shù)據(jù)塊首址ADDR的地址指針MOV RO, #120MOV Rl , #00H#N AME;置位TB8位,;設(shè)萱發(fā)送字節(jié)數(shù);設(shè)責(zé)校驗和的初值R2, TB8TR1EA作為發(fā)送地址楨信息特征SETBMOVMOVSJMP;中斷服務(wù)程序INTST:;CPU開中斷ES ;允許串行口中斷A, R2 ;發(fā)送地址楨信息SBUF, A$CLRLOOPO:MOV

3、CJNETIJB信息CLRA, TB8 ;判斷是發(fā)送地址還是數(shù)據(jù),若為數(shù)據(jù)則轉(zhuǎn)LOOPOA, 01H, LOOPO地址楨信息發(fā)送完后清發(fā)送中斷Rl, LOOP1 ;檢查是否是接受中斷?若RI二1則轉(zhuǎn)入接受乙機發(fā)送應(yīng)答TI ;因RI=0,表明是甲機發(fā)送中斷數(shù)據(jù)的中斷請求。CPU響應(yīng)中斷,在中斷服務(wù)程序中應(yīng)清中斷標(biāo)志MOV A, TB8;CJNE A, #01H, LOO3 ;若為發(fā)送數(shù)據(jù)中斷則轉(zhuǎn)LOOP3繼續(xù)發(fā)送數(shù)據(jù)LJMP ENDT;甲機發(fā)送一數(shù)據(jù)完畢跳至中斷返回程序LOOP1: CLRRI ;清接受中斷標(biāo)志MOV A, TB8 ;判斷是發(fā)送地址還是數(shù)據(jù),若為數(shù)據(jù)則轉(zhuǎn)LOOP2CJNE A,

4、#01H, LOOP4;若TB8為0則接受的為乙機數(shù)據(jù)校驗應(yīng)答MOVA, SBUF;取乙機的應(yīng)答數(shù)據(jù)CJNE A, R21OOP2;若乙機應(yīng)答信息不是從機地址,則地址傳送不正確,則轉(zhuǎn)LOOP2程序重新發(fā)送地址信息,否則清TB&發(fā)送數(shù)據(jù)CLR TB8LOOP3: MOVX A, DPTR ;取下一個數(shù)MOV SBUF, A;啟動串行口,發(fā)送新的數(shù)據(jù)XRL A, R1MOV Rl, AINCDPTR ;修改地址指針DECRO ;修改發(fā)送字節(jié)數(shù)記數(shù)值CJNE RO, #00H, ENDT ;判別120個字節(jié)數(shù)據(jù)都發(fā)送完沒有。如果沒有 發(fā)送完則跳至中斷返回程序。繼續(xù)發(fā)送MOV A, RlMOV SBU

5、F, A;數(shù)據(jù)全部發(fā)送完畢則發(fā)送校驗和LJMP ENDTLOOP4: MOVA,CJNE發(fā)送CLR ESLOOP5: MOVMOVMOVSBUF;取乙機的應(yīng)答數(shù)據(jù)A, #00H, LOOP5;若數(shù)據(jù)發(fā)送不正確,則轉(zhuǎn)LOOP5重新 ;全部發(fā)送完畢,禁止串行口中斷DPTR, #ADDR ;設(shè)萱數(shù)據(jù)塊首址ADDR的地址指針R0, #120;設(shè)萱發(fā)送字節(jié)數(shù)Rl, #00H;設(shè)責(zé)校驗和的初值LJMP LOOP2LOOP2: MOV A, R2 ;發(fā)送地址楨信息MOV SBUF, ARETIENDT: RETIEND從機程序如下:ORG 0000HLJMP MAINR ;跳至主程序入口地址ORG 0023

6、H;串行口中斷服務(wù)程序入口LJMP INTSRMAINR: MOV SCON, #OBOH ;萱工作方式2,并允許接收MOV TMOD, #20H;萱 T1 工作方式 2MOV TH1, #OFDHMOV TL1, #OFDHMOV DPTR, #ADDR;設(shè)萱數(shù)據(jù)塊接收首址為ADDRMOV RO, #120;設(shè)責(zé)接收字節(jié)數(shù)MOV R2, #NAMEMOV Rl, #00H;設(shè)直校驗和的初值SETB RB8 ;重位RB8位,作為接受地址信息特征SETB TR1SETB EA ; CPU 開中斷SETB ES ;允許串行口中斷 SJMP $;中斷服務(wù)程序INTSR:MOV A, RB8;判斷是接

7、收地址還是數(shù)據(jù),若為數(shù)據(jù)則轉(zhuǎn)LOOPO CJNE A, 01H, LOOPOCLR RI ;地址楨信息接受完后清接收中斷MOV A, SBUFXRL A, R2JZ LOOP ;若地址相符則轉(zhuǎn)LOOP,否則中斷返回LJMP ENDRLOOP: CLRCLRMOVMOVLJMP ENDRLOOPO: JB據(jù)CLRSM2RB8A, R2SBUF, A;想主機發(fā)送從機地址LOOP1 ;檢查是否是接受中斷?若RI二1則轉(zhuǎn)入接受甲機發(fā)送的數(shù)TI在中斷服務(wù)程序中應(yīng)清中斷標(biāo)志LJMPLOOP1: CLRDECJZENDRRIR0LOOP2;因RI二0,表明是乙機發(fā)送中斷數(shù)據(jù)的中斷請求。CPU響應(yīng)中斷,;甲機

8、發(fā)送一數(shù)據(jù)完畢跳至中斷返回程序 ;清接受中斷標(biāo)志 ;數(shù)據(jù)未接收完則中斷返回,若接收完則轉(zhuǎn)LOOP2,校驗 MOV A, SBUF;取甲機發(fā)送的數(shù)據(jù)MOVXXRLMOVLOOP2: MOVXRLJZLJMPRIGHT: MOVMOVLJMPWRONG: MOVMOVDPTR, AAZR1RI, AA, SBUF:取甲機發(fā)送的校驗和A, RIRIGHTWRONGA, #00HSBUF, AENDRA, #OFFH SBUF, AMOV DPTR, #ADDR ;設(shè)直數(shù)據(jù)塊接收首址為ADDRwMOV R0, #120;設(shè)責(zé)接收字節(jié)數(shù)LJMP ENDRENDR:RETIEND2、某一故障檢測系統(tǒng),當(dāng)出

9、現(xiàn)故障1時,線路1上出現(xiàn)上升沿;當(dāng)出現(xiàn)故障2時,線路2上出現(xiàn)下降沿。沒有故障時,線路1為低電平,線路2為高電平。岀現(xiàn)故障時,相應(yīng)的指示燈變亮。故障消失后,指示燈熄滅。試用MSC1211為 單片機實現(xiàn)該故障檢測功能,畫出電路原理圖,并寫岀相應(yīng)程序。答:3、某一故障檢測系統(tǒng).當(dāng)出現(xiàn)故障I時,線路I上出現(xiàn)上升沿;當(dāng)出現(xiàn)故障 2時,線路2上出現(xiàn)下降沿。沒有故障時,線路I為低電平,線路2為高 電平。出現(xiàn)故障時.郴應(yīng)的指示燈變亮。故障消失后.指示燈熄火。試用 MSCI21I為單片機實現(xiàn)該故障檢測功能,畫出電路原理圖,片好出相應(yīng)程 序。解答:如下圖所示:故障1從P32輸入,利用INTO,故障2從P33輸入,

10、利 用INTI,使用L1作為故障I的指示燈,L2作為故障2的指示燈。程序清單:ORG 0000UAJMP MIANORG 0003 HAJMP GUIORG 0013HAJMPGU2ORG 1000HMAIN: MOV TCON,#05HMOV IE,#85HHERE: SETB P1.0SETB Pl.lGUI:CLRP1.0JB P32GUI RETIGU2: CLRPI.1JB P3.3.GU2RETIEND3、用MSC1211的TO定時/計數(shù)器,設(shè)計程序,實現(xiàn)在P1.0輸岀周期為200ms 的占空比為1:1的方波,輸出500個方波后停止輸出。答:ORG 0000HLJMPMAINORG

11、OOOBH ; TO 口中斷服務(wù)程序入口地址LJMPINT.TOMAIN:MOVTMOD, #00H; TO工作于方式0定時MOVTLO, #0CHMOVTHO, #1EH ;設(shè)定秒中斷周期為1msMOVA, 200 ;設(shè)定輸出周期為200 msMOVR2, 1000;輸出500個方波SETBTROSETBETOSETBEASETBP1.0SJMP$INT.TO:MOVTLO, #0CHMOVTHO, #1EH ; TO重裝時間常數(shù)CPLP1.0Pl0位取反DECR2JZ ENDP ;若R2為0,則結(jié)束程序,否則返主程序繼續(xù)輸出RETI ;返主程序ENDP: END4、變量k從0變到300,變

12、化步長為20。對于每一個值,使用整形數(shù)算術(shù)運算 計算40*k, k*k*k和(50*k/120+60)2。這三個值通過MSC1211的D/A轉(zhuǎn)換后 同步輸岀(均使用電壓輸岀模式)。試編寫程序?qū)崿F(xiàn)。(5分)includedata unsigned int kjj;void main(void)PDCO N&=0X48;ADCON0=0X30;DACSEL=6;DACSEL=4;DACL=0X24;DACSEL=5;DACH=0x24;while(l)DACSEL=0;DAC=0x8000;for(j=0;j100;j+)DAC=0;for(k=0;k301;k+=20)DACSEL=l;DAC=

13、40*k;DACSEL=2;DAC=k*k*k;DACSEL=3;i=50*k/1200+60;DAC=i*i*i;DACSEL=6;DACL=0Xfc;二、程序設(shè)計5、用MSC1211的T1定時/計數(shù)器,定時0.1S中斷,使P1 口的8個發(fā)光二極管每隔1S循環(huán)點亮。設(shè)系統(tǒng)主頻為6MHZoW解:ORG 0000HLJMPMAIN;轉(zhuǎn)主程序ORG001 BH;T1中斷服務(wù)程序入口地址LJMPTl-ISRORG01 OOHMAIN: MOVSP, #60H;設(shè)萱堆棧指針MOVP1,#O1H;設(shè)MP1.1發(fā)光MOVTMOD, #10H;T1初始化MOVTL1 , #BOHMOVTH1, #3CHSE

14、TBTRI;啟動T0計數(shù)SETBET1;允許T0中斷SETBEA;CPU開中斷SJMP$;等待T1JSR:MOV TLL#BOHMOVTHL#3CHMOVAZP1;Pl 口循環(huán)左移RLAMOVPbAEXIT: RETIEND6、某一故障檢測系統(tǒng),當(dāng)出現(xiàn)故障時,線路出現(xiàn)下降沿;沒有故障時,線路為 高電平。岀現(xiàn)故障時,相應(yīng)的指示燈變亮。故障消失后,指示燈熄滅。試用 MSC12U為單片機實現(xiàn)該故障檢測功能,畫岀電路原理圖,并寫出相應(yīng)程序。答:參考答案:電路說明:當(dāng)岀現(xiàn)故障1時,線路1上出現(xiàn)上升沿,并將P1.3 口置0,二極管亮,當(dāng)故障 淸除后.P1.3 口宜1,二極管滅ORG 0000HUMPMIA

15、NORG 0043 HUMPINT_2SETBEX2;使能外部中斷2SETBEACPU開中斷SETBP1.3:Pl3置位,使二極管滅SJMP$CLRIE2;淸外部中斷2的中斷標(biāo)志CPLPl.3;P2.3取返,使二極管點亮MOVA, PlANLA,:10H :檢測.P1.4 口,為髙電平時故障未排除,JNZDELAY1CPLPl.3:故障排除,P1.3置位,使二極管滅RETIMIAN:INT 2:DELAY1:轉(zhuǎn)DELAY1等待7、設(shè)有甲、乙兩臺單片機,以工作方式3進行串行通訊,設(shè)晶振為11.0592MHZ, 波特率為9600,甲機將內(nèi)存單元中的120個數(shù)據(jù)作補偶校驗后發(fā)送給乙機,乙 機對接收到

16、的數(shù)據(jù)進行奇偶校驗,若校驗正確,則從機發(fā)送00H給甲機,甲機 繼續(xù)發(fā)送數(shù)據(jù),校驗不正確,則發(fā)送0阡H給甲機,甲機重新發(fā)送原數(shù)據(jù),編寫 乙機的接收程序。(應(yīng)在適當(dāng)?shù)牡胤郊映绦蜃⑨專┐穑篛RG 0000HWAJMPMAINORG0023HLJMPSE2JNTMAIN:MOVSPZ #60HMOV TMOD #20HMOV TH1,#OFDH ;設(shè)責(zé)波特率為9600bpsMOV TL1.#OFDHMOVSCON,#90H;串行口工作方式3,允許接收MOV DPTR,#2000H;接收數(shù)據(jù)區(qū)MOVRL#120SETB TR1SETB EASETB ESSJMP$;等待接收中斷SE2JNT:JB Rl,

17、 LOOPACLR T1LJMP ENDRLOOPA: CLR RlMOV A.SBUFMOV C,P ;奇偶校驗JC LOOP1 ;女口8位數(shù)是奇,則轉(zhuǎn)LOOP1再檢測RB8位ORLCRB8 ;如8位數(shù)為偶,再檢測RB8位,RB8二1,則9位數(shù)據(jù)為奇,補偶 JC LOOP2 ;錯,轉(zhuǎn)LOOP2LJMP LOOP3 ;補偶正確,轉(zhuǎn)LOOP3LOOP1: ANLC, RB8 ;8位數(shù)為奇,再檢測RB8位JC LOOP3 ; RB8二 1 補偶正確,轉(zhuǎn)LOOP3LOOP2:MOV A ,#0阡H ;檢測不正確發(fā)送阡給甲機MOVSBUF.AJMP ENDRLOOP3:MOVX DPTR ,AMOV A,#00HMOV SBUF.AINC

溫馨提示

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

評論

0/150

提交評論