版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、3-3訪問外部數(shù)據(jù)存儲器和程序存儲器可以用哪些指令來實(shí)現(xiàn)?舉例說明。答:訪問外部數(shù)據(jù)存儲器可以用以下指令實(shí)現(xiàn):解:MOVXA,Ri;(Ri)f寄存器Ri指向的片外RAM地址中的內(nèi)容送到累加器A中MOVXRi,A;Af(Ri),累加器中內(nèi)容送到寄存器Ri指向的片外RAM地址中MOVXA,DPTR;(DPTR)-A,數(shù)據(jù)指針指向的片外RAM地址中的內(nèi)容送到累加器A中MOVXDPTR,A;Af(DPTR),累加器中內(nèi)容送到數(shù)據(jù)指針指向的片外RAM地址中訪問程序存儲器可以用以下指令實(shí)現(xiàn):MOVCA,A+DPTR;(A+DPTR)fA,表格地址單元中的內(nèi)容送到累加器A中MOVCA,A+PC;PC+1fP
2、C,(A+PC)fA,表格地址單元中的內(nèi)容送到累加器A中3-4試用下列3#尋址方式編程,將立即數(shù)0FH送入內(nèi)部RAM的30H單元中。(1)立即尋址方式;(2)寄存器尋址方式;(3)寄存器間接尋址方式答(1)立即尋址方式:MOV30H,#0FH(2)寄存器尋址方式:MOVR5,#0FHMOV30H,R5(3)寄存器間接尋址方式:MOVR1,#0FH3-7寫出實(shí)現(xiàn)下列要求的指令或程序片段。(1)將R0的內(nèi)容傳送到R1;(2)內(nèi)部RAM的20H單元內(nèi)容傳送到寄存器R1;(3)內(nèi)部RAM的20H單元的D7和D3位清零,其它位保持不變;(4)外部RAM的1000H單元內(nèi)容傳送到內(nèi)部RAM的60H單元中;
3、(5)外部RAM的1000H單元內(nèi)容傳送到寄存器R2;(6)清除累加器高4位。答:(1)MOVA,R0MOVR1,A(2) MOVR1,20H(3) MOVA,20HANLA,#77H(4) MOVDPTR,#1000HMOVXA,DPTRMOV60H,A(5) MOVDPTR,#1000HMOVXA,DPTRMOVR2,A(6) 6)ANLA,#0FH3-8試編寫一段程序,將內(nèi)部數(shù)據(jù)存儲器30H、31H單元內(nèi)容傳送到外部數(shù)據(jù)存儲器1000H、1001H單元中。答:MOVA,30HMOVDPTR,#1000HMOVDPTR,AMOVA,31HMOVDPTR,#1000HMOVDPTR,A3-9
4、試編寫一段程序,將外部數(shù)據(jù)存儲器40H單元中的內(nèi)容傳送到0100H單元中。答:MOVDPTR,#0040HMOVA,DPTRMOV0100H,A3-10試編寫段程序,將R3中的數(shù)乘4(用移位指令)。答:MOVA,R3MOV23H,#02HL0:DJNZ23H,L1L1:RLASJMPL03-11試編寫一段程序,將R2中的各位倒序排列后送入R3中。答:MOVA,R2MOV23H,#08HL0:DJNZ23H,L1L1:RLASJMPL0MOVR3,A3-12試編寫一段程序,將P1口的高5位置位,低3位不變。答:MOVA,P1ORLA,#F8HMOVP1,A4-4編寫程序,將片內(nèi)30H39H單元中
5、的內(nèi)容送到以2000H為首的外部存儲器。答:ORG0000HSTART:MOVR0,#30HMOVDPTR,#2000HMOVR1,#10CLRALOOP:MOVA,R0MOVXDPTR,ADECR1DJNZR1,LOOPEND4-5編寫程序,采用算術(shù)平均值濾波法求采樣平均值,設(shè)8次采樣值依次放在20H27H的連續(xù)單元中,結(jié)果保留在A中。答:FILT:CLRAMOVR2,AMOVR3,AMOVR0,#20HMOVR7,#08H;初始化FILT1:MOVA,R0ADDA,R3MOVR3,ACLRAADDCA,R2MOVR2,AINCR0DJNZR7,FILT1;累加采木值到R3,累加進(jìn)位到R2=
6、00000xxxBFILT2:SWAPARLA;R2/8,節(jié)省一個指令周期XCHA,R3SWAPARLA;R3/8,節(jié)省一個指令周期ADDA,#80H;四舍五入ANLA,#1FH;屏蔽移位進(jìn)入的前三位ADDCA,R3;結(jié)果相加END;取平均值4-6編寫程序,將存放在內(nèi)部RAM起始地址為20H和30H的兩個3字節(jié)無符號相減,結(jié)果存放在內(nèi)部RAM單元70H、71H、72H中(低位對應(yīng)低字節(jié))。答:ORG0000HSTART:MOVR0,#20HMOVR1,#30HMOVR2,#03HCLRC50: LCALLXUMOV70H,ALCALLXUMOV70H,ALCALLXUMOV70H,A51: M
7、OVA,R0SUBBA,R1INCR0INCR1RETEND4-7編寫程序,實(shí)現(xiàn)兩個雙字節(jié)無符號數(shù)的乘法運(yùn)算,乘數(shù)存放在R2和R3中(R2存放高字節(jié),R3存放低字節(jié),以下類同),被乘數(shù)存放在R6和R7中,積存放在R4、R5、R6和R7中。答:ORG0000HDMUL:MOVA,R3MOVB,R7MULABMOVR0,AMOVR1,B;低8位*低8位MOVA,R2MOVB,R7MULABADDA,R1MOVR1,AMOVA,BADDCA,#00HMOVR5,A;高8位*低8位MOVA,R3MOVB,R6MULABADDA,R1MOVR1,AMOVA,R5ADDCA,BMOVR5,AMOVA,#0
8、0HADDCA,#00HMOVR4,A;低8位*高8位MOVA,R3MOVB,R6MULABADDA,R5MOVR5,AMOVA,R4ADDCA,BMOVR4,A;高8位*高8位MOVA,R0MOVR7,AMOVA,R1MOVR6,A;R0、R1R7、R6END4-8假設(shè)在R0指向的片內(nèi)RAM區(qū),存有20個16進(jìn)制數(shù)的ASCII字串。將ASCII碼轉(zhuǎn)換為16進(jìn)制數(shù),然后兩兩合成一個字節(jié),從低地址單元到高地址單元依次組合。答:ORG0000HSTART:MOVR7,#20S0:MOVA,R0MOVR1,A;R1為中間量MOVA,R0CLRCSUBBA,#30HMOVR1,AJCS01MOVA,R
9、0SUBBA,#07HMOVR1,AS01:INCR0MOVA,R0CLRCSUBBA,#30HSWAPAORLA,R1MOVR1,AJCS02MOVA,R0SUBBA,#07HSWAPAORA,R1MOVR1,AS02:INCR0DJNZR7,S0END4-9結(jié)合例4-24和圖4-5編寫線性標(biāo)度變換程序。答:將256近似255,256比255做浮點(diǎn)運(yùn)算簡單很多PUSHACCPUSHPSWMOVA,#AmMOV20H,#A0CLRCSUBBA,20H;將256近似255,則A為小數(shù)點(diǎn)后的位MOV21H,#NxMOVB,21HMULAB;B為整數(shù)位,A為小數(shù)點(diǎn)后的位ADDA,#80H;四舍五入M
10、OVA,BADDCA,#A0MOV38H,APOPPSWPUSHACCRET5-4試編寫一段程序,將內(nèi)部數(shù)據(jù)存儲器30H、3lH單元內(nèi)容傳送到外部數(shù)據(jù)存儲器1000H、1001H單元中去。答:#include<reg52.h>#include<absacc.h>voidmain(void)unsignedinttemp;temp=DWORD0x0030;XWORD0x1000=temp;while(1);5-5試編寫一段程序,將外部數(shù)據(jù)存儲器40H單元中的內(nèi)容傳送到50H單元。答:方法一:#include<reg52.h>#include<absacc
11、.h>voidmain(void)XBYTE0x0050=XBYTE0x0040;while(1);方法二:#include<reg52.h>#include<absacc.h>voidmain(void)unsignedcharxdata*xp;unsignedchardatatemp;xp=0x0040;temp=*xp;xp=0x0050;*xp=temp;while(1);5-6試編寫段程序,將R3中的數(shù)乘以4。答:#include<reg52.h>voidmain(void)unsignedintdata*a;#pragmaasmMOV30H
12、,R3#pragmaendasma=0x30;*a=*a*4;while(1);5-7試編寫段程序,將R2中的各位倒序排列后送入R3中。答:考慮C中沒有循環(huán)移位,對于這種很低級的運(yùn)算,采用嵌入?yún)R編的方式完成。#include<reg52.h>voidmain(void)#pragmaasmMOVR7,#08HMOVR3,#00HDEL:CLRCYMOVA,R2RLCAMOVR2,AMOVA,R3RRCAMOVR3,ADJNZR7,DEL#pragmaendasmwhile(1);5-8試編寫一段程序,將P1口的高附:置位,低3位不變。答:#include<reg52.h>
13、;voidmain(void)P1|=0xf8;while(1);5-9設(shè)8次采樣值依次存放在20H27H的連續(xù)單元中,采用算術(shù)平均值濾波法求采樣平均值,結(jié)果保留在30H單元中。試編寫程序。答:#pragmasmall#include<reg52.h>voidmain(void)unsignedchar*dp=0x20,i;floattemp=0;for(i=0;i<8;i+)temp+=*dp;dp+;temp/=8;dp=0x30;*dp=temp;while(1);5-10從20H單元開始有一無符號數(shù)據(jù)塊,其長度在20H單元中。編寫程序找出數(shù)據(jù)塊中最小值,并存入21H單
14、元。答:#pragmasmall#include<reg52.h>voidmain(void)unsignedchar*dp,num,min,i;dp=0x20;num=*dp;dp+;for(i=1;i<num;i+)min=*dp;dp+;if(min>*dp)min=*dp;dp=0x21;*dp=min;while(1);6-10某系統(tǒng)有三個外部中斷源1、2、3,當(dāng)某一中斷源變低電平時便要求CPU處理,它們的優(yōu)先處理次序由高到低為3、2、1,處理程序的入口地址分別為2000H、2100H、2200H。試編寫主程序及中斷服務(wù)程序(轉(zhuǎn)至相應(yīng)的入口即可)。答:對系統(tǒng)的
15、三個外中斷源,可利用MCS-51的2個外中斷源INT0和INTI,再將定時/計數(shù)器T1作為擴(kuò)展的外部中斷使用,INT0接外中斷源3,INTI接外中斷源2,定時/計數(shù)器T1接外中斷源1,3個中斷源設(shè)置為同級中斷,外中斷源1、2、3依次接到P1.0、P1.1、P1.2上。匯編語言程序代碼如下:ORG0000H;復(fù)位入口地址AJMPMAIN;轉(zhuǎn)主程序ORG0003HAJMPINT1ORG0100HMAIN:MOVTMOD,#60H;T1方式2MOVTH1,#0FFHMOVTL1,#0FFH;置初值SETBTR1;啟動計數(shù)器T1SETBEA;CPU中斷開放SETBET1;允許T1中斷SETBIT0;允
16、許外中斷0產(chǎn)生中斷SETBIT1SETBPX0;外中斷0為高級中斷SETBPX1SETBPT1SETBIT0;外中斷0為跳沿觸發(fā)方式SETBIT1LOOP1:SJMPLOOP1;等待中斷;中斷服務(wù)程序ORG1000HINT1:PUSHPSW;保護(hù)現(xiàn)場PUSHACCJBP1.0,IR1;P1.0高,外中斷1有請求JBP1.1,IR2;P1.1高,外中斷2有請求JBP1.2,IR3;P1.2高,外中斷3有請求INTIR:POPACC;恢復(fù)現(xiàn)場POPPSWRETI;中斷返回ORG2000HIR1:外;中斷1的中斷處理程序AJMPINTIRORG2100HIR2:外;中斷2的中斷處理程序AJMPINT
17、IRORG2200HIR3:外;中斷3的中斷處理程序AJMPINTIREND7-5采用定時/計數(shù)器T0對外部脈沖進(jìn)行計數(shù),每計數(shù)100個脈沖后,T0轉(zhuǎn)為定時工作方式。定時1ms后,又轉(zhuǎn)為計數(shù)方式,如此循環(huán)不止。假定MCS-51單片機(jī)的晶體振蕩器頻率為6MHz,請使用方式1 實(shí)現(xiàn),要求編寫出程序。答:ORG0000HSTART:CLRTR0MOVTMOD,#05HMOVTH0,#0FFHMOVTL0,#9CH;計數(shù)器初始化50: JBCTF0,NEXTSJMPS0NEXT:CLRTR0MOVTMOD,#01HMOVTH0,#0F8HMOVTL0,#30H;定時器初始化SETBTR051: JBC
18、TF0,STARTSJMPS1END7-7編寫程序,要求使用T0,采用方式2定時,在P1.0輸出周期為400ds占空比為10:1的矩形脈沖。答:本題采用晶體振蕩器頻率為12MHz,使用定時器配合計數(shù)器,設(shè)計成一個40d定時將P1.0置0和一個400科定時將P1.0置1。ORG0000H;中斷入口地址AJMPSTARTORG000BH;定時器0的中斷向量地址AJMPTIME0ORG0030HSTART:MOVSP,#5FHMOV30H,#00H;軟件計數(shù)器清零MOVTMOD,#02H;T0工作在方式1MOVTH0,#216MOVTL0,#216SETBEASETBET0SETBTR0;任意程序段
19、TIME0:PUSHACC;中斷處理子程序PUSHPSWCLRP1.0INC30HMOVA,30HCJNEA,#10,T0_4SETBP1.0MOV30H,#00HT0_4:POPPSWPOPACCRETIEND7-9利用定時/計數(shù)器T0產(chǎn)生定時時鐘,由P1口控制8個指示燈。編一個程序,使8個指示燈依次一個一個閃動,閃動頻率為20次/秒(8個燈依次亮一遍為一個周期)。答:本題采用晶體振蕩器頻率為12MHz,每個燈的閃爍周期是:50ms,采用工作方式1。ORG0000HAJMPSTARTORG000BHAJMPTIME0ORG0030HSTART:MOVSP,#5FHMOVR7,#0FEHMOV
20、TMOD,#01H;T0在工作方式1MOVTH0,#3CHMOVTL0,#0B0HSETBEASETBET0SETBTR0S0:AJMPS0;此處放任意程序段TIME0:PUSHACCPUSHPSWMOVP1,R7MOVA,R7RLAMOVR7,AMOVTH0,#3CHMOVTL0,#0B0HPOPPSWPOPACCRETIEND7-11編寫一段程序,功能要求為:當(dāng)P1.0引腳的電平正跳變時,XP1.1的輸入脈沖進(jìn)行計數(shù);當(dāng)P1.2引腳的電平負(fù)跳變時,停止計數(shù),并將計數(shù)值寫入R0、R1(高位存R1,低位存R0)。答:將P1.1的輸入脈沖接入T0,即使用T0計數(shù)器完成對P1.1口的脈沖計數(shù)。R2
21、中記T0計滿數(shù)的次數(shù)。程序代碼如下:ORG0000HLJMPMAINORG000BHLJMPIT0MAIN:JNBP1.0,MAINMOVTMOD,#05H;定時/計數(shù)器T0為計數(shù)方式1SETBTR0;啟動T0,開始計數(shù)SETBET0;允許T0中斷SETBEA;CPU開中斷WAIT:JBP1.2,WAITCLREACLRTR0MOVR1,TH0MOVR0,TL0AJMP$IT0:INCR2RETI7-18為什么定時/計數(shù)器T1用做串行口波特率發(fā)生器時,應(yīng)采用方式2?若已知時鐘頻率、通信波特率,如何計算其初值?答:因?yàn)榉绞?是有自動重裝載計數(shù)值的功能,從而可以產(chǎn)生精確的波特率。串行工作方式0和方
22、式2波特率是固定的,所以不用設(shè)初值;串行工作方式1和方式3時:波特率:BR=(ZSMOD燈”32溢出一次的時間:1/Td=(256-TH1)*12/fosc溢出率:Td=fosc/l2(256-TH1)初值:TH1=256-fosc/(12*Td)7-19若晶體振蕩器為11.059MHz,串行口工作于方式1,波特率為4800b/s,寫出用T1作為波特率發(fā)生器的方式控制字和計數(shù)初值。答:MOVTMOD,#20HMOVTH1,#0FAHMOVTL1,#0FAHSETBTR1MOVSCON,#50H7-20利用單片機(jī)串行口擴(kuò)展24個發(fā)光二極管和8個按鍵,要求畫出電路圖并編寫程序使24個發(fā)光二極管按照
23、不同的順序發(fā)光(發(fā)光的時間間隔為1s)。答:ORG1000HSTART:MOVSCON,#00H;串行口工作方式0MOVR0,#00HMOVR7,#03HMOVR6,#24HCLRP1.0;關(guān)閉并行輸出LOOP:MOVA,R0MOVDPTR,#TAB;查表取數(shù),送出MOVCA,A+DPTRMOVSBUF,AOUT0:JNBTI,OUT0INCR0CLRTIDJNZR7,LOOPSETBP1.0;開啟并行輸出ACALLDELAYDJNZR6,STARTAJMPLOOPDELAY:MOVR2,#250D1:MOVR3,#100D2:MOVR4,#20D3:DJNZR4,D3DJNZR3,D2DJN
24、ZR2,D1RETTAB:DB00000000B,00000000B,00000001B,00000000BDB00000000B,00000010B,00000000B,00000000BDB00000100B,00000000B,00000000B,00001000BDB00000000B,00000000B,00010000B,00000000BDB00000000B,00100000B,00000000B,00000000BDB01000000B,00000000B,00000000B,10000000BDB00000000B,00000001B,00000000B,00000000B
25、DB00000010B,00000000B,00000000B,00000100BDB00000000B,00000000B,00001000B,00000000BDB00000000B,00010000B,00000000B,00000000BDB00100000B,00000000B,00000000B,01000000BDB00000000B,00000000B,10000000B,00000000BDB00000001B,00000000B,00000000B,00000010BDB00000000B,00000000B,00000100B,00000000BDB00000000B,00
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廠房租賃補(bǔ)充協(xié)議
- 2025年分期付款信用協(xié)議
- 2025年衛(wèi)浴產(chǎn)品設(shè)計合同
- 中國阿奇霉素腸溶片市場全面調(diào)研及行業(yè)投資潛力預(yù)測報告
- 2025版木材認(rèn)證機(jī)構(gòu)服務(wù)采購合同示范3篇
- 二零二五年度公司股權(quán)激勵項(xiàng)目財務(wù)規(guī)劃與預(yù)算合同3篇
- 2025年度儲煤場租賃與煤炭交易結(jié)算服務(wù)合同3篇
- 2025年度新能源行業(yè)競業(yè)限制解除通知
- 2025年度私人車位租賃與車位租賃期限續(xù)簽合同
- 2025年度車庫使用權(quán)轉(zhuǎn)讓及車位租賃權(quán)分配協(xié)議
- 2024多級AO工藝污水處理技術(shù)規(guī)程
- 2024年江蘇省鹽城市中考數(shù)學(xué)試卷真題(含答案)
- DZ∕T 0287-2015 礦山地質(zhì)環(huán)境監(jiān)測技術(shù)規(guī)程(正式版)
- 2024年合肥市廬陽區(qū)中考二模英語試題含答案
- 質(zhì)檢中心制度匯編討論版樣本
- 藥娘激素方案
- 提高靜脈留置使用率品管圈課件
- GB/T 10739-2023紙、紙板和紙漿試樣處理和試驗(yàn)的標(biāo)準(zhǔn)大氣條件
- 《心態(tài)與思維模式》課件
- C語言程序設(shè)計(慕課版 第2版)PPT完整全套教學(xué)課件
- 危險化學(xué)品企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化課件
評論
0/150
提交評論