《单片机原理及接口技术》(第二版)余锡存著-课后习题答案

  • 格式:doc
  • 大小:716.00 KB
  • 文档页数:51

第二章1.89C51、87C51、80C51和80C31单片机的主要区别在那里?答:相同之处是:制造工艺都为CHMOS,都有128字节片内RAM、两个定时/计数器、4个8位I/O并行口,一个串行口和5个中断源。

主要区别:①89C51片内4K字节FLASHROM;②87C51片内4K字节EPROM;③80C51片内4K字节掩膜ROM;④80C31片内无程序存储器。

2.MCS-51单片机引脚有多少I/O线?它们和单片机对外的地址总线和数据总线有何关系?答:4个8位I/O并行口,一个串行口;其中P0口为外接程存和数存的地址低8位和数据总线的时分复用接口;其中P2口为外接程存和数存的地址高8位总线接口;其中P1口为真正的用户口线;其中P3口有第2功能;以上4个口线在没有专用功能时,也可以做通用I/O口线用。

3.简述8031片内RAM区地址空间的分配特点。

答:MCS-51 单片机片内RAM 为 256 字节, 地址范围为00H ~FFH, 分为两大部分: 低 128 字节(00H ~7FH )为真正的RAM 区; 高 128 字节(80H ~FFH )为特殊功能寄存器区SFR 。

在低 128 字节RAM 中, 00H ~1FH 共 32 单元是 4 个通用工作寄存器区。

每一个区有 8 个通用寄存器R0~R7。

4. MCS-51单片机由哪几个部分组成。

答:① 一个8位CPU ;② 4KB ROM or EPROM(8031无ROM);③ 128字节RAM 数据存储器;④ 21个特殊功能寄存器SFR ;⑤ 4个8位并行I/O 口,其中P0、P2为地址/数据线,可寻址64KB 程序存储器和64KB 数据存储器;⑥ 一个可编程全双工串行口;⑦ 具有5个中断源,两个优先级,嵌套中断结构;⑧ 两个16位定时器/计数器;⑨ 一个片内振荡器及时钟电路。

5. MCS-51单片机的,,EA ALE PSEN 信号各自的功能是什么?答:都是控制总线① PP V EA /:访问内部程序存储器的控制信号/编程电压输入端。

1=EA 时,CPU 从片内读取指令,0=EA CPU 从片外读取指令。

②PROGALE/:地址锁存允许/编程信号线。

③PSEN:外部程序存储器读选通信号。

④VPDRSE/:复位输入信号/掉电保护后备电源引脚。

6.MCS-51单片机如何实现工作寄存器组的选择?RS1(PSW.4)、RS0(PSW.3) 为工作寄存器组的选择位;①取值为00时选择第0组工作寄存器,片内RAM地址是00H~07H,名称为R0~R7;②取值为01时选择第1组工作寄存器,片内RAM地址是08H~0FH,名称为R0~R7;③取值为10时选择第2组工作寄存器,片内RAM地址是10H~17H,名称为R0~R7;④取值为11时选择第3组工作寄存器,片内RAM地址是18H~1FH,名称为R0~R7。

7.什么是时钟周期、机器周期、指令周期?当单片机的时钟频率为12MHz时,一个机器周期是多少?ALE引脚的输出频率是多少?(1)振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期。

(2)状态周期: 每个状态周期为时钟周期的 2 倍, 是振荡周期经二分频后得到的。

(3)机器周期: 一个机器周期包含6 个状态周期S1~S6, 也就是12 个时钟周期。

在一个机器周期内, CPU可以完成一个独立的操作。

(4)指令周期: 它是指CPU完成一条操作所需的全部时间。

每条指令执行时间都是有一个或几个机器周期组成。

MCS - 51 系统中, 有单周期指令、双周期指令和四周期指令。

当单片机的时钟频率为12MHz时,一个机器周期是多少1μs(微秒);ALE 引脚的输出频率是多少2μs(微秒)。

第三章1.MCS-51指令系统按功能分为几类?具有几种寻址方式?他们的寻址范围如何?答:①按功能分为5类,分别是:数据传送类、算术操作类、逻辑操作类、控制转移类和位操作类;②具有7种寻址方式;③立即寻址,寻址范围是程序存储器;直接寻址,寻址范围是内部RAM低128字节和高128字节;寄存器寻址,寻址范围是四组工作寄存器R0~R7;寄存器间接寻址,寻址范围是内部RAM的低128和外部RAM低64K可寻址空间;基址寄存器加变址寄存器间接寻址,寻址范围是程序存储器;相对寻址,寻址范围是以下一条指令为相对地址的-128~+127字节范围内;位寻址,寻址范围是可位寻址空间,包括内部RAM的可寻址位,特殊功能寄存器中的可寻址位。

2.设内部RAM中59H单元的内容为50H,写出当执行下列程序段后寄存器A,R0,和内部RAM中50H、51H单元的内容为和值?答:MOV A,59H ; (A)=(59H)=50HMOV R0,A ; (R0)=50HMOV A,#00 ; (A)=00MOV @R0,A ; ((R0))=(50H)=00MOV A,#25H ; (A)=25HMOV 51H,A ; (51H)=25HMOV 52H,#70H ; (52H)=70H执行下列程序段后:(A)=25H,(R0)=50H, (50H)=00、(51H)=25H3.PSW中Cy与OV有何不同?下列程序段执行后(Cy)=?(OV)=?。

MOV A,#56HADD A,#74H答:Cy—进位、借位标志位;OV—溢出标志位。

MOV A,#56H ;(A)=56H=0101 0110 BADD A,#74H ;(A)=56H+74H=0CAH=1100 1010B ,程序执行后:(Cy)=0(OV)=14.MOVC A,@A+DPTR与MOVX A,@DPTR指令有何不同?答:①MOVC A,@A+DPTR ;寻找的操作数在程序存储器中,地址是:(A)+(DPTR);②MOVX A,@DPTR ;寻找的操作数在外部数据存储器中,地址是:(DPTR)。

5. AJMP、LJMP、SJMP指令功能上有何不同?答:相同之处,都是无条件转移指令。

①AJMP addr11 ;下调指令为基准的2KB范围内的跳转指令。

②LJMP addr16 ;转移的目标地址可以在64KB程序存储器的任何地方。

③SJMP rel ;下调指令为基准的-128B~+127B范围内的短跳转指令。

6.设堆栈指针SP中的内容为60H,内部RAM中30H和31H单元的内容分别为24H和10H,执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?PUSH 30HPUSH 31HPOP DPLPOP DPHMOV 30H,#00HMOV 31H,#0FFH答:PUSH 30H ;(61H)= (30H) = 24HPUSH 31H ; (62H) = (31H) = 10HPOP DPL ; (DPL) = (62H) = 10HPOP DPH ; (DPH) =(61H)= 24HMOV 30H,#00H ; (30H) = 00HMOV 31H,#0FFH ; (31H) = 0FFH程序执行后:(61H)= 24H, (62H) = 10H, (30H) = 00H, (31H) = 0FFH,(DPTR) = 2410H7.试分析下列程序段,当程序执行后,位地址00H和01H中的内容将为何值?P1口的8条I/O线为何状态?CLR CMOV A,#66HJC LOOP1CPL CSETB 01HLOOP1: ORL C,ACC.0JB ACC.2,LOOP2LOOP2: MOV P1,A答:CLR C ; (Cy)=0MOV A,#66H ; (A) = 66H = 0110 0110 BJC LOOP1 ; 因此时(Cy)=0 ,所以不跳转CPL C ; (Cy) = 1SETB 01H ; (01H)= 1LOOP1: ORL C,ACC.0 ; (Cy) =(Cy)∨(ACC.0) = 1JB ACC.2,LOOP2 ; 因(ACC.2) = 1LOOP2: MOV P1,A ; (P1)= 0110 0110 B8.要完成以下的数据传送,应如何用MCS-51指令实现?⑴R1的内容传送到R0;⑵片外RAM 20H单元的内容送R0;⑶片外RAM 20H单元的内容送片内RAM 20H单元;⑷片外RAM 1000H单元的内容送片内RAM 20H单元;⑸ROM 2000H 单元的内容送R0;⑹ROM 2000H 单元的内容送片内RAM 20H单元;⑺ROM 2000H 单元的内容送片外RAM 20H单元。

答:⑴R1的内容传送到R0;MOV A,R1MOV R0,A⑵片外RAM 20H单元的内容送R0;MOV R1,#20HMOVX A,@R1MOV R0,A⑶片外RAM 20H单元的内容送片内RAM 20H单元;MOV R1,#20HMOVX A,@R1MOV 20H,A⑷片外RAM 1000H单元的内容送片内RAM 20H单元;MOV DPTR,#20HMOVX A,@DPTRMOV 20H,A⑸ROM 2000H 单元的内容送R0;MOV DPTR,#2000HCLR AMOVC A,@A+DPTRMOV R0,A⑹ROM 2000H 单元的内容送片内RAM 20H单元;MOV DPTR,#2000HCLR AMOVC A,@A+DPTRMOV 20H,A⑺ROM 2000H 单元的内容送片外RAM 20H单元。

MOV DPTR,#2000HCLR AMOVC A,@A+DPTRMOV R0,#20HMOVX @R0,A9.分析以下程序每条指令执行的结果:MOV A, #25H ; (A) = 25HMOV R1,#33H ; (R1) = 33HMOV 40H,#1AH ; (40H) = 1AHMOV R0,40H ; (R0) = 1AHADD A,R1 ; (A) = 25H + 33H = 58HADDC A,@R0 ; (A) = 58H + (1AH) + (Cy) = 58HADDC A,40H ; (A) = 58H + 1AH + (Cy) = 72H10.设A=83H,R0=17H,(17H)=34H,执行下列程序后,(A) = ?ANL A,#17H ; (A) = 1000 0011B∧0001 0111B = 0000 0011BORL 17H,A ; (17H) = 0011 0100B∨0000 0011B = 0011 0111BXRL A,@R0 ; (A) = 0000 0011B⊕0011 0111 = 0011 0100BCPL A ; (A) = 1100 1011B11.两个4位BCD码数相加,被加数和加数分别存于30H、31H和40H、41H 单元中(次序为千位、百位在低地址中,十位、个位在高地址中),和数放在50H、51H、52H中(52H用于存放最高位的进位),试编写加法程序。