《单片机习题参考答案.docx》由会员分享,可在线阅读,更多相关《单片机习题参考答案.docx(20页珍藏版)》请在课桌文档上搜索。
1、单片机习题参考答案第四章P976,7,9,10,12,16,17,18,19,23,27,28,296 .在80051片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H,请分析下段程序中各指令的作用,并翻译成相应的机器码;说明源操作数的寻址方式及顺序执行每条指令后的结果。机器码(三)指令结果源操作数的寻址方式E540MOVA,40H;A=(40H)=48H直接寻址F8MOVR0,A;R0=48H寄存器寻址7590F0MOVP1,#OFOH;P1=OFOH立即寻址A630MOVR0,30H;(48H)=38H直接寻址901246MOVDPTR,#12
2、46H;DPTR=1246H立即寻址853840MOV40H,38H;(40H)=40H直接寻址A830MOVR0,30H;R0=38H直接寻址8890MOV90H,RO;(90H)=38H寄存器寻址754830MOV4H,#30H;(48H)=30H立即寻址E6MOVA,Ro;A=40H寄存器间接寻址8590A0MOVP2,P1;P2=P1=38H直接寻址7 .试说明下列指令的作用,并将其翻译成机器码,执行最后一条指令对PSW有何影响?A的终值为多少?机器码(三)指令结果7872MOVR0,#72H;R0=72HE8MOVA,RO;A=72H,P=O2448ADDA,#4BH;A=BDH,C
3、Y=O,0V=1,AC=O,P=O7402MOVA,#02H;A=02H,P=1F5F0MOVByA;B=02H740AMOVA,#OAH;A=OAHfP=O25F0ADDA,B;A=OCH,CY=O,0V=0,AC=O,P=OA4MULAB;A=18H,B=0,CY=O,0V=0,AC=O,P=O74如MOVA,#20H;A=20H,P=1F5F0MOVB,A;B=20H25F0ADDA,B;A=40H,CY=O,0V=0,AC=O,P=19410SUBBA,#10H;A=30H,CY=O,0V=0,AC=O,P=O84DIVAB;A=01H,B=10H,CY=O,0V=0,AC=O,P=1
4、9 .试编程将片外数据存储器60H中的内容传送到片内RAM54H单元中。MOVDPTR,#006OHMOVXA,0DPTRMOV54H,A(MOVP2,#0MOVRO,#60HMOVXA,R0MOV54H,A)10 .试编程将寄存器R7内容传送到Rl中去。MOVA,R7MOVR1,A12 .试说明下段程序中每条指令的作用,并分析当执行完指令后,Ro中的内容是什么?MOVRO,#0A7H;R0=A7HXCHA,RO;A=A7H,A的内容暂存ROSWAPA;A=7AHXCHA,RO;R0=7AH,A的内容恢复16.试编程将片外RAM中30H和31H单元的内容相乘,结果存放在32H和33H单元中,高
5、位存放在33H单元中。MOVP2.#0MOVDPTR,#30HMOVRO,#30HMOVXA,DPTRMOVXA,R0MOVB,AMOVB,AINCDPTRINCROMOVXA,0DPTRMOVXA,R0MULABMULABINCDPTRINCROMOVXQPTR,AMOVX9R0,AINCDPTRINCROMOVA,BMOVMOVXA,B龈),A17.试用三种方法将累加器A中无符号数乘2。(1) CLRCRLCA(2) MOVR0,AADDA,RO或ADDA,ACC(3) MOVB,#2MULABMOVXQPTR,A18 .请分析依次执行下面指令的结果:MOV30H,#0MH;(30H)=A
6、4HMOVA,#0D6H;A=D6H,P=1MOVR0,#30H;R0=30HMOVR2,#47H;R2=47HANLA,R2;A=46H,P=1ORLA,RO;A=E6H,P=1SWAPA;A=6EH,P=1CPLA;A=91H,P=1XRLA,#OFFH;A=6EH,P=1ORL30H,A;(30H)=EEH19 .求执行下列指令后,累加器A及PSW中进位位CY、奇偶位P和溢出位OV的值。(1)当A=5BH时;ADDA1#8CH01011011+)I(XX)IIoO11100111结果:A=E7H,CY=O,0V=0,P=0,AC=I(2)当A=5BH时;ANLA1#7AH01011011
7、2OlllIoIO01011010结果:A=5AH,P=O(3)当A=5BH时;XRLA1#7FH01011011)0111111100100100结果:A=24H,P=O(4)当A=5BH,CY=I时;SUBBA1#0E8H01011011或将减法转换成补码加法0101101111101000-E8H的补码00011000一)1-1的补码+)1111111101110010101110010结果:A=72H.CY=1.OV=O1P=O1AC=O23.执行下述程序后,SP=? A=? B=?码。地址(H)机器码(H)ORG200H0200758140MOVSP1 #40H02037430MOV
8、A1 #30H0205120250LCALL250H02082410ADDA1 #10H020AF5F0MOVB1 A020C80FE L1:SJMPL1ORG0250H025090020AMOVDPTRf #20AH;02530082PUSHDPL0255C083PUSHDPH025722RET解释每一条指令的作用,并将其翻译成机器;SP=40H;A=30H;调用250H开始的子程序SP=42H,;(42H)=02H, (41H)=08H;此句没有执行;B=30HDPTR=020AH;DPL 进栈,SP=43H, (43H)=0AH;DPH 进栈,SP=44H, (44H)=02H;返回,此
9、处是利用RET将栈顶内容弹出 PC=020AH, SP=42H27 .试编一程序将外部数据存储器210OH单元中的高4位置m1m,其余位清0”。MOVDPTR,#21OOHMOVXA,DPTRANLA1#0F0HMOVA,#0F0HORLA,#0F0HMOVX0DPTR,A28 .试编程将内部数据存储器40H单元的第0位和第7位置1,其余位变反。MOVA,40HCPLASETB(或ORLA1#81H)SETBMOV40H,A29 .请用位操作指令,求下面逻辑方程:(I)Pl.7=ACC.0A(ROVP2.1)vP32MOVC,ORLC1ANLC1ORLC1/MOV,C(2)PSW.5=P1.3
10、ACC.2vB.5P11MOVC1ANLC1ORLC1ANLC,/MOV,C(3)P2.3=PL5aBAvACC.7APl.0MOVC,ANLC,/ORLC,/ANLC1MOV,C第五章P1121,3,6,7,11,201.编程将片内40H60H单元中内容送到以3000H为首的片外RAM存储区中方法1:MOVR0,#40HMOVDPTR,#3000HMOVR2f#21HLP:MOVA10R0MOVXQPTR,AINCROINCDPTRDJNZIR2,LOOP方法2:MOVR0,#40HMOVDPTR,#3000HMOVR2,#0LOOP:MOVA,R0MOVX0DPTR,AINCROINCDP
11、TRINCR2CJNEIR2f#21H.LOOP方法3:MOVR0,#40HMOVDPTR,#3000HLOOP:MOVA,叙0MOVXDPTR,AINCROINCDPTRCJNEIR0,#61H,LOOP补充:编程将ROi中3000H-3020H单元的内容送片内RAM40H60H单元中去MOVR0,*(40HMOVDPTR1#3000HMOVR2,*t21HLOOP:CLRAMOVCA,A+DPTRMOVR0,AINCROINCDPTRDJNZR2,L.OOP3.编程计算片内RAM区50H57H8个单元中数的算术平均值,结果存放在5AH中。解:ORG2000HMOVRO1#50HCLRAMO
12、VR2,ALP:ADDA1eR0JNCDOWNINCR2DOWN:INCROCJNERO,#58H,LOOPMOVR7,#3SHIFT:XCHA,R2CLRCRRCAXCHA,R2RRCADJNZR7,SHIFTMOV5AH,A6.设有100个有符号数,连续存放在以200OH为首地址的片外RAM存储区中,试编程统计其中正数、负数、零的个数。方法1:CLRAMOVR5,A;存零的个数MOVR6,A;存负数的个数MOVR7,A;存正数的个数MOVR2,#100MOVDPTR,#2000HLOOP:MOVXA1WPTRJNZNZEROINCR5SJMPDOWNNZERO:JNB,PLUSINCR6S
13、JMPDOWNPLUS:INCR7DOWN:INCDPTRDJNZIR2,LOOP方法2:ICLRAMOVR5,A;存零的个数MOVR6,A;存负数的个数MOVR7,A;存正数的个数MOVR2,#100MOVDPTR1#2000HLOOP:MOV)(A,DPTRINCDPTRCJNE=A,#0,NZEROINCR5SJMF)DOWNNZERO:JCNEGATIVEINCR7SJMPDOWNNEGATIVE:INCR6DOWN:DJNZR2,LOOPI7 .请将片外数据存储器地址为100OH103OH的数据块,全部搬迁到片内RAM30H60H中,并将原数据块区域全部清t40w解:ORGMOVMO
14、VMOV1.OOP:MOVXMOVCLRMOVXINCINCDJNZ1000HDPTR,#1000HR0,#30HR2,#31HA,WPTRR0,AA0DPTR,ARODPTRR2,LOOP8 .试编写一子程序,使间址寄存器Rl所指向的2个片外RAM连续单元中的高4位二进制数合并为1个字节装入累加器A中。已知RO指向低地址,并要求该单元高4位放在A的高4位中。XX:MOVXA,酬ANLA,#OFOHMOVB1AINCMOVXR1A,9R1ANLA,#OFOHSWAPAORLA.BRET10.试编一查表程序,从首地址为100OH、长度为100的数据块中找出ASCll码A,将其地址送到WAOH和I
15、OAlH单元中。MOVDPTR,#1000HMOVR7,#100LP:MOVXCJNEA,m)PTRA,#A,NXETMOVA,DPLMOVB,DPHMOVDPTR,#10A0HMOVXDPTR,AMOVA.BINCDPTRMOVXDPTR,ASJMP$NEXT:INCDPTRDJNZR7,LPSJMP$11.设在200H204H单元中存放有5个压缩BcD码,编程将它们转换成ASCIl码,存放到以205H单元为首地址的存储区中。方法1:ORG1000HMOVP2,#02HMOVR0f#00HMOVR1,#05HMOVR2,#05LOOP:MOVXA1R0ANLA,#OFHORLA,#30HMO
16、VXR1,AINCR1MOVXA,R0SWAPAANLA,#OFHORLA,#30HMOVXR1VAINCR1INCRODJNZIR2,LP方法2:IORG1000HMOVR2,#02HMOVR3,#00HMOVR4,#05HMOVR7,#05MOVDPH,R2LP:MOVDPL,R3MOVXA,DPTRMOVB,AINCDPTRMOVR3,DPLMOVDPL,R4ANLA,#OFHORLA,#30HMOVX9DPTR,AINCMOVSWAPANLORLMOVXINCMOVDJNZDPTRA,BAA1#0FHAv#30H0DPTR,ADPTRR4,DPLR7,LOOP13.试编程实现下列逻辑表
17、达式的功能。设为8个变的输入端,而其中又作为变输出端。Y=x0xl5+5+x4x5x6+5解:XOX1X2X3X4X5X6X7ORGMOVANLANLORLORLANLANLORLMOVBITBITBITBITBITBITBITBIT2000HC,XOC,X1C,X2C,X3C1X4C,X5C,X6C,X7,C=x0x+X2X3X4+X5X6X7解:ONETWOXOX1X2X3X4X5BIT20H;存第一项逻辑值BIT21H;存第二项逻辑值BITBITBITBITBITBITX6BITX7BITORG2000HMOVC1XOANLC1X1CPLCMOVONE,CMOVC,X2ANLC,X3AN
18、LC,X4CPLCMOVTWO,CMOVC1X5ANLC,X6ANLC,X7CPLCORLC1TWOCPLCORLC,ONEMOV,C20.根据图的线路设计灯亮移位程序,要求8只发光二极管每次亮一个,点亮时间为40m8.顺次一个一个地循环右移点亮,循环不止。已知时钟频率为24UHz。解:MOVA1#01HLOOP:MOVP1,ALCALLD40MSRRASJMPLOOPD40MS:MOVR2,#160EXTERNAL:MOVR3,#250INTERNAL:DJNZR3,INTERNALDJNZR2,EXTERNALRET第六章P1555,6,85.已知80C51单片机系统时钟频率为24Wlz,
19、请利用定时器TO和输出矩形脉冲其波形如下:选择TO工作于方式2(8位重置初值)定时50U8fosc=24HHz机器周期T=Er=0.5X106s=0.5加J24XlO6i(2-X)S=50X=156=9CH方法1:MOVMOVMOVCLRSETBTMOD1#02HTHO,#9CHTLO,#9CHiTRO=0HIGH:SETB9=1,输出5OU8高电平HIGH1:JBCTFO,LOW;50u8到清TFO,转输出低电平AJMPHIGH1;50U8未到,转HlGHl等待LOW:MOVR7,#7;350s=7508CLRI=0输出350HS低电平LOW1:JBCAJMPTFO,L0W21.0W1;50
20、U8到清TFO,转LOW2L0W2:DJNZR7,L0W1;7次未到,转LOWlAJMPHIGH;7次到,转HIG儿输出50HS高电平方法2:MOVTMOD,#02H;设置TO为方式2定时MOVMOVCLRTHO,#9CHTLO,#9CH;赋初值SETBTRO;启动TO工作L1:SETBMOVR7,#8=1,输出50U8高电平DEL:JBCAJMPTFO1REPDEL;50u8到清TFO,转输出低电平REP:CLRDJNZAJMP9R7,DEL1.1=0输出350IIS低电平方法3:选择TO工作于方式1定时50u8(216-X)S=50sX=65436=FF9CH选择TO工作于方式1定时350
21、u8(21-X)S=350SX=64836=FD44HSTART:MOVTMOD,#01H;设TO为方式1定时LPO:MOVMOVCLRTHO1#OFFHTLO1#9CH!赋初值定时50HSSETBSETBTRO;启动TO工作LP1:1.P2:JBCSJMPCLRTFO,LP21.P1;=1,输出50U8高电平MOVMOVTHO,#OFDHTLO,#44H;赋初值定时350U8LP3:JBCTFO1LP4J=1,输出350118低电平LP4:SJMPLP3SJMPLPO6.在80C51单片机中,已知时钟频率为12MHz,请编程使和分别输出周期为2ms和500US的方波。方法1:选择TO工作于方
22、式1定时250HSfosc=12MHz机器周期r=Jl2-=r-7-=1XIOVS=s12IO6DEL:(21-X)XlUS=250HSMOVTMOD,#01HMOVTHO,#0FFHMOVTLO,#06HSETBTROMOVR7,#4;X=65286=FF06H1ms=4250sD250:JBCTFO,D2;250u8到清TF0,转移AJMPD250;250HS未到,等待D2:CPLMOVTHO,#OFFH;重装初值MOVTLO,#06HDJNZR7,D250;4次未到,转D500CPLAJMPDEL;4次到,转DEL方法2:选择TO工作于方式2定时250HS(2-X)1S=250sX=6M
23、OVTMOD,#02HMOVTHO,#06HMOVTLO1#06HSETBTRODEL:MOVR7,#4;1ms=4250sD250:JBCTFO,D2;250us到清TF0,转移AJMPD250;25OU8未到,等待D2:CPLDJNZR7,D250;4次未到,转D250CPLAJMPDEL;4次到,转DEL方法3:选择TO工作于方式2定时250u“中断(2-X)1S=250sX=6T1工作于方式1定时IlnS,中断(21-X)1S=1000sX=64536=FC18HORG0000H1.JMPMAINORGOOOBHLJMPTOOORG001BHLJMPT11MAIN:MOVTMOD,#1
24、2HMOVTHO,#06HMOVTLO,#06HMOVTH1,#0FCHMOVTL1t#18HMOVIE,#8AHSETBTROSETBTR1SJMP$TOO:CPLRETIT11:MOVTH1,#OFCHMOVCPLRETITL1,#18H方法4:选择TO工作于方式3定时250u“中断。(2-X)1S=250sX=6TO方式3时TLO占用TRO、TFOfTHO占用TR1ORGOOOOHLJMPMAINORGOOOBHLJMPITLOORG001BHLJMPITHOMAIN:MOVSP,#50HMOVTMOD,#03HMOVTHO,#06HMOVTLO,#06HMOVR7,#4SETBTROS
25、ETBTR1MOVIE,#8AHSJMP$ITLO:MOVCPLRETITLO1#06HITHO:MOVTH1,#06HDJNZR7,ITH01MOVCPLR7,#4ITH01:RETITF17.设系统时钟频率为24MHz,试用定时器TO作外部计数器,编程实现每计到100O个脉冲,使Tl开始2ms定时,定时时间到后,TO又开始计数,这样反复循环不止。fosc=24HHz机器周期r=-=13=0.5X10-6S=o.5a/;,24IO6TO作外部计数器选择工作于方式1:1000=21-XX=64536=FC18HT1定时2ms选择工作于方式1:(21-X)S=2000sX=61536=F060H
26、MOVTMOD,#15HSTART:MOVTHO,#OFCHMOVTLO,#18HSETBTROJNBTFO,$CLRTFOCLRTROMOVTH1,#0F0HMOVTL1,#60HSETBTR1JNBTF1,$CLRTF1CLRTR1SJMPSTART8.利用80C51单片机定时器/计数器测某正脉冲宽度,已知此脉冲宽度小于IOm8,主机频率为12MHz编程测置脉冲宽度,并把结果转换为BCD码顺序存放在以片内50H单元为首地址的内存单元中(50H单元存个位二进制数转换成BCD码是利用按权展开式计算,由于是BCD码计算中要用DAA指令设脉冲由/INTO输入,TO工作于方式1fosc=12MHz机
27、器周期r=-=110-65=lzs以12IO6”MOVTMOD,#09H;设To为方式1,GATE=1MOVTLO,#00HMOVTHO,#00HMOVR0,#4EHJB,$;等待变低SETBTRO;启动TO准备工作JNB,$;等待变高JB.$;等待再次变低CLRTROi停止计数MOVR0,TLOi存放计数的二进制数低字节入4EHINCROMOV0RO,THOJ存放计数的二进制数高字节入4EHMOVR1,#50H;BCD码首址MOVR5,#3;BCD码字节数CLRAL00P1:MOVR1,A;消存BcD码单元INCR1DJNZR5,LOOPMOVR7,#10H;二进制数位数L00P4:MOVR
28、O1#4EH;二进制数首址MOVR6,#2;二进制数字节数CLRCL00P2:MOVA1R0RLCAMOVR0,AINCRODJNZR6,L00P2;2字节二进制数左移1位MOVR5v#3;BCD码字节数L00P3:MOVA1R1ADDCA1R1;BCD码乘2加C运算DAAMOVR1,AINCR1DJNZR5,L00P3DJNZR7,L00P4SJMP$第7章作业参考答案P1752,6,72.某异步通讯接口按方式3传送,已知其每分钟传送3600个字符,计算其传送波特率。解:11(位)3600(字符/秒)/60秒=660位/秒注:方式3为11位异步通讯方式。6.已知定时器T1设置为方式2,用做波
29、特率发生器,系统时钟频率为24Wzl求可能产生的最高和最低的波特率是多少?此时串口工作于方式1或3波特率32加12(256 -X)波特率Kn2mod32以.12(256-X)2,24 106=X32 12x(256-255)= 1250002SMOD 32九12(256 -X)2024 IO6X32 12x(256 - 0)= 2447,设计一个AT89C51单片机的双机通信系统,并编写程序将甲机片外RAM3400H-3420H单元中的数据块通过串行口传送到乙机的片内RAM40H60H单元中。串行定义在工作方式1下发送。采用定时器Tl方式2作波特率发生器,设波特率为4800, fOsc=Y几,
30、x(5M8 + 1)波特率 X 384SMOD=O 时,X=250=FAHSMOD=I 时,X=244=F4H=256XIOMWOD 1)4800384本题取SMoD为。双机异步通信连接图解:编写发送子程序如下:MOVTMOD,#20H;设定时器Tl为方式2MOVTL1f#OFAH;设预值MOVTH1,#OFAHSETBTR1;启动定时器TlMOVSCON,#40H;设置串行口为方式1MOVPCON,#00H;SMOD=OMOVDPTR,#3400H;设数据块指针MOVR7,#21H;设数据长度TRS:MOVXA1DPTR;取数据送至AMOVSBUF,A;数据送至SBUF,启动发送WAIT:J
31、NB,$;判1帧是否发送完CLRTlINCDPTR5更新数据单元DJNZR7,TRS;循环发送至结束RET;返回在进行双机通信时,两机应用相同的工作方式和波特率,因而接收子程序如下:MOVTMOD,#20H;设定时器1为方式2IiOVTL1,#OFAH!设预置值MOVTH1,#OFAHSETBTR1;启动定时器TlMOVSCON,#40H;设串行口为方式3IiOVPCON,#00HsSMOD=OMOVRO,#40H;设数据块指针MOVR7,#21H;设数据块长度SETBREN;允许接收JNBR,$;判1帧是否接收完CLRRlMOVA,SBUF;读入一帧数据MOVR0,A;存放数据INCRO;修
32、改地址指针DJNZR7,WAIT;判断数据块接收完否RET;返回WAIT:8.利用80C51串行口控制8位发光二极管工作,要求发光二极管每1S交替地亮、灭,画出电路图并编写程序。EQUCLKEQUSDA(AtB)EQUCLRCLRSETBMOVSCON,#00HMOVA1#55HMOVSBUF,AJNB,$CLRTlACALLDELAYJSRRAAJMPAA第8章作业参考答案P1993,53.AT89S51有几个中断源,各中断申请标志是如何产生的,又如何清“0”的?CpU响应中断时,中断入口地址各是多少?答:AT89S51单片机有5个中断源,分别为:2个外部输入中断源而(P3.2)和而i(P3
33、.3)2个片内定时器TO和Tl的溢出中断源TFoO和TH();1个片内串行口发送和接收中断源TlQ和Rl各中断标志的产生和清“0”如下:(1)外部中断类外部中断是由外部原因引起的,可以通过两个固定引脚,即外部中断。标和外部中断布输入信号:7to外部中断。请求信号,由脚输入。通过ITOO来决定中断请求信号是低电平有效还是下跳变有效。一旦输入信号有效,则向CPU申请中断,并且使IEO=1。硬件复位。标一外部中断1请求信号,功能与用法类似外部中断0。(2)定时中断类定时中断是为满足定时或计数溢出处理的需要而设置的。当定时器/计数器中的计数结构发生计数溢出时,即表明定时时间到或计数值已满,这时就以计数
34、溢出信号作为中断请求,去置位一个溢出标志位。这种中断请求是在单片机芯片内部发生的,无需在芯片上设置引入端,但在计数方式时,中断源可以由外部引入。TFO定时器TO溢出中断请求。当定时器TO产生溢出时,定时器TO中断请求标志TFO=I,请求中断处理。使用中断时由硬件复位,在查询方式下可由软件复位(即清m0m)oTF1定时器Tl溢出中断请求。功能与用法类似定时器T0。(3)串行口中断类串行口中断是为串行数据的传送需要而设置的。串行中断请求也是在单片机芯片内部发生的,但当串行口作为接收端时,必须有一完整的串行帧数据从Rl端引入芯片,才可能引发中断。Rl或Tl串行中断请求。当接收或发送完一串行帧数据时,
35、使内部串行口中断请求标志Rl或TIF,并请求中断。响应中断后必须软件复位。CPU响应中断时,各中断源的中断人口地址是:中断源入口地址外部中断00003H定时器To中断OOOBH外部中断10013H定时器Tl中断001BH串行口中断0023H定时器T2中断002BH(仅AT89S52有)5.用定时器Tl定时,要求在口输出一个方波,周期是Imin。晶振频率为1211Hz,请用中断方式实现,并分析采用中断后的优点。解:计算半周期为250HS方波的时间初值。(2-X)X1S=250sX=6=06H即TH0=06H,TL0=06H;采用定时器1,方式2定时250uS,RlJTII0D=20H;采用中断方
36、式工作,IE=88H输出周期为:为IlninORG0000HAJMPMAINORG001BHAJMPAAORG0030HMAIN:MOVTHO,#06HMOVTLO,#06HMOVTMOD,#20HMOVIE,#88HSETBTROMOVR5,#40;250S40=10msMOVR6,#100;10ms100=1SMOVR7,#30;1S30=SJMP$中断服务子程序AA:DJNZR5,BB;250US到中断,判IOmS到?MOVR5,#40DJNZR6,BB;IOmS到,判到1S?MOVR6,#100DJNZR7,BB;IS到,判到?MOVR7,#30;半周期到,求反CPLBB:RETI第9
37、章习题参考答案P2363,4,53.以AT89S51为主机,扩展2片6264RAM存储器芯片,设计硬件布线图。(1)译码法:ICO芯片地址范围0000H-1FFFH,IC1芯片地址范围2000H-3FFFH(2)线选法:4.根据图所示线路设计程序。其功能是:按下KOK3后,对应LED4-LED7发光,按下K4K7后,对应LEDoLED3发光。解: ORG LOOP: MOVMOVX SWAP MOVX SJMP1000HDPTR, #OFEFFH A1 WPTR A DPTR, A LOOP5,请利用74HC138设计一个译码电路,分别选中2片29C256和2片62256,且列出各芯片所占的地址范围。v 74HC138ICO芯片地址范围OoooH-7FFFH,IC1芯片地址范围8000H-FFFFH,IC2芯片地址范围0000H-7FFFH,IC3芯片地址范围8000H-FFFFH,注:外部程序存储器一般应包括0000H附近地址,此时/EA接地。7.试编程对8255进行初始化,使其A口为基本输出,B口为基本输入,C口上半部为输出,C口下半部为输入。解:电路图弁见P221页图。A口为基本输出(方式0),B口为基本输入(方式0),C口上半部为输出,C口半班部为输入。控制字为B,其控制口地址为FFTFH。按方式0输入,B口按方式1输出,C口上半