《单片机原理及应用》复习试题整理版.docx
长江大学?单片机原理及应用?试题库 一、填空题派001、单片机片内程序存储器按编程方式可分为 ROM型(掩模型OTP型(一次性编程EPROM (紫外线擦除编程)EEPROM (电擦除编程)FLASH (闪速编程)。002、MCS 51的物理地址空间由片内数据存储区 片外数据存储区 片内程序存储区 片外程序存储区 四个存储器组成。003、MCS51系列单片机的存储器,是由三个彼此独立的地址空间来组织的,它们分别为片内数据存储 区 片外数据存储区 程序存储区。004、单片机复位时,PC = 0000H, ACC=OOH, PSW=00H, SP=07H, PQ-P3 = 0FFHo 005、MCS 51系列单片机的地址总线是坨位,数据总线是位。006、MCS 51系统单片机的数据总线由”提供,低八位地址总线由”提供,高八位地址总线由也提 供。007、MCS 51系列单片机的一个机器周期包含11个时钟周期;设晶振频率为6MHz,那么时钟周期为0.167 微秒,机器周期为之微秒。008、8051型号单片机内部有红个特殊功能存放器,它们可以分为工组。009、堆栈在片内数据存储区,程序存放在程序存储区,外部10接口设置片外数据存储区,中断效劳程序 存入在程序存储区。010、指令MOVC A, A+DPTR属于变址寻址方式,指令MOV A, R3属于存放器寻址方式,指令 MOV C, 04H属于直接寻址方式,MOV 30H, #24H属于直接寻址方式。011、8051型号的单片机内部有1L个用户可位寻址单元。012、8031单片机有氏个IO线。013、执行以下程序后,CY=1、OV=。、A=94Ho MOV A, #56H ADD A, #74H ADD A, A014、设内部 RAM 中59H) =50H,执行一列程序段后,A = 25H>50H)=小(51H) =25H>52H)= 70Ho MOV A, 59H MOV R0, A MOV A, #00H MOV R0, A MOV A, #25H MOV 51H, A MOV 52H, #70H015、执行以下程序段后,A = 0A7H、R0 = 7AH、(R0) =0A7H。 MOV R0, #0A7H XCH A, R0 SWAP A XCH A, R0 MOV R0, A030、在CPU内部,反映程序运行状态或反映运算结果的一些特征存放器是1(1)、PC 2)、PSW (3)、ACC (4)、SP031、外部中断1固定对应的中断入口地址为()。(1)、0003H(2)、000BH(3)、0013H(4)、001BH032、各中断源发出的中断请求信号,都会标记在MCS51系统中的)。(1)、TMOD 2)、TCON/SCON (3)、IE (4)、IP033、MCS51的并行10 口信息有两种读取方法,一种是读引脚,还有一种是)。1)、读锁存 (2)、读数据 (3)、读A累加器 (4)、读CPU034、MCS51的并行10 口读一改一写操作,是针对该口的()o1)、引脚 (2)、片选信号 3)、地址线 4)、内部锁存器035、以下指令中,属于单纯读引脚的指令是()。(1)、MOV Pl, A (2)、ORL P, #0FH(2)、MOV C, Pl.5 4)、DJNZ Pl, short-lable036、以下哪种情况不属于微型机引入中断技术后的好处(1)、分时操作(2)、实时处理3)、故障处理(4、高速传送数据037、下面哪种情况并不是单片机系统响应中断的必要条件)。(1)、TCON或SCON存放器内的有关中断标志位为1。(2)、IE中断允许存放器内的有关中断允许位置1。(3)、IP中断优先级存放器内的有关位置1。(4)、当前一条指令执行完。038、CPU寻址外设端口地址的方法有两种,一种是统一编址,另一种是)o(1)、混合编址(2)动态编址3)独立编址(4)变址编址039、访问片外数据存储器时,不起作用的信号是)。Uh RD 2)、WR 3) PSEN (4) ALE040、以下四条表达中,有错误的一条是)。(1)、16根地址线的寻址空间可达1MB。2)、内存储器的存储单元是按字节编址的。(3)、CPU中用于存放地址的存放器称为地址存放器。(4)、地址总线上传送的只能是地址信息。041、20根地址线的寻址范围可达)。(1)、512KB(2、1024KB3)、640KB(5)、4096KB042、主存储器系统中使用Cache的目的是)。(1)、增加主存容量(2)、存放常用的系统程序(3)、存放固化的软件(4、提高CPU存取主存的速度043、MCS 51系列单片机外扩存储器芯片时,4个10 口中用作数据总线的是()。(1)、P0 和 P2 口 2)、P0D (3)、P2 和 P3 口 4)、P2 044、计算机工作时,能写入也能读出的半导体存储器是。(1)、RAM (2)、ROM (3)、磁盘 (4)、磁带045、区分片外程序存储器还是数据存储器的最可靠方法是)。1)、看其芯片型号是RAM还是ROM(2)、看其位于地址范围的低端还是高端(3)、看其离MCS51芯片的远近(4)、看其是被RD信号连接还是被PSEN信号连接 046、指令AJMP的跳转范围是)。(1)、2562)、1KB 3)、2KB 4、64K三、编程题00k编写程序实现两个4位BCD数相加,设被加数存放在内部RAM 40H和41H单元,加数存放在45H和 46H单元,和数存入50H和51H单元,并设最高位不产生进位。解:程序如下: MOV A, 41H ADD A, 46H DA A MOV 51H, A MOV A, 40H ADDC A, 45H DA A MOV 50H, A SJMP $002、编写程序,将1字节的压缩BCD数转换为二进制数,并存入内部RAM 30H单元中。 解:程序如下: MOV A, 40H SWAP A ANL A, #0FH MOV B, #10 MUL AB ANL 40H, #0FH ADD A, 40H MOV 30H, A SJMP $003、编写程序,将一个字节的二进制数转换为BCD数(0 255),并存入内部RAM 31H和32H单元中。 解:程序如下:MOV A, 30H MOV B, #10 DIV AB MOV 32H, B MOV B, #10 DIV AB XCH A, B SWAP A ORL 32H, A MOV 31H, B SJMP $004、试编写一个程序,将内部RAM中45H单元的高4位清0,低4位置1。 解:程序如下: MOV A, #0FH XCH A, 45H005、设有字无符号数X、Y存放在内部RAM 30H、31H和32H、33H,试编写求I X Y I的程序。 解:程序如下:CLR CMOV A, 31H SUBB A, 33H MOV 35H, A MOV A, 30H SUBB A, 32HJNC NN CPL A MOV 34H, A MOV A, 35H CPL A ADD A, #1 MOV 35H, A MOV A, 34H ADDC A, #0 NN: MOV 34H, A SJMP $006、设平面上一点P的直角坐标为X, Y), X、Y为字节符号数,试编写假设P落在第I象限内,那 么令K = I;假设P落在坐标轴上,那么令K = 0的程序。解:程序如下: X DATA 30H Y DATA 31H K DATA 33H MOV A, Y JZ K0 MOV A, X JZ K0 JNB ACCo 7, K14 MOV A, Y JNB ACCo 7, K2 MOV K, #3 SJMP $ K2:MOVK,#2SJMP $ K0:MOVK,#0SJMP $ K14:MOVA,YJNB ACCo 7, KI MOV K, #4SJMP $KI:MOV K, #1SJMP $007、编写程序把起始地址为1000H的100个连续单元中的内容送到以2000H开始的单元中。 解:程序如下:MOV DPTR, # 1000H AG1: MOVX A, DPTRXRL DPH, #30H MOVX DPTR, A XRL DPH, #30H INC DPTR MOV A, DPL CJNE A, #04H, AG1 SJMP $008、编程求内部RAM中40H49H 10个单元中的内容的平均值,并放入4AH单元中。 解:程序如下: MOV R0, #40H CLR A MOV 4AH, A AG1: ADD A, R0 JNC NINC INC 4AH NINC: INC R0CJNE R0, #4AH, AG1 XCHD A, R0 SWAP A MOV B, #10 DIV AB XCH A, R0 XCH A, B SWAP A ORL A, B MOV B, #10 DIV AB SWAP A ORL A, R0 SWAP A MOV R0, A SJMP $009、从2000H地址单元开始,连续存有200W个字节补码数,编写程序将它们改变为各自的绝对值。 解:程序如下:MOV DPTR, # 2000H AG1: MOVX A, DPTRJNB ACCo 7, NN CPL A INC A MOVX DPTR, A NN: INC DPL MOV A, DPL CJNE A, #200, AG1 SJMP $010、编写程序把内部RAM 20H23H单元的内容分别送到2000H、2004H、2021H和200cH单元中。 解:程序如下: MOV DPTR, # 2000H MOV R0, #20H AG1: MOV A, R0 MOVX DPTR, A INC ROMOV A, DPL ADD A, #4 MOV DPL, A CJNE R0, #24H, AG1 SJMP $011、编写程序求放在3000H单元开始的5个字无符号数的和,并将和存放在3100H开始的单元中。 解:程序如下:MOV DPTR, # 3000H MOV 40H, #0 MOV 41H, #0 MOV 42H, #0 MOV R7, #5 AG1: MOVX A, DPTR MOV 4AH, A INC DPL MOVX A, DPTR ADDA, 42H MOV 42H, A MOV A, 41H ADDC A, 4AH MOV 41H, A JNC NI INC 40H NI: INC DPL DJNZ R7, AG1 MOV R0, #40H MOV DPTR, #3100H AGI1: MOV A, R0 MOVX DPTR, A INC DPLINC ROCJNE RO, #43H, AGI1SJMP $012、从内部RAM的DATA单元开始,存有H个数。请设计一个程序,将其中正数,零及负数分选出来,将数据块中的正数和零传送到自ZHEN单元开始的存贮区,而把其中的负数送到FUSH单元开始 的存贮区。解:程序如下:ORG 300HSTART: MOV MOV MOVSTART: MOV MOV MOVRI, #H20H, #ZHEN21H, #FUSHMOVLOOP: MOVMOVLOOP: MOVRO, #DATAA, R0JB ACCo 7, NEGMOW RI, #20HMOV R1, AINC 20HSJMP HEDNEG: MOV RI,21HMOV R1, AHED: INC RODJNZ R2, LOOPSJMP $013、从20H单元开始存一组带符号数,数组长度存于1FH单元,要求统计出其中大于零、等于零和小于零的数的数目,并把统计结果分别存入ONE, TWO, THREE三个单元。解:程序如下:START:MOVRO, #20HMOVR2, #1FHCLRMOVONE, AMOVTWO, AMOVLOOP:MOVTHREE, AA, R0JZ ZEROJB ACCo 7, NEG INC ONE SJMP NEXT ZERO: INC TWO NEXT: INC RODJNZ R2, LOOP SJMP $014、从2000H单元开始的外部RAM中存有100个数,要求把它传送到自2500H单元开始的存贮区中去, 但在传递过程中要检查数的值,遇到第一个零就停止传送,编制完成此功能的程序。解:程序如下:START: MOV R7, #64H MOV R2, #00H MOV R3, #20H MOV R4, #00H MOV R5, #25HLOOP: MOV DPL, R2 MOV DPH, R3 MOVX A, DPTR JZ STOP MOV DPL, R4 MOV DPH, R5 MOVX DPTR, A INC R2INC R4DJNZ R7, LOOPSTOP: SJMP STOP015、设有一个巡回检测报警装置,需对16路输入值进行比较,当每一路输入值超过该路的报警值时,实现 报警,下面根据这一要求,编制一个查表程序,X为路数,查表时Xi按0、1、2、15 (n = 15) 取数,Y1为最大值,二字节数,依Xi顺序列成表格放在TABi中,进入查表程序前,路数Xi放在R2中,查表后的最大值放在R3, R4中。解:程序如下:TB1: MOVADDMOVADDMOVSJMPA, R2A, R2R3, AA, # TABMOVCR4, A$A, A+PCTAB: DW 05F0H, 0E89H, 0A695H, 1EAAHDW 0D9BH, 7F93H, 0373H, 26D7HDW 2710, 9E3FH, 1A66H, 22E3HDW 1174H, 16EFH, 33E4H, 6CA0H016、从DATA单元开始,有10个8位无符号数,编写求这10个数和的程序,其和放到SUM和SUM+1单元中低位先存)解:程序如下:START: MOVR0,#DATAMOVR2#0AHMOVR3,#00HMOVR4,#00HLOOP: MOV A, R3ADD A, R0MOV R3, AMOV A, R4ADDC A, #00HMOV R4, AINC R0DJNZ R2, LOOPMOV SUM, R3MOV SUM+1, R4SJMP $017、自内部RAM的BUFF单元开始,放有一个数据块,BUFF单元中放的是数据块的长度,从BUFF+1开始存放的是以ASCH码表示的10进制数码,把它们转换为BCD码,且把两个相邻单元的数码并 成一个单元(地址高的放高四位,放到从BUFF+1开始的存贮区中。解:程序如下:R2, BUFFRO, # BUFF+1RI, #BUFF+1A, R0 R1, AROA, R0AA, R1 R1, ASTART: MOV MOV MOVLOOP: MOV MOV INC MOV SWAP XCHD MOVINC ROINC RI DJNZ R2, LOOP SJMP $018、从内部RAM的BLOCK地址开始有一个无符号数据块,长度存于LEN单元,求出数据块中的最小元 素,并将其存入MINI单元。解:程序如下: MINI DATA 20HLEN DATA 21H BLOCK DATA 22HMOV RO, # BLOCK MOV RI, LEN MOV MINI, #0FFH MOV A, RI JZ FINI LOOP: MOV A, R0INC RO CJNEA, MINI, NEXT JNC NEXT MOV MINI, A NEXT: DJNZ RI, LOOP FINI: SJMP $019、在内部RAM的BLOCK单元开始的数据内存放着假设干带符号数,数据块长度存于LEN单元。要求 对数据块内的正数和负数分别相加,相加的结果分别存入SUM1和SUM2单元。设相加的结果不 超过8位二进制数。DATA 22H解:程序如下: SUMI DATA 20H SUM2 DATA 21H LENBLOCK DATA MOV MOV MOV MOV MOV23HRO, # BLOCKRI, LENSUMI, #00HSUM2, #00HA, RIJZ FINILOOP: MOV A,R0INC RO7, NEXT1ADD A, SUMIMOV SUMI, ASJMP NEXT2NEXT1: ADD A, SUM2MOVSUM2, ANEXT2: DJNZ RI, LOOPFINI: SJMP $020、求内部RAM的50H-5AH中的最大值并放入5AH单元。 解:程序如下:MOV RO, #50HMOV R2, #10 MOV A, R0 LOOP: INC ROMOV B, R0 CJNE A, B, $+3 JNC NEXT MOV A, R0NEXT: DJNZ R2, LOOP MOV R0, A SJMP $四、问答题001 > MCS-51引脚中有多少IO线?它们和单片机对外的地址总线和数据有什么关系?地址总线和数据总线各是几位?答:MCS-51芯片的引脚中有32条IO线,因为有4个8位并行口共32条,51系列单片机没有独立的 数据总线和地址总线,而是和一局部IO线复用。具体来说,P0 口的8条线从那时起用作地址总 线低8位和8位数据总线,而P2 口 8位线用作地址总线高位。所以是16位地址总线和8位数据 总线。002、什么叫堆栈?堆栈指示器SP的作用是什么? 8051单片机堆栈的容量不能超过多少字节?答:堆栈是数据存贮器的一局部,这一局部数据的存取是按照先入后出,后入先出的原那么进行的。堆栈指 针SP在启用堆栈之前是用来决定堆栈的位置。如在8051芯片复位后,SP的值为07H,那么RAM的 其它局部。在堆栈启用之后,SP指向堆栈的顶部,好由SP来决定数据读出和存入堆栈的地十。8051 单片机内部用作数据区的RAM的容量为128字节,前8个字节要用来作为工作存放器R0-R7o堆栈可 以从08H开邕设直到7FH,共120个节。但这只是最大可能的容量。一般情况下,内部RAM还要分 出一局部用作一般的数据区,或者还要用其中的位寻址区来用于位操作,等等。所以8051的堆栈区是 比较小的,使用时要注意到这个限制。003、8051单片机的内部数据存贮器可以分为几个不同区域?各有什么特点?答:8051单片机的内部数据存贮器的容量为256字节(地址为00H-FFH)。它可以分为两大局部,各占128 个字节。前128字节为读写数据区,地址为OOH7FH。后128个字节为特殊功能存放器区,21个特殊 功能存放 分散地分布在这人区域,各有自己特定的地址。而这个区域中,没有被特殊功能存放器占用 的单元也不能当作一般的RAM单元使用。00H7FH的RAM单元,都可按它们的直接地址来读写数据。而其中的前32个单元。即00H1FH单 元又称为工作存放器区,安排了 4组工作存放器,每组8个,都用R0R7表示,并通过PSW存放器 中RS1和RS0来选组。通过工作存放器R0-R7来对这局部数据单元读写数据不仅速度快而且指令字节 数也少。另一个区域为位寻制区。占用20H2FH共16个单元,这16个单元的每一位都可以独立进行 操作,共用128个可单独操作的位。而30H7FH这80个单元只能接它们的直接地址来操作。004.MCS-51单片机的寻址范围是多少? 8051单片机可以配置的存贮器最大容量是多少?而用户可以使用 的最大容量又是多少?答:MCS51单片机的指令存贮器寻址范围为64KB,数据存贮器也有64KB寻址范围,地址都是从0000H -FFFFH,总共有2*64KB的寻址范围。8051可以配置的外部存贮器就是2 * 64KB容量。但8051片 内还配有存贮器,包括4KB容量的只读存贮器和256字节的数据存贮器,总共容量为132,25KB。但用 户可以使用的容量只有2*64KB再加上256字节的数据存贮器。005、8051单片机对外有几条专用控制线?其功能是什么?答:一般的说法是8051单片机有4条专用控制线。它们是复位信号线RST,高电位有效,当有复位信号 从此线输入时,使单片机复位。访问外部存贮器控制信号EA,低电平有效,当此控制线为低电 平时,单片机全部使用外部指令存贮器,而当此控制线为高电平时,先使用片内的4KB指令存 贮器(0000H-0FFFH),在4KB范围之外,才使用外部指令存贮器(地址为1000H-FFFFH)。 另有两条输出控制线,外部程序存贮器的读选通信号PSEN和外部地址锁存器允许信号ALEo前 者是低电平有效,在读外部程序存贮器时使用。后者是高电平有效,在锁存P0 口输出的低8位 地址时使用。006、什么叫指令周期?什么叫机器周期? MCS-51的一个机器周期包括多少时钟周期?答:完成一条指令的执行所需的时间叫做指令周期。对不同的指令,指令周期的长短是不一定相同的。机器 周期那么是指计算机完成某种根本操作所需的时间,一个指令周期由一个或几个机器周期组成,一个机 器周期那么包括假设干个时钟周期。MCS-51单片机的一个机器周期包括12个时钟周期。但对有些微 处理器来说,不同的机器周期所包含的时钟周期可能是不相同的。007、为什么要了解CPU的时序?答:了解CPU时序就是了解在执行不同类型指令时CPU发出的控制信号有什么不同。了解CPU的时序至 少有两个目的,其一是掌握不同的指令或操作使用不同的控制信号后,便于CPU对外部设备的连接而 不致于发生错误。其二是知道不同指令需要不同的机器周期后,可以选用功能相同而机器周期较少的指 令,以减少程序的执行时间。当然,也可以有一些其它的作008、在读外部程序存贮器时,P0 上一个指令周期中出现的数据序列是什么?在读外部数据存贮器时,P0016、执行以下程序段后,A=6EH、(30H) =0EEH、RO) =0EEH。MOV 30H, #0A4H MOV A, #0D6H MOV RO, #30H MOV R2, #47H ANL A, R2 ORL A, R0 SWAP A CPL A XRL A, #0FFH ORL 30H, A017、下述程序执行后,SP-42H> A=蟠、B=30H。 ORG 2000H MOV SP, #40H MOV A, #30H LCALL 2500HADD A, #10HMOV B, ALI: SJMP LIORG 2500HMOV DPTR, #2021HPUSH DPLPUSH DPHRET018、假设指令CJNE R1, #7AH, 10H的地址为1800H,那么其转移地址为1813H。019、:A = 0C9H,B = 8DH,CY=1,那么指令ADDC A, B执行之后,A = 57H、B = 8DH。020、:A = 0C9H,B = 8DH,CY=1,那么指令SUBBA, B 执行之后,A=3BH、B = 8DHo021、:A = 0C9H,B = 8DH,CY=1,那么指令ADDA,B 执行之后,A=56H、B = 8DHo022、:A = 0C9H,B = 8DH,CY=1,那么指令SUBA,B执行之后,A =题错、B =题错。023、下述程序段执行之后,A = 64H> (50H) =00HoCLR AMOV 50H, #64HLI: INC ADJNZ 50H, LI派024、执行以下程序段后,内部RAM中的90H) =30H>0A0H) =0CFHoMOV Pl, #30HMOV A, 90HCPL AMOV P2, A025、在程序存储器中,数据表格为:1010H: 02H口上出现的数据序列是什么?答:读外部程序存贮器(ROM)时,有两种情况,一种是单纯地取指令,这时P0 口上先送出指令所在地 址低8位,然后从ROM中取回指令码。按照指令字节数的不同,这人数据序列可能重复假设干次。另 一种情况,那么是执行从外部ROM中读取固有数据的指令,这时,P0 口上先送出指令地址低8位, 再从ROM中取回指令码,然后开始执行指令,接着从P0 口上送出ROM数据单元地址低8位,再读 回ROM中的数据。而在读外部数据存贮器(RAM)时,P0 口上先送出指令地址低8位,然后读回指 令码,再送出数据存贮单元地址低8位,再读回数据单元的内容009、为什么外扩存贮器时,P0 口要外接地址锁存器,而P2 口却不接?答:这是因为在读写外部存贮器时,P0 口上先送的低8位地址只维持很短的时间,然后P0 口就要当作数 据总线用。为了使对外在整个读写外部存贮器期间,都存在有效的低8位地址信号,P0 口就要外接 一个地址锁存器,再从这个锁存器对外送同低8位地址。而P2 口只用作高8位地址线,并在整个读 写期间不变,所以不必外接地址锁存器。010、在使用外部程序存贮器时,MCS-51单片机还有多少条10线可用?在使用外部数据存贮器时,还有 多少条IO线可用?答:使用外部程序存贮器时,原那么上说,P0 口和P2 口要用作数据总线和地址总线,所以只有P1 口和P3 口可用作IO 口,共16条IO线。在使用外部数据存贮器时,除了占用P0和P2 口之外,还需用WR 和RD控制线,而这两条线就是P3 口中的两条:P3o 6和P3.7,所以这时只有14条IO线可以用了, 当然取于所配置的外部程序存贮器或数据存贮器的容量,P2 口的8条线并一定全部占用,有时还有几 条没有用,但即使如此,这几条线也不能再用作IO线,而只能留作系统扩展时再用011、程序存贮器和数据存贮器的扩展有何相同点及不同点?试将8031芯片外一片2716EPROM和一片 2128RAM组成一人扩展后的系统,画出扩展后的连接图。答:两者的相同点是,都借用P0 口和P2作为数据总线和地址总线,也就是说,地址线和数据线的连接方 法是相同的,地址范围都是在0000H-FFFFH之间。两者的不同点是,所用的读写选通信号不同, 扩展程序存贮器时用控制线PSEN,而扩展数据存贮器时使用读写控制线RD和WRo当然每块芯片 具体需要几条地址线,是由芯片的容量来决定的,容量大的芯片需要借用P2的IO线的数量多。而数 据线那么都是8条。2716是2K*8的EPROM, 2128是2K*8的RAM,两者都只需11条地址线。由于题目中没有规定地址 范围,帮可按最简单的方式来连接,即只用PSEN来控制EPROM的读出,用RD和WR控制RAM 的读写,两块芯片的片选端都固定接地,连接图如下列图。这种连接方式可以省去地址译码器,但它有一个缺点,那就是系统的扩充能力很差,因此,在实用时还是考虑使用译码器为好。012、8051芯片需要外扩4KB程序存储器,要求地址范围为1000H1FFFH,以便和内部4KB程序存贮器 地址相衔接。所用芯片除了地址线和数据线外,还有一个片选控制端CS。画出扩展系统的连接图。答:由于题目中没有规定芯片的容量,为简单起见,设所用芯片容量即为4KB的EPROM。芯片本身 所需地址线为12条,除了 P0 口 8条之外,还占用P2.0、P2.2、P2.2和P2.3。P2 口的高4位经过或门 产生片选信号,连接图如下列图,此时高4位只有为0001时才选中此芯片013、现有1KB* 8位的RAM芯片可供选用。假设用线选法组成8031系统的外部数据存贮顺,有效的寻址 范围最大是多少KB?假设用3 8译码器来产生片选信号,那么有效的寻址范围最大又是多少?假设要 将寻址范围扩展到64KB,应选用什么样的译码器来产生片选信号?答:1KB* 8位的RAM芯片有10条地址线。8031的地址线为16条,所以还有6条地址线可用来作片选 信号。当采用线选法时,每条高位地址线只能选中一片芯片,所以有效地址范围最大可为6KB。当用38译码器来产生片选信号时,一片38译码器可以产生8个片选信号,有效寻址范围可扩大 为8KB,假设使用多片38译码器,那么寻址范围还可以扩大。假设要将寻址范围扩展到64KB,必须将高6位线进行全译码以产生64个片选信号,共需9个38译码 器。或者用1个2-4译码器和4个4-16译码器通过两级译码。也可以得到所需的64个片选信号。014、MCS51的10 口在用作输入时,为什么要先置1?答:因为输入端子和输出电路是连接在一起的,更具体地说是和输出MOS管的漏极连一起的。假设在上 次操作中使输出MOS管处于导通状态(输出0),那么使引脚端子对地呈低阻抗。此时假设要输入1, 那么对直的低阻抗将使逻辑电平变低,使得读引脚的结果与实际引脚状态不一致,即引脚状态为1, 读入的结果却是0。假设是先给输出口置1,实际上是使输出级MOS管截止,电源通过上拉电阻(除 P0D)对外输出高电位。此时再去读引脚,那么因为输出级MOS管为截止状态,无论引脚上的信号 是1还是0都不会受影响,从而可以正确地读入。015、单片机8031的时钟频率为6MHz,假设要求定时值分别为0.1ms, 1 ms和10 ms,定时器。工作在方 式0、方式1和方式2时,其定时器初值各应是多少?答:时钟频率6MHZ,相应的定时时钟周期为2us。定时器初值和定时值的关系为 .定时值2n一定时器初值=定时周期其中n由工作方式决定,可为13,16或8。当定时值为0.1ms时:2n一定时器初值=0.1ms/2 us=50亦即需要50个定时时钟周期。所以工作方式0、1、2都可选用。方式0时,n=13,所以.定时器初值为THO=OFEH, TLO=OEHo方式1时,n=16,所以2162定时器初值为THO=OFFH, TL0=0CEHo. 方式2时,n=8,所以28-X=50 = = >206= (11001110) 2定时器初值为TH0=0CEH, TL0=0CEHo当定时值为1ms时:2n-X = lms/2us=500这时,方式2已不能使用,因为它只能提供256个定时时钟周期。而方式0和方式1是可以采用的。 方式0, n=132定时器 0 初值为:TH0=0F0H, TL0=0CHo 方式1, n=162定时器 0 初值为:TH0=0FEH, TL0=0CHo当定时值为100ms时:2n-X=l 00ms/2us=50000此时,方式0 (可提供8192个定时时钟周期)也不能使用了,只可选用方式1。n=162定时器0初值为TH0=3CH, TL0=0B0Ho016、MCS51单片机的定时器在何种设置下可提供3个8位计数/定时器?这时定时器1可作为串行口波特 率发生器。假设波特率按9600,4800,2400,1200,600,100来考虑,那么此时可选用的波特率是什么?(允 许一定误差)?设时钟为12MHz.答:假设定时器0设置为方式3,定时器1设置为方式2,那么可提供3个8位计数/定时器供用户使用。 但这时定时器1不能使用中断或查询方式。8位定时器可提供256个定时时钟。波特率可按下式计算:波特率=2Smod/32义定时频率/ (28-TLl)最大波特率为(SMOD=1, TL1 = 255):2/32X12X106/12X1/ (256-255) =62500最低波特率为(SMOD=0, TL1=O)1/32X12X1O6/12X1/ (256-0) =122所以,可选串行通信波特率为9600、4800、2400、1200和600波特,但不能选100波特。PUSH 30HPUSH 31HPOP DPLPOP DPHMOV A, #00H;SP=61H> (SP) =24Ho;SP=62H> (SP) =10H。;SP=61H、;SP=60H、DPL=10HoDPH = 24HoMOVX DPTR, A029、执行以下程序段后,内部 RAM 的20H) =0B0H、A = 90H。MOV20H, #0A4H1011H: 04H1012H: 06H1O13H: O8H执行以下程序之后,A = 02H> R0=02H> PC = 1004Ho1000H: MOV A, #0DH1002H: MOVC A, A+PC1003H: MOV RO, A026、在程序存储器中,数据表格为:7010H: 02H7011H: 04H7012H: 06H7013H: 08H执行以下程序段之后,A = 02H> DPH = 70H> PC = 1009Ho1004H: MOV A, #10H1006H: MOV DPTR, # 7000H1008H: MOVC A, A + DPTR027、A中内容为34H,执行以下程序之后,A=34H> R6 = 92HOMOV R6, #29HXCH A, R6SWAP AXCH A, R6028、设 SP=60H,内部 RAM 的30H)028、设 SP=60H,内部 RAM 的30H)= 24H,31H) =10H,在以下程序段注释下画线下填写执行结果。MOV A, #0D6HMOV RO, #20HMOV R2, #57HANL A, R2ORL A, R0SWAP ACPL AORL 20H, ACLR 01HCLR 02H派030、执行以下程序段后,A=77H> PC = 1004Ho1000H: MOV A, #02H1002H: MOVC A, A+PC1003H: RET1004H: 66H, 77H, 88H, 99H03k子程序返回指令是RET,中断效劳程序返回指令是旦四。032、内部 RAM 的(40H=20H,41H) =10H,执行以下程序段后,A=30H、PC = 1020H。1020H: PUSH 40H1022H: PUSH 41H1024H: MOV A, #30HRET033、A=55H, CY=1,执行以下程序段后,A=55H、CY=。MOV R2, #04HLOOP: RR ADJNZ R2, LOOP034、A=55H, CY=1,执行以下程序段后,A=5AH> CY = loMOV R2, #04HLOOP: RRC ADJNZ R2, LOOP035、A = 55H, CY=1,执行以下程序段后,A=55H> CY=loMOV R2, #04HCLR CLOOP: RRC ADJNZ R2, LOOP036、MCS-51系列单片机访问内部RAM数据存储器时用MOV指令,访