单片机课后习题答案 下载本文

4000H 3FFFH 2080H 207FH 2012H 2011H

2000H 1FFFH 1FFEH 1FFDH 0100H 00FFH

0000H

P4口 P3口 外部存储器或I/O 内部RAM 外部存储器 寄存器阵列 保留给Intel 堆栈指针 专用寄存器 开发系统占用 (按数据存储器访问时) (按程序存储器访问时) 图8.5 存储器空间分配

中断向量 0 I/O 内部程序存储器ROM 工厂测试码 8 6.MCS-96系列单片机提供了哪几种寻址方式,都是怎样定义的? 解:

MCS-96指令系统中具有6种基本寻址方式: (1)寄存器直接寻址

直接访问片内256字节的RAM,一条指令中可以有多至3个操作数采用这种寻址方式。 (2)间接寻址

访问整个存储空间,被访问数的地址应放在一个16位的寄存器中,一条指令中只能有一个操作数采用间接寻址,其他操作数必须采用寄存器直接寻址。

在这类寻址方式中还包含自动增量间接寻址,但需根据操作数是字节还是字,指令执行后地址寄存器要自动加1或2。

(3)立即寻址

操作数直接放在指令中。一条指令中只能有一个立即数,其他操作数必须采用寄存器直接寻址。

(4)变址寻址

① 短变址寻址:有效地址是由基地址加偏移量组成的,基址寄存器为内部RAM中的一个16位寄存器,偏移量为一个带符号的8位数。可访问整个存储空间。

② 长变址寻址:与短变址类似,只是偏移量是16位数。 (5)零寄存器寻址方式

硬件把内部RAM的00H和01H单元固定为零,故称为零寄存器。除了在一些计算和比较运算中用来做常数零外,还可用在长变址寻址中,从而可以直接访问整个存储空间。

(6)堆栈指针寄存器寻址

堆栈指针也可以当作一般的寄存器用,因此可做短变址寻址中的地址寄存器。 7.中断悬挂寄存器和中断屏蔽寄存器的作用是什么?如何用指令进行访问? 解:

MCS-96有2个中断控制寄存器,它们分别为中断悬挂寄存器和中断屏蔽寄存器,两者的定义是类似的,相应的位对应于同一种中断源,如图8.7所示。

56

图8.7 中断悬挂和中段屏蔽寄存器

09H为中断悬挂寄存器,当CPU检测到上述8种中断源有由低到高跳变时,就把该寄存器的相应位置位,即把此中断悬挂(悬挂是指有中断申请而尚未得到响应的状态)起来。一旦被悬挂的中断得到响应,相应位被清除。中断悬挂寄存器可以用指令写入,故可以靠对该寄存器的某位置1来产生软件中断,也可以靠清除相应位来撤除已悬挂的中断。

08H为中断屏蔽寄存器,用来控制是否允许某个中断源的中断申请。当某位置1时,相应的中断被允许,否则被禁止。对8种中断源总的控制要用EI和DI指令。El和DI指令还可对PSW.9置位和复位。8个中断源是有优先权的,当有多种中断同时挂起时,CPU先响应优先权最高的一种中断。一旦进入中断服务程序,至少执行一条指令后,才能再响应另一个优先权更高的中断。通常中断服务程序的第一条指令是DI或PUSHF,DI禁止所有的中断,PUSHF把PSW内容压入堆栈,同时把PSW清零。中断屏蔽寄存器是PSW的低位字节,因此和DI一样,PUSHF也起到禁止所有中断的作用。如果该服务程序允许被打断,则可对中断屏蔽寄存器置位或用EI指令。

中断悬挂寄存器可以用指令写入,即靠对该寄存器的某位置1来产生软件中断,也可以靠清除相应位来撤除已悬挂的中断。

中断屏蔽寄存器可以用指令写入,当某位置1时,相应的中断被允许,否则被禁止。 8.简述MCS-96系列单片机的HSI、HSO、串行口、A/D转换器、PWM输出的特点和功能。 解:

HIS:高速输入单元HSI是用来记录外部事件发生时刻及转入相应的处理程序的,它包括HSI方式寄存器和HSI状态寄存器。

HSO:高速输出部件用来在预定的时间内触发外部事件并申请中断。由HSO命令寄存器、HSO时间寄存器、HSO保持寄存器、按内容访问的存储器(CAM)阵列、比较器、多路开关、控制逻辑、输出部件和两个定时器组成。

串行口:MCS-96有一个全双工的串行口,能同时收发信息。与MCS-51串行口是兼容的,也有4种工作模式(与MCS-51串行口类似),通过对串行口控制寄存器的编程设定其工作模式。MCS-96有一个单独的波特率发生器专供串行口使用。

A/D转换器:MCS-96系列的部分产品中有一个逐次逼近型的10位A/D转换器,共有8个通道。当采用12MHz晶振时,每次转换时间为42μs。A/D转换器的模拟参考电压为VREF,输入电压应在0~VREF范围内,正常工作时,VREF必须在VCC±0.3V下保持为5.0±0.5V。A/D转换的结果NAD=(210-1)×(输入电压VIN-ANGND)/(VREF-ANGND)。

PWM:MCS-96用脉冲宽度调制PWM的方法来实现D/A转换的功能。其中主要部件有脉宽控制寄存器、比较器和计数器。计数器的计数值为零时,输出高电平。每一状态周期计数值加1,当计数值与脉宽控制寄存器的值相等时,输出低电平。当计数值溢出再次使计数器复位为零时,输出又变高电平。这样通过设定脉宽寄存器的值可以获得256种不同脉宽的波形。

9.高速I/O部件由哪几部分组成?各部分的功能是什么? 解:

高速I/O部件是由高速输入单元(HSI)、高速输出单元(HSO),一个定时器(定时器1),一个事件计数器(定时器2)组成。

高速输入单元HIS:用来记录外部事件发生时刻及转入相应的处理程序的,它包括HSI方式寄存器和HSI状态寄存器。

高速输出部件:用来在预定的时间内触发外部事件并申请中断。由HSO命令寄存器、HSO时间寄存器、HSO保持寄存器、按内容访问的存储器(CAM)阵列、比较器、多路开

57

关、控制逻辑、输出部件和两个定时器组成。

定时器1:是一个16位的计数器,其时钟信号来自内部时钟发生电路,每8个状态周期计数器加1。当计满时,能触发一个中断,对I/O状态寄存器(IOSl)的位5置位。作为系统实时时钟的定时器1,它一直在循环计数,任何时候都可以读它,只有用系统复位操作才能使它停止计数。

定时器2:定时器2也是一个16位的计数器,其时钟来自引脚HSIl/T2CLK,所以实际上是个事件计数器。每当引脚上有正和负跳变时,计数器加1。当计满时,也触发一个中断,并对IOS1.4置位。定时器2可以有多种清零方式。

10.在MCS-96系列单片机中,A/D转换时,命令寄存器和结果寄存器是怎样工作的? 解:

A/D转换8个通道的模拟电压输入引脚与P0口的8根口线复用,通过写命令寄存器可以控制通道选择和启动A/D转换。每启动一次A/D转换都必须对命令寄存器进行一次写操作。用HSO触发转换时也不例外。

命令寄存器是双缓冲的,按第一个命令执行的A/D转换正在进行时,第二个命令照样可以写入到该寄存器中,而第二个命令必须是靠HSO触发去启动转换的。即当一次转换正在进行时,又启动了另一次新的转换,会把正在进行的转换撤销掉,A/D转换结果寄存器的内容也会被消除掉。因此在新的转换开始前,应把原转换结果读走。

结果寄存器是16位的,读出时应按字节分两次读出。

58