單片機(jī)原理及應(yīng)用A答案.doc
《單片機(jī)原理及應(yīng)用A答案.doc》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《單片機(jī)原理及應(yīng)用A答案.doc(8頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
《單片機(jī)原理及應(yīng)用》模擬卷 1 除非特別聲明,編程題可以使用匯編語(yǔ)言編寫(xiě),也可以使用C語(yǔ)言編寫(xiě) 1、 分析程序的執(zhí)行結(jié)果,將結(jié)果填寫(xiě)到空格中。 ORG 0000H MOV 30H,#50H MOV R0,#30H MOV A,@R0 ;(A= 50H ) MOV A,#79H MOV B,#20H ;(A= 79H B= 20H ) DIV AB ;(A= 03H B= 19H ) PUSH B MOV B,#0AH MUL AB ;(A= 1EH B= 0 ) POP B ADD A,B ;(A=37H B=19H ) MOV 30H,A ;(30H單元的內(nèi)容=37H ) MOV 20H,30H CLR 01H ;(20H單元的內(nèi)容= 37H ) MOV A,20H ;(PSW中P的內(nèi)容= 1 ) CPL A RR A ;( PSW中C的內(nèi)容= 0 ) SWAP A ;(A= 46H ) ADDC A,#0F0H ;(A= 36H ) ;(PSW中P的內(nèi)容= 0 ) ;( PSW中C的內(nèi)容= 1 ) RL A ;(A= 6CH ) ;(PSW中P的內(nèi)容= 0 ) ;( PSW中C的內(nèi)容= 0 ) LOOP: AJMP LOOP 2、 將MCS51內(nèi)部RAM60H~65H單元存放的12個(gè)16進(jìn)制數(shù)變?yōu)锳SCII碼,放到0090H單元開(kāi)始的外部RAM中。[使用匯編語(yǔ)言編寫(xiě)] ORG 0000H AJMP MAIN ORG 0030H MIAN: MOV R0,#50H MOV R1,#06H MOV R2,#02H MOV DPTR,#2800H MOV A,@R0 MOV B,A CH:ANL A,#0FH PUSH ACC SUB A,#0AH JNC AD37 POP ACC ADD A,#30H JMP SAV AD37: POP ACC ADD A,#37H SAV: DJNZ R2,LL MOVX @DPTR,A INC DPTR SWAP B MOV B,A JMP CH LL:INC R0 DJNZ R1,DONE DONE:HLT END 3、 某一故障檢測(cè)系統(tǒng),當(dāng)出現(xiàn)故障1時(shí),線(xiàn)路1上出現(xiàn)上升沿;當(dāng)出現(xiàn)故障2時(shí),線(xiàn)路2上出現(xiàn)下降沿。沒(méi)有故障時(shí),線(xiàn)路1為低電平,線(xiàn)路2為高電平。出現(xiàn)故障時(shí),相應(yīng)的指示燈變亮。故障消失后,指示燈熄滅。試用MSC1211為單片機(jī)實(shí)現(xiàn)該故障檢測(cè)功能,畫(huà)出電路原理圖,并寫(xiě)出相應(yīng)程序。 解答:如下圖所示:故障1從P32輸入,利用INT0, 故障2從P33輸入,利用INT1,使用L1作為故障1的指示燈,L2作為故障2的指示燈。 程序清單: ORG 0000H AJMP MIAN ORG 0003H AJMP GU1 ORG 0013H AJMP GU2 ORG 1000H MAIN: MOV TCON,#05H MOV IE,#85H HERE: SETB P1.0 SETB P1.1 GU1:CLR P1.0 JB P3.2,GU1 RETI GU2: CLR P1.1 JB P3.3,GU2 RETI END 4、 利用MSC1211或8051設(shè)計(jì)應(yīng)答方式下的多機(jī)通訊程序。通訊參數(shù):晶振為11.0592MHz,9600,n,8,1。通訊過(guò)程如下:主機(jī)首先發(fā)送從機(jī)地址,從機(jī)收到地址后進(jìn)行比較,如果地址相符,則將從機(jī)地址回發(fā)給主機(jī)作為應(yīng)答信號(hào)。主機(jī)收到從機(jī)的地址應(yīng)答信號(hào)后,將內(nèi)存單元中的120個(gè)數(shù)據(jù)發(fā)送給從機(jī),并進(jìn)行數(shù)據(jù)塊校驗(yàn)(將各個(gè)數(shù)據(jù)進(jìn)行異或),若校驗(yàn)正確,則從機(jī)發(fā)送00H給主機(jī),否則發(fā)送0FFH給主機(jī),主機(jī)重新發(fā)送數(shù)據(jù)。(應(yīng)在適當(dāng)?shù)牡胤郊映绦蜃⑨專(zhuān)? 解:主機(jī)程序如下: ORG 0000H LJMP MAINT ;跳至主程序入口地址 ORG 0023H ;串行口中斷服務(wù)程序入口 LJMP INTST MAINT: MOV SCON,#90H ;置工作方式2,并允許接收 MOV TMOD,#20H ;置T1工作方式2 MOV TH1,#0FDH MOV TL1,#0FDH MOV DPTR,#ADDR ;設(shè)置數(shù)據(jù)塊首址ADDR的地址指針 MOV R0,#120 ;設(shè)置發(fā)送字節(jié)數(shù) MOV R1,#00H ;設(shè)置校驗(yàn)和的初值 MOV R2,#NAME SETB TB8 ;置位TB8位,作為發(fā)送地址楨信息特征 SETB TR1 SETB EA ;CPU開(kāi)中斷 SETB ES ;允許串行口中斷 MOV A,R2 ;發(fā)送地址楨信息 MOV SBUF,A SJMP $ ;中斷服務(wù)程序 INTST: MOV A,TB8 ;判斷是發(fā)送地址還是數(shù)據(jù),若為數(shù)據(jù)則轉(zhuǎn)LOOP0 CJNE A,01H,LOOP0 CLR TI ;地址楨信息發(fā)送完后清發(fā)送中斷 LOOP0:JB RI,LOOP1 ;檢查是否是接受中斷?若RI=1則轉(zhuǎn)入接受乙機(jī)發(fā)送應(yīng)答信息 CLR TI ;因RI=0,表明是甲機(jī)發(fā)送中斷數(shù)據(jù)的中斷請(qǐng)求。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 ;甲機(jī)發(fā)送一數(shù)據(jù)完畢跳至中斷返回程序 LOOP1:CLR RI ;清接受中斷標(biāo)志 MOV A,TB8 ;判斷是發(fā)送地址還是數(shù)據(jù),若為數(shù)據(jù)則轉(zhuǎn)LOOP2 CJNE A,#01H,LOOP4;若TB8為0則接受的為乙機(jī)數(shù)據(jù)校驗(yàn)應(yīng)答 MOV A,SBUF ;取乙機(jī)的應(yīng)答數(shù)據(jù) CJNE A,@R2,LOOP2 ;若乙機(jī)應(yīng)答信息不是從機(jī)地址,則地址傳送不正確,則轉(zhuǎn)LOOP2程序重新發(fā)送地址信息,否則清TB8,發(fā)送數(shù)據(jù) CLR TB8 LOOP3:MOVX A,@DPTR ;取下一個(gè)數(shù) MOV SBUF,A ;啟動(dòng)串行口,發(fā)送新的數(shù)據(jù) XRL A,@R1 MOV @R1,A INC DPTR ;修改地址指針 DEC R0 ;修改發(fā)送字節(jié)數(shù)記數(shù)值 CJNE R0,#00H,ENDT ;判別120個(gè)字節(jié)數(shù)據(jù)都發(fā)送完沒(méi)有。如果沒(méi)有發(fā)送完則跳至中斷返回程序。繼續(xù)發(fā)送 MOV A,@R1 MOV SBUF,A ;數(shù)據(jù)全部發(fā)送完畢則發(fā)送校驗(yàn)和 LJMP ENDT LOOP4:MOV A,SBUF ;取乙機(jī)的應(yīng)答數(shù)據(jù) CJNE A,#00H,LOOP5 ;若數(shù)據(jù)發(fā)送不正確,則轉(zhuǎn)LOOP5重新發(fā)送 CLR ES ;全部發(fā)送完畢,禁止串行口中斷 LOOP5:MOV DPTR,#ADDR ;設(shè)置數(shù)據(jù)塊首址ADDR的地址指針 MOV R0,#120 ;設(shè)置發(fā)送字節(jié)數(shù) MOV R1,#00H ;設(shè)置校驗(yàn)和的初值 LJMP LOOP2 LOOP2:MOV A,R2 ;發(fā)送地址楨信息 MOV SBUF,A RETI ENDT: RETI END 從機(jī)程序如下: ORG 0000H LJMP MAINR ;跳至主程序入口地址 ORG 0023H ;串行口中斷服務(wù)程序入口 LJMP INTSR MAINR:MOV SCON,#0B0H ;置工作方式2,并允許接收 MOV TMOD,#20H ;置T1工作方式2 MOV TH1,#0FDH MOV TL1,#0FDH MOV DPTR,#ADDR ;設(shè)置數(shù)據(jù)塊接收首址為ADDR MOV R0,#120 ;設(shè)置接收字節(jié)數(shù) MOV R2,#NAME MOV R1,#00H ;設(shè)置校驗(yàn)和的初值 SETB RB8 ;置位RB8位,作為接受地址信息特征 SETB TR1 SETB EA ;CPU開(kāi)中斷 SETB ES ;允許串行口中斷 SJMP $ ;中斷服務(wù)程序 INTSR: MOV A, RB8 ;判斷是接收地址還是數(shù)據(jù),若為數(shù)據(jù)則轉(zhuǎn)LOOP0 CJNE A,01H,LOOP0 CLR RI ;地址楨信息接受完后清接收中斷 MOV A,SBUF XRL A,@R2 JZ LOOP ;若地址相符則轉(zhuǎn)LOOP,否則中斷返回 LJMP ENDR LOOP: CLR SM2 CLR RB8 MOV A,@R2 MOV SBUF,A ;想主機(jī)發(fā)送從機(jī)地址 LJMP ENDR LOOP0:JB RI,LOOP1 ;檢查是否是接受中斷?若RI=1則轉(zhuǎn)入接受甲機(jī)發(fā)送的數(shù)據(jù) CLR TI ;因RI=0,表明是乙機(jī)發(fā)送中斷數(shù)據(jù)的中斷請(qǐng)求。CPU響應(yīng)中斷,在中斷服務(wù)程序中應(yīng)清中斷標(biāo)志 LJMP ENDR ;甲機(jī)發(fā)送一數(shù)據(jù)完畢跳至中斷返回程序 LOOP1:CLR RI ;清接受中斷標(biāo)志 DEC @R0 JZ LOOP2 ;數(shù)據(jù)未接收完則中斷返回,若接收完則轉(zhuǎn)LOOP2,校驗(yàn) MOV A,SBUF ;取甲機(jī)發(fā)送的數(shù)據(jù) MOVX @DPTR,A XRL A,@R1 MOV @R1,A LOOP2:MOV A,SBUF :取甲機(jī)發(fā)送的校驗(yàn)和 XRL A,@R1 JZ RIGHT LJMP WRONG RIGHT:MOV A,#00H MOV SBUF,A LJMP ENDR WRONG:MOV A,#0FFH MOV SBUF,A MOV DPTR,#ADDR ;設(shè)置數(shù)據(jù)塊接收首址為ADDR MOV R0,#120 ;設(shè)置接收字節(jié)數(shù) LJMP ENDR ENDR: RETI END 5、 利用MSC1211的A/D構(gòu)成數(shù)據(jù)采集系統(tǒng)。使用模擬通道0進(jìn)行連續(xù)數(shù)據(jù)采集,采集8次后取得平均值,存放到預(yù)先分配好的100個(gè)內(nèi)存單元中,這100個(gè)單元存滿(mǎn)后,再?gòu)牡谝粋€(gè)單元進(jìn)行覆蓋保存。寫(xiě)出完整的程序清單(應(yīng)在適當(dāng)?shù)牡胤郊映绦蜃⑨專(zhuān)? 解:#include- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
5 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 單片機(jī) 原理 應(yīng)用 答案
鏈接地址:http://ioszen.com/p-12773494.html