单片机习题参考答案08-12

上传人:su****e 文档编号:205159991 上传时间:2023-04-28 格式:DOC 页数:21 大小:2.93MB
返回 下载 相关 举报
单片机习题参考答案08-12_第1页
第1页 / 共21页
单片机习题参考答案08-12_第2页
第2页 / 共21页
单片机习题参考答案08-12_第3页
第3页 / 共21页
点击查看更多>>
资源描述
单片机习题参考答案第四章 P97 6,7,9,10,12,16,17,18,19,23,27,28,296 在80C51片内RAM中,已知(30H)38H,(38H)40H,(40H)48H,(48H)90H,请分析下段程序中各指令的作用,并翻译成相应的机器码;说明源操作数的寻址方式及顺序执行每条指令后的结果。机器码(H)指令结果源操作数的寻址方式E540MOVA,40H;A=(40H)=48H直接寻址F8MOVR0,A;R0=48H寄存器寻址7590F0MOVP1,#0F0H;P1=0F0H立即寻址A630MOVR0,30H;(48H)= 38H直接寻址901246MOVDPTR,#1246H;DPTR=1246H立即寻址853840MOV40H,38H;(40H)=40H直接寻址A830MOVR0,30H;R0=38H直接寻址8890MOV90H,R0;(90H)=38H寄存器寻址754830MOV48H,#30H;(48H)=30H立即寻址E6MOVA,R0;A=40H寄存器间接寻址8590A0MOVP2,P1;P2=P1=38H直接寻址7 试说明下列指令的作用,并将其翻译成机器码,执行最后一条指令对PSW有何影响?A的终值为多少?机器码(H)指令结果(1) 7872MOVR0,#72H;R0=72HE8MOVA,R0;A=72H,P=0244BADDA,#4BH;A=BDH,CY=0,OV=1,AC=0,P=0(2) 7402MOVA,#02H;A=02H,P=1F5F0MOVB,A;B=02H740AMOVA,#0AH;A=0AH,P=025F0ADDA,B;A=0CH,CY=0,OV=0,AC=0,P=0A4MULAB;A=18H,B=0,CY=0,OV=0,AC=0,P=0(3)7420MOVA,#20H;A=20H,P=1F5F0MOVB,A;B=20H25F0ADDA,B;A=40H,CY=0,OV=0,AC=0,P=19410SUBBA,#10H;A=30H,CY=0,OV=0,AC=0,P=084DIVAB;A=01H,B=10H,CY=0,OV=0,AC=0,P=19 试编程将片外数据存储器60H中的内容传送到片内RAM 54H单元中。MOVDPTR,#0060HMOVXA,DPTRMOV54H,A(MOVP2,#0MOVR0,#60H MOVXA,R0MOV54H,A)10试编程将寄存器R7内容传送到R1中去。MOVA,R7MOVR1,A12试说明下段程序中每条指令的作用,并分析当执行完指令后,R0中的内容是什么?MOVR0,#0A7H;R0=A7HXCHA,R0;A=A7H,A的内容暂存R0SWAPA;A=7AHXCHA,R0;R0=7AH,A的内容恢复16试编程将片外RAM中30H和31H单元的内容相乘,结果存放在32H和33H单元中,高位存放在33H单元中。21MOVP2,#0MOVR0,#30HMOVXA,R0MOVB,AINCR0MOVXA,R0MULABINCR0MOVXR0,AINCR0MOVA,BMOVXR0,AMOVDPTR,#30HMOVXA,DPTRMOVB,AINCDPTRMOVXA,DPTRMULABINCDPTRMOVXDPTR,AINCDPTRMOVA,BMOVXDPTR,A17试用三种方法将累加器A中无符号数乘2。(1)CLRCRLCA(2)MOVR0,AADDA,R0或ADDA,ACC(3)MOVB,#2MULAB18请分析依次执行下面指令的结果:MOV30H,#0A4H;(30H)=A4HMOVA,#0D6H;A=D6H,P=1MOVR0,#30H;R0=30HMOVR2,#47H;R2=47HANLA,R2;A=46H,P=1ORLA,R0;A=E6H,P=1SWAPA;A=6EH,P=1CPLA;A=91H,P=1XRLA,#0FFH;A=6EH,P=1ORL30H,A;(30H)=EEH19求执行下列指令后,累加器A及PSW中进位位CY、奇偶位P和溢出位OV的值。(1)当A5BH时;ADDA,#8CH0101 1011+)1000 11001110 0111结果:A=E7H,CY=0,OV=0,P=0,AC=1(2)当A5BH时;ANLA,#7AH0101 1011)0111 10100101 1010结果:A=5AH,P=0(3)当A5BH时;XRLA,#7FH0101 1011)0111 11110010 0100结果:A=24H,P=0(4)当A5BH,CY1时;SUBBA,#0E8H0101 1011或将减法转换成补码加法0101 10111110 1000-E8H的补码0001 1000-) 1 -1的补码+)1111 11110111 0010 10111 0010结果:A=72H,CY=1,OV=0,P=0,AC=023执行下述程序后,SP?A?B?解释每一条指令的作用,并将其翻译成机器码。地址(H)机器码(H)ORG200H0200758140MOVSP,#40H;SP=40H02037430MOVA,#30H;A=30H0205120250LCALL250H;调用250H开始的子程序SP=42H,;(42H)=02H,(41H)=08H02082410ADDA,#10H;此句没有执行020AF5F0MOVB,A;B=30H020C80FEL1:SJMPL1;ORG0250H025090020AMOVDPTR,#20AH;DPTR=020AH0253C082PUSHDPL;DPL进栈,SP=43H,(43H)=0AH0255C083PUSHDPH;DPH进栈,SP=44H,(44H)=02H025722RET;返回,此处是利用RET将栈顶内容弹出PC=020AH,SP=42H44H02H43H0AH栈区 42H02H41H08H40H执行程序后,SP42H,A30H,B30H27试编一程序将外部数据存储器2100H单元中的高4位置“1”,其余位清”0”。MOVDPTR,#2100HMOVXA,DPTRANLA,#0F0HMOVA,#0F0HORLA,#0F0HMOVXDPTR,A28试编程将内部数据存储器40H单元的第0位和第7位置”1”,其余位变反。MOVA,40HCPLASETBACC.0(或ORLA,#81H)SETBACC.7MOV40H,A29请用位操作指令,求下面逻辑方程:MOVC,P2.1ORLC,B.0ANLC,ACC.0ORLC,/P3.2MOVP1.7,CMOVC,P1.3ANLC,ACC.2ORLC,B.5ANLC,/P1.1MOVPSW.5,CMOVC,B.4ANLC,/P1.5ORLC,/ACC.7ANLC,P1.0MOVP2.3,C 第五章 P112 1,3,6,7,11,20 1. 编程将片内40H60H单元中内容送到以3000H为首的片外RAM存储区中方法1:MOVR0,#40HMOVDPTR,#3000HMOVR2,#21HLOOP:MOVA,R0MOVXDPTR,AINCR0INCDPTRDJNZR2,LOOP方法2:MOVR0,#40H MOVDPTR,#3000HMOVR2,#0LOOP:MOVA,R0MOVXDPTR,AINCR0INCDPTRINCR2CJNER2,#21H,LOOP方法3:MOVR0,#40H MOVDPTR,#3000HLOOP:MOVA,R0MOVXDPTR,AINCR0INCDPTRCJNER0,#61H,LOOP补充:编程将ROM中3000H3020H单元的内容送片内RAM40H60H单元中去。MOVR0,#40HMOVDPTR,#3000HMOVR2,#21HLOOP:CLRAMOVCA,A+DPTRMOVR0,AINCR0INCDPTRDJNZR2,LOOP3.编程计算片内RAM区50H57H 8个单元中数的算术平均值,结果存放在5AH中。解:ORG2000HMOVR0,#50HCLRAMOVR2,ALOOP:ADDA,R0JNCDOWNINCR2DOWN:INCR0CJNER0,#58H,LOOPMOVR7,#3SHIFT:XCHA,R2CLRCRRCAXCHA,R2RRCADJNZR7,SHIFTMOV5AH,A6设有100个有符号数,连续存放在以2000H为首地址的片外RAM存储区中,试编程统计其中正数、负数、零的个数。方法1:CLRAMOVR5,A;存零的个数MOVR6,A ;存负数的个数MOVR7,A ;存正数的个数MOVR2,#100MOVDPTR,#2000HLOOP:MOVXA,DPTRJNZNZEROINCR5SJMPDOWNNZERO:JNBACC.7,PLUSINCR6SJMPDOWNPLUS:INCR7DOWN:INCDPTRDJNZR2,LOOP方法2:CLRAMOVR5,A;存零的个数MOVR6,A ;存负数的个数MOVR7,A ;存正数的个数MOVR2,#100MOVDPTR,#2000HLOOP:MOVXA,DPTRINCDPTRCJNEA,#0,NZEROINCR5SJMPDOWNNZERO:JCNEGATIVEINCR7SJMPDOWNNEGATIVE:INCR6DOWN:DJNZR2,LOOP7请将片外数据存储器地址为1000H1030H的数据块,全部搬迁到片内RAM 30H60H中,并将原数据块区域全部清“0”。解:ORG1000HMOVDPTR,#1000HMOVR0,#30HMOVR2,#31HLOOP:MOVXA,DPTRMOVR0,ACLRAMOVXDPTR,AINCR0INCDPTRDJNZR2,LOOP8试编写一子程序,使间址寄存器R1所指向的2个片外RAM连续单元中的高4位二进制数合并为1个字节装入累加器A中。已知R0指向低地址,并要求该单元高4位放在A的高4位中。XX:MOVXA,R1ANLA,#0F0HMOVB,AINCR1MOVXA,R1ANLA,#0F0HSWAPAORLA,BRET10试编一查表程序,从首地址为1000H、长度为100的数据块中找出ASCII码A,将其地址送到10A0H和10A1H单元中。MOVDPTR,#1000HMOVR7,#100LOOP:MOVXA,DPTRCJNEA,#A,NXETMOVA,DPLMOVB,DPHMOVDPTR,#10A0HMOVXDPTR,AMOVA,BINCDPTRMOVXDPTR,ASJMP$NEXT:INCDPTRDJNZR7,LOOPSJMP$11设在200H204H单元中存放有5个压缩BCD码,编程将它们转换成ASCII码,存放到以205H单元为首地址的存储区中。方法1:ORG1000HMOVP2,#02HMOVR0,#00HMOVR1,#05HMOVR2,#05LOOP:MOVXA,R0ANLA,#0FHORLA,#30HMOVXR1,AINCR1MOVXA,R0SWAPAANLA,#0FHORLA,#30HMOVXR1,AINCR1INCR0DJNZR2,LOOP方法2:ORG1000HMOVR2,#02HMOVR3,#00HMOVR4,#05HMOVR7,#05MOVDPH,R2LOOP:MOVDPL,R3MOVXA,DPTRMOVB,AINCDPTRMOVR3,DPLMOVDPL,R4ANLA,#0FHORLA,#30HMOVXDPTR,AINCDPTRMOVA,BSWAPAANLA,#0FHORLA,#30HMOVXDPTR,AINCDPTRMOVR4,DPLDJNZR7,LOOP13试编程实现下列逻辑表达式的功能。设P1.7P1.0为8个变量的输入端,而其中P1.7又作为变量输出端。解:X0BITP1.0X1BITP1.1X2BITP1.2X3BITP1.3X4BITP1.4X5BITP1.5X6BITP1.6X7BITP1.7ORG2000HMOVC,X0ANLC,X1ANLC,/X2ORLC,/X3ORLC,X4ANLC,X5ANLC,X6ORLC,/X7MOVP1.7,C解:ONEBIT20H ;存第一项逻辑值TWOBIT21H ;存第二项逻辑值X0BITP1.0X1BITP1.1X2BITP1.2X3BITP1.3X4BITP1.4X5BITP1.5X6BITP1.6X7BITP1.7ORG2000HMOVC,X0ANLC,X1CPLCMOVONE,CMOVC,X2ANLC,X3ANLC,X4CPLCMOVTWO,CMOVC,X5ANLC,X6ANLC,X7CPLCORLC,TWOCPLCORLC,ONEMOVP1.7,C20根据图5.6的线路设计灯亮移位程序,要求8只发光二极管每次亮一个,点亮时间为40ms。顺次一个一个地循环右移点亮,循环不止。已知时钟频率为24MHz。解:MOVA,#01HLOOP:MOVP1,ALCALLD40MSRRASJMPLOOPD40MS:MOVR2,#160EXTERNAL:MOVR3,#250INTERNAL:DJNZR3,INTERNALDJNZR2,EXTERNALRET第六章 P155 5,6,85已知80C51单片机系统时钟频率为24MHz,请利用定时器T0和P1.2输出矩形脉冲其波形如下:选择T0工作于方式2(8位重置初值)定时50sfosc=24MHz(28-X)0.5S=50s X=156=9CH 方法1:MOVTMOD,#02HMOVTH0,#9CHMOVTL0,#9CHCLRP1.2;P1.2=0SETBTR0HIGH:SETBP1.2;P1.2=1,输出50s高电平HIGH1:JBCTF0,LOW;50s到清TF0,转输出低电平AJMPHIGH1;50s未到,转HIGH1等待LOW:MOVR7,#7;350s=750sCLRP1.2;P1.2=0输出350s低电平LOW1:JBCTF0,LOW2;50s到清TF0,转LOW2AJMPLOW1LOW2:DJNZR7,LOW1;7次未到,转LOW1AJMPHIGH;7次到,转HIGH,输出50s高电平方法2:MOVTMOD,#02H;设置T0为方式2定时MOVTH0,#9CH;赋初值MOVTL0,#9CHCLR P1.2SETBTR0;启动T0工作L1:SETBP1.2;P1.2=1,输出50s高电平MOVR7,#8DEL:JBCTF0,REP;50s到清TF0,转输出低电平AJMPDEL REP:CLRP1.2;P1.2=0输出350s低电平DJNZR7,DELAJMPL1方法3:选择T0工作于方式1定时50s(216-X)0.5S=50s X=65436=FF9CH 选择T0工作于方式1定时350s(216-X)0.5S=350s X=64836=FD44H START:MOVTMOD,#01H;设置T0为方式1定时LP0:MOVTH0,#0FFH;赋初值定时50sMOVTL0,#9CHCLRP1.2SETBTR0;启动T0工作SETBP1.2LP1:JBCTF0,LP2;P1.2=1,输出50s高电平SJMPLP1LP2:CLRP1.2MOVTH0,#0FDH;赋初值定时350sMOVTL0,#44HLP3:JBCTF0,LP4;P1.2=1,输出350s低电平SJMPLP3LP4:SJMPLP06在80C51单片机中,已知时钟频率为12MHz,请编程使P1.0和P1.1分别输出周期为2ms和500s的方波。方法1:选择T0工作于方式1定时250sfosc=12MHz(216-X)1S=250s X=65286=FF06HMOVTMOD,#01HMOVTH0,#0FFHMOVTL0,#06HSETBTR0 DEL:MOVR7,#4;1ms=4250sD250:JBCTF0,D2;250s到清TF0,转移AJMPD250;250s未到,等待D2:CPLP1.1MOVTH0,#0FFH;重装初值MOVTL0,#06HDJNZR7,D250;4次未到,转D500CPLP1.0AJMPDEL;4次到,转DEL方法2:选择T0工作于方式2定时250s(28-X)1S=250s X=6MOVTMOD,#02HMOVTH0,#06HMOVTL0,#06HSETBTR0 DEL:MOVR7,#4;1ms=4250sD250:JBCTF0,D2;250s到清TF0,转移AJMPD250;250s未到,等待D2:CPLP1.1DJNZR7,D250;4次未到,转D250CPLP1.0AJMPDEL;4次到,转DEL方法3:选择T0工作于方式2定时250s,中断(28-X)1S=250s X=6T1工作于方式1定时1ms,中断(216-X)1S=1000s X=64536=FC18HORG0000HLJMPMAINORG000BHLJMPT00ORG001BHLJMPT11MAIN:MOVTMOD,#12HMOVTH0,#06HMOVTL0,#06HMOVTH1,#0FCHMOVTL1,#18HMOVIE,#8AHSETBTR0SETBTR1SJMP$T00:CPLP1.1RETIT11:MOVTH1,#0FCHMOVTL1,#18HCPLP1.0RETI方法4:选择T0工作于方式3定时250s,中断。(28-X)1S=250s X=6 T0方式3时TL0占用TR0、TF0,TH0占用TR1、TF1。ORG0000HLJMPMAINORG000BHLJMPITL0ORG001BHLJMPITH0MAIN:MOVSP,#50HMOVTMOD,#03HMOVTH0,#06HMOVTL0,#06HMOVR7,#4SETBTR0SETBTR1MOVIE,#8AHSJMP$ITL0:MOVTL0,#06HCPLP1.1RETIITH0:MOVTH1,#06HDJNZR7,ITH01MOVR7,#4CPLP1.0ITH01:RETI7设系统时钟频率为24MHz,试用定时器T0作外部计数器,编程实现每计到1000个脉冲,使T1开始2ms定时,定时时间到后,T0又开始计数,这样反复循环不止。fosc=24MHzT0作外部计数器选择工作于方式1:1000=216-X X=64536=FC18HT1定时2ms选择工作于方式1:(216-X)0.5S=2000s X=61536=F060HMOVTMOD,#15HSTART:MOVTH0,#0FCHMOVTL0,#18HSETBTR0JNBTF0,$CLRTF0CLRTR0MOVTH1,#0F0HMOVTL1,#60HSETBTR1JNBTF1,$CLRTF1CLRTR1SJMPSTART8利用80C51单片机定时器计数器测量某正脉冲宽度,已知此脉冲宽度小于10ms,主机频率为12MHz。编程测量脉冲宽度,并把结果转换为BCD码顺序存放在以片内50H单元为首地址的内存单元中(50H单元存个位)。二进制数转换成BCD码是利用按权展开式计算,由于是BCD码计算中要用DA A指令设脉冲由/INT0输入,T0工作于方式1fosc=12MHzMOVTMOD,#09H;设T0为方式1,GATE=1MOVTL0,#00HMOVTH0,#00HMOVR0,#4EHJBP3.2,$;等待P3.2变低SETBTR0;启动T0准备工作JNBP3.2,$;等待P3.2变高JBP3.2,$;等待P3.2再次变低CLRTR0;停止计数MOVR0,TL0;存放计数的二进制数低字节入4EHINCR0MOVR0,TH0;存放计数的二进制数高字节入4EHMOVR1,#50H;BCD码首址MOVR5,#3;BCD码字节数CLRALOOP1:MOVR1,A;清存BCD码单元INCR1DJNZR5,LOOPMOVR7,#10H;二进制数位数LOOP4:MOVR0,#4EH;二进制数首址MOVR6,#2;二进制数字节数CLRCLOOP2:MOVA,R0RLCAMOVR0,AINCR0DJNZR6,LOOP2;2字节二进制数左移1位MOVR5,#3;BCD码字节数LOOP3:MOVA,R1ADDCA,R1;BCD码乘2加C运算DAAMOVR1,AINCR1DJNZR5,LOOP3DJNZR7,LOOP4SJMP$ 第7章作业参考答案P175 2,6,72.某异步通讯接口按方式3传送,已知其每分钟传送3600个字符,计算其传送波特率。解:11(位)3600(字符/秒)/60秒=660位/秒注:方式3为11位异步通讯方式。6.已知定时器T1设置为方式2,用做波特率发生器,系统时钟频率为24MHz,求可能产生的最高和最低的波特率是多少?此时串口工作于方式1或37设计一个AT89C51单片机的双机通信系统,并编写程序将甲机片外RAM 3400H3420H单元中的数据块通过串行口传送到乙机的片内RAM 40H60H单元中。串行口定义在工作方式1下发送。采用定时器T1方式2作波特率发生器,设波特率为4800,fosc=11.0592MHz。SMOD=0时,X=250=FAHSMOD=1时,X=244=F4H本题取SMOD为0 双机异步通信连接图 解:编写发送子程序如下:MOVTM0D,20H;设置定时器T1为方式2MOVTL1,0FAH;设预置值MOVTH1,0FAHSETBTR1;启动定时器T1MOVSCON,#40H;设置串行口为方式1MOVPCON,#00H ;SMOD0MOVDPTR,#3400H;设数据块指针MOVR7,#21H;设数据长度TRS: MOVXA,DPTR;取数据送至AMOVSBUF,A;数据送至SBUF,启动发送WAIT:JNBTI,$;判1帧是否发送完CLRTIINCDPTR;更新数据单元DJNZR7,TRS;循环发送至结束RET;返回在进行双机通信时,两机应用相同的工作方式和波特率,因而接收子程序如下:MOVTMOD,#20H;设置定时器1为方式2MOVTL1,#0FAH;设预置值MOVTH1,#0FAHSETBTR1;启动定时器T1MOVSCON,#40H;设置串行口为方式3MOVPCON,#00H;SMOD0MOVR0,#40H;设置数据块指针MOVR7,#21H;设数据块长度SETBREN;允许接收WAIT:JNBRI,;判1帧是否接收完CLRRIMOVA,SBUF;读入一帧数据MOVR0,A ;存放数据INCR0;修改地址指针DJNZR7,WAIT;判断数据块接收完否RET;返回8.利用80C51串行口控制8位发光二极管工作,要求发光二极管每1S交替地亮、灭,画出电路图并编写程序。 ;P3.1EQU CLK;P3.0EQU SDA(A、B);P1.0EQU CLRCLRP1.0SETBP1.0MOVSCON,#00H MOVA,#55HAA:MOV SBUF,AJNBTI,$CLRTIACALLDELAY_1SRRAAJMPAA第8章作业参考答案P199 3,53AT89S51有几个中断源,各中断申请标志是如何产生的,又如何清“0”的?CPU响应中断时,中断入口地址各是多少?答:AT89S51单片机有5个中断源,分别为:2个外部输入中断源(P32)和(P33)2个片内定时器T0和T1的溢出中断源TF0(TCON.5)和TF1(TCON.7);1个片内串行口发送和接收中断源TI(SCON.1)和RI(SCON.0)。 各中断标志的产生和清“0”如下: (1)外部中断类 外部中断是由外部原因引起的,可以通过两个固定引脚,即外部中断0和外部中断输入信号: 外部中断0请求信号,由P3.2脚输入。通过IT0(TCON.0)来决定中断请求信号是低电平有效还是下跳变有效。一旦输入信号有效,则向CPU申请中断,并且使IE0=1。硬件复位。 外部中断1请求信号,功能与用法类似外部中断0。 (2)定时中断类 定时中断是为满足定时或计数溢出处理的需要而设置的。当定时器计数器中的计数结构发生计数溢出时,即表明定时时间到或计数值已满,这时就以计数溢出信号作为中断请求,去置位一个溢出标志位。这种中断请求是在单片机芯片内部发生的,无需在芯片上设置引入端,但在计数方式时,中断源可以由外部引入。 TF0定时器T0溢出中断请求。当定时器T0产生溢出时,定时器T0中断请求标志TF0=1,请求中断处理。使用中断时由硬件复位,在查询方式下可由软件复位(即清“0”)。 TF1定时器TI溢出中断请求。功能与用法类似定时器T0。 (3)串行口中断类 串行口中断是为串行数据的传送需要而设置的。串行中断请求也是在单片机芯片内部发生的,但当串行口作为接收端时,必须有一完整的串行帧数据从RI端引入芯片,才可能引发中断。RI或TI串行中断请求。当接收或发送完一串行帧数据时,使内部串行口中断请求标志RI或TI=1,并请求中断。响应中断后必须软件复位。CPU响应中断时,各中断源的中断入口地址是:中断源入口地址外部中断00003H定时器T0中断000BH外部中断10013H定时器T1中断001BH串行口中断0023H定时器T2中断002BH(仅AT89S52有)5.用定时器T1定时,要求在P1.6口输出一个方波,周期是1min。晶振频率为12MHz,请用中断方式实现,并分析采用中断后的优点。解:计算半周期为250S方波的时间初值。(28-X)1S=250s X=6=06H 即TH0=06H,TL0=06H;采用定时器1,方式2定时250S,则TMOD=20H;采用中断方式工作,IE=88H输出周期为:P1.6为1minORG0000HAJMPMAINORG001BHAJMPAAORG0030HMAIN:MOVTH0,#06HMOVTL0,#06HMOVTMOD,#20HMOVIE,#88HSETBTR0MOVR5,#40;250S40=10msMOVR6,#100;10ms100=1SMOVR7,#30;1S30=0.5minSJMP $中断服务子程序AA:DJNZR5,BB;250S到中断,判10ms到?MOVR5,#40DJNZR6,BB ;10ms到,判到1S?MOVR6,#100DJNZR7,BB;1S到,判到0.5min?MOVR7,#30;半周期0.5min到,P1.6求反CPLP1.6BB:RETI第9章习题参考答案P236 3,4,53以AT89S51为主机,扩展2片6264 RAM存储器芯片,设计硬件布线图。(1)译码法:IC0芯片地址范围0000H-1FFFH,IC1芯片地址范围2000H-3FFFH。(2)线选法:4根据图9.5所示线路设计程序。其功能是:按下K0K3后,对应LED4LED7发光,按下K4K7后,对应LED0LED3发光。解: ORG1000HLOOP:MOVDPTR,#0FEFFHMOVXA,DPTRSWAPAMOVXDPTR,ASJMPLOOP5请利用74HC138设计一个译码电路,分别选中2片29C256和2片62256,且列出各芯片所占的地址范围。IC0芯片地址范围0000H-7FFFH,IC1芯片地址范围8000H-FFFFH,IC2芯片地址范围0000H-7FFFH,IC3芯片地址范围8000H-FFFFH。注:外部程序存储器一般应包括0000H附近地址,此时/EA接地。7试编程对8255进行初始化,使其A口为基本输出,B口为基本输入,C口上半部为输出,C口下半部为输入。解: 电路图参见P221页图9.8。A口为基本输出(方式0),B口为基本输入(方式0),C口上半部为输出,C口半班部为输入。控制字为10010101B,其控制口地址为FF7FH。按方式0输入,B口按方式1输出,C口上半部按方式0输出,C口半班部按方式1输入。解: 电路图参见P211页图9.8。控制字为1000 0011B,其控制口地址为FF7FH。其初始化程序为:MOVDPTR,#0FF7FHMOVA,#83HMOVXDPTR,A
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!