文档库 最新最全的文档下载
当前位置:文档库 › 单片机作业答案第5、6、7、8章

单片机作业答案第5、6、7、8章

单片机作业答案第5、6、7、8章
单片机作业答案第5、6、7、8章

第5、6、7、8章习题

一、问答题

1.说明51单片机读端口锁存器的必要性,为什么?

答:MCS-51系列单片机有不少指令可以直接进行端口操作,例如:ANL、ORL、XRL、JBC、CPL、INC、DEC、DJNZ、MOV PX.x,C、CLR PX.x、SETB PX.x。这些指令的执行过程分成“读-修改-写”三步,即先将端口的数据读入CPU,在ALU中进行运算,运算结果再送回端口。执行“读-修改-写”类指令时,CPU实际上是通过三态门读回锁存器Q端的数据。

这种读锁存器的方式是为了避免可能出现的一种错误。例如,用一根口线直接去驱动端口外的一个NPN晶体管基极,当向口线写“1”时,该晶体管导通,导通了的三极管集极与发射极间只有0.7V,会把端口引脚的高电平拉低,这样直接读引脚就会把本来的“1”误读为“0”。但若从锁存器Q端读,就能避免这样的错误,得到正确的数据。也就是说,如果某位输出为1时,有外接器件拉低电平, 读端口引脚与读锁存器就有区别了,读锁存器状态是1,读引脚状态是0,锁存器状态取决于单片机企图输出什么电平,引脚状态则是引脚的实际电平。

因此,当作为读引脚方式使用时,应先对该口写“1”,使场效应管截止,再进行读操作,以防止场效应管处于导通状态,使引脚为“0”,而引起误读。

2.请说明为什么使用LED需要接限流电阻,当高电平为+5V时,正常点亮一个LED需要多大阻值的限流电阻(设LED的正常工作电流为8~mA,导通压降为0.6V),为什么?

答:因为LED导通时,电压降是基本固定的(如0.6V)。为了使LED既能正常工作(电流为8~20mA),又不至于被过大的电流损坏,所以必须加一个限流电阻,电阻值为100~500Ω。

3.简述在使用普通按键的时候,为什么要进行去抖动处理,如何处理。

答:键抖动会引起一次按键被误读多次。为了确保CPU对键的一次闭合仅做一次处理,有必要去除键抖动。在键闭合稳定时,读取键的状态;在键释放稳定后,再作处理。按键的抖动,可用硬件或软件两种方法消除。

4.简述LED数码管动态扫描的原理及其实现方式。

答:动态扫描的原理是利用人的视觉暂留,让人觉得各位LED同时点亮一样。逐位轮流点亮各个LED,每一位保持一定时间,在5-10ms之内再一次点亮,重复不止,就可以实现动态扫描。

5.为什么51单片机在读口的引脚状态时,许先向端口写“1”,请用图5-1 P1结构图加以说明。

答:在单片机执行读引脚操作时,如果锁存器原来寄存的数据Q=0,那么由于Q =1,将使V1导通,引脚被始终钳位在低电平上,不可能输入高电平。为此,使用读引脚指令前,必须先用输出指令置Q=1,使V1截止。 5.简述89c51各IO 口的驱动能力。

答:各IO 口单个引脚,允许灌入的最大电流为 10 mA ;

每个 8 位的接口(P1、P2 以及 P3),允许向引脚灌入的总电流最大为 15 mA ; P0 的驱动能力最强,允许灌入的最大总电流为 26 mA ; 全部的四个接口所允许的灌电流之和,最大为 71 mA 。 但引脚“输出高电平”的时候,输出电流不到 1 mA 。 6.什么是中断?中断与子程序最本质的区别?

答:中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,自动转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序的过程。 中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU 暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。

中断与子程序的最本质的区别:子程序是预先安排好的;中断是随机发生的。 7.编制中断服务程序时,为什么在主程序的初始化程序中,必须设置EA =1 这条指令(或达到同样功能的对IE 赋值的指令),以及在中断服务程序中为什么通常需要保护现场和恢复现场?

答:中断允许寄存器IE 中有1个总的开关中断控制位EA ,当EA=0时,所有的中断请求被屏蔽,CPU 不接受任何中断;只有当EA=1时,CPU 才开放中断。所以主程序的初始化程序中,必须设置EA =1(或者用IE =1xxxxxxxB ,x 表示1或0) 这条指令。

现场是指中断时刻单片机中某些寄存器和储存器单元中的数据或状态,为了使中断服务程序的执行不破坏这些数据和状态,以免在中断返回后影响主程序的运行,因此要这些数据

写锁存器

内部总线图5-1 P1口结构图

和状态送入堆栈保存,这就是现场保护。中断结束后,在返回主程序前,则需要把保存的现场数据和状态从堆栈中弹出,以恢复那些寄存器和存储器单元中的原有内容,这就是现场恢复。

8.单片机89C51有哪些中断源,CPU对其中断如何请求?

答:89C51中断系统有5个中断源:

INT0:外部中断0请求,低电平有效。通过P3.2引脚输入。

INT1:外部中断1请求,低电平有效。通过P3.3引脚输入。

T0:定时器/计数器0溢出中断请求。

T1:定时器/计数器1溢出中断请求。

TXD/RXD:串行口中断请求。当串行口完成一帧数据的发送或接收时,便可请求中断。

9.简述单片机89C51中断的自然优先级顺序,如何提高某一中断源的优先级别。

答:中断源,其自然优先级的顺序如下:

外部中断0(PX0)最高

定时器/计数器0溢出中断(PT0)

外部中断1(PX1)

定时器/计数器1溢出中断(PT1)

串行口中断(PS)最低

SFR中的IP寄存器中有对应的控制位,若某几个控制位为1,则相应的中断源就规定为高优先级中断;反之,若某几个控制位为0,则相应的中断源就规定为低优先级中断。当同时接收到几个同一优先级的中断请求时,响应哪个中断源则取决于内部自然优先级的顺序。

10.简述51系列单片机中断响应的条件。

答:有中断源发出中断请求;

中断总允许位EA=1,即CPU开中断;

申请中断的中断源的中断允许位为1,即中断没有屏蔽;

无同级或更高级中断正在被服务;

当前的指令周期已经结束;

若现在指令为RETI或者是访问IE或IP指令,则该指令以及紧接着的另一条指令已执行完。

11.用汇编语言编程时,在51系列单片机执行中断服务程序的指令较多时,为什么一般都要在入口地址(又称中断矢量地址)开始的地方放一条跳转指令?

答:因为51系列单片机的两个相邻中断源中断服务程序入口地址相距只有8个单元,当中断服务程序较长容纳不下的,一般都要在相应的中断服务程序入口地址中放一条跳转指令。

12.为什么一般都把主程序的起始地址放在0030H之后?

答:因为0000H~0030H中有中断的矢量地址,为了避免冲突,一般都把主程序的起始地址放在0030H之后。

13.中断服务子程序返回指令RETI 和普通子程序返回指令RET 的区别? 答:RETI 指令在返回的同时清除相应的优先级触发器,以便允许下次中断。 14.简述51单片机定时/计数器4种工作模式的特点。 答:模式1:是16位的定时器/计数器;

模式2:把TL0(或TL1)配置成一个可以自动重装载的8位定时器/计数器; 模式3:对T0和T1大不相同。

若将T0设置为模式3,则TL0和TH0被分为两个相互独立的8位计数器。定时器T1无工作模式3状态。

模式0:与模式1几乎完全相同,唯一的差别是模式0中,寄存器TL0用5位,TH0用8位。这种方式是为了与48系列兼容的,目前一般不使用。

15.定时/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关? 答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。定时时间与时钟频率和定时初值有关。

16.画出51单片机计数/定时器方式1的逻辑结构框图,说明它们的工作原理,如何使用门控和非门控启动计数的方法。 答:

如图所示,当GATE = 0时,经非门后,或门输出1,这样TRx 将直接控制定时器的启

动和关闭。这时如果TRx=1,则接通控制开关,定时器从初值开始计数直至溢出。溢出时,16位加计数器为0,TFx 置位,并申请中断。如要循环计数,则定时器需重置初值,且需用软件将TFx 复位。TRx = 0,则与门被封锁,控制开关被关断,停止计数。

当GATE = 1时,与门的输出由输入INTx 的电平和TRx 位的状态来确定。这时若TRx=1,则引脚INTx 可直接开启或关断计数器:当INTx 为高电平时,允许计数;低电平时则停止计数。若TRx=0,则与门被封锁(即输出为0),控制开关被关断,不能计数。 控制启动、停止计数方式如下:

● 非门控方式

中断

当GATE=0,控制权由 TRx 决定,TRx=1计数启动,TRx=0计数停止。这种方式实际上是用软件控制启动、停止计数。

●门控方式

当GATE=1、TRx=1,控制权由INTx 决定INTx=1计数启动,INTx=0计数停止。这种方式实际上是用外部硬件INTx引脚控制启动、停止计数。

17.在使用8051的定时器/计数器前,应对它进行初始化,其步骤是什么?

答: (1)确定T/C的工作方式——编程TMOD寄存器;

(2)计算T/C中的计数初值,并装载到TH和TL;

(3)T/C在中断方式工作时,须开CPU中断和源中断——编程IE寄存器;

(4)启动定时器/计数器——编程TCON中TR1或TR0位。

18.在有串行通信时,定时器/计数器1的作用是什么,怎样确定串行口的波特率?

答:在有串行通信时,定时器/计数器1的作用是串行口发生器。串行口的波特率根据串行口的工作方式具有不同的计算方式:方式0的波特率固定为晶体振荡器的十二分之一;方式1的波特率=2SMOD.(定时器1的溢出率)/32;方式2波特率=2SMOD.(fosc/64);方式3波特率同方式1(定时器l作波特率发生器)。

19.简述89C51串口通信的四种方式及其特点。

答:方式0:同步移位寄存器输入/输出方式,常用于扩展I/O口。波特率固定为振荡频率的1/12,并不受PCON寄存器中SMOD位的影响。

方式1:用于串行发送或接收,为10位通用异步接口。TXD与RXD分别用于发送与接收数据。收发一帧数据的格式为1位起始位、8位数据位(低位在前)、1位停止位,共10位。波特率由定时器T1的溢出率与SMOD值同时决定。

方式2:用于串行发送或接收,为11位通用异步接口。TXD与RXD分别用于发送与接收数据。收发一帧数据的格式为1位起始位、8位数据位(低位在前)、1位可编程的第9数据位和1位停止位,共11位。波特率取决于PCON中SMOD位的值:当SMOD=0时,波特率为晶振的1/64;当SMOD=1时,波特率为晶振的1/32。

方式3:用于串行发送或接收,为11位通用异步接口。TXD与RXD分别用于发送与接收数据。帧格式与方式2相同,波特率与方式1相同。

20.单片机的串口可以与PC的串口直接连接进行通讯吗?为什么?应如何连接?

答:MCS-51系列单片机串行口与PC机的RS-232C接口不能直接对接,PC机RS232采用负逻辑电平,即逻辑“0”:+3V~+15V;逻辑“1”:-3V~-15V,单片机采用的是TTL电平,即电压小于0.4V 为低电平,大于2.4V为高电平;因此二者不能直接相连,使用时必须进行电平转换,否则将使TTL电路烧坏!必须进行电平转换。常用的转换芯片有MAX232等。连接图如上。

21.试叙述利用SM2控制位进行多级通讯的过程?

答:SM2:多机通信控制位。多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接受到的数据放弃。当SM2=0时,就不管第9位数据是0还是1,都会将数据送入SBUF,并发出中断申请。工作于方式0时,SM2必须为0。

22.RS485总线有何特点?

答:RS-232C是利用传输信号线与公共地之间的电压差,RS-485是利用信号导线之间的信号电压差。它通过传输线驱动器,把逻辑电平变换成电位差,完成始端的信号传送;通过传输线接收器,把电位差转换成逻辑电平,完成终端的信息接收。RS-485比-232C传输距离长、速度快,传输速率最大可达10 Mb/s,最大距离可达1200 m。

RS-485是一点对多点的通讯接口,一般采用双绞线的结构。普通的PC机一般不带RS-485接口,因此要使用RS-232/RS-485转换器。在计算机和单片机组成的RS-485通信系统中,通常下位机由单片机系统组成,主要完成工业现场信号的采集和控制。上位机为工业PC机,负责监视下位机的运行状态,并对其状态信息进行集中处理,以图文方式显示下位机的工作状态和工业现场被控设备的工作状态。系统中的各节点(包括上位机)的识别是通过设置不同的站地址来实现的。

单片机可以通过MAX1487等来完成TTL/ RS-485的电平转换。

23. 简述LCM1602的主要显示性能。

答:LCM1602可显示192个5x7点阵字符,主要是数字和英文大小写字母(1602显示的数字和字母的码值,与ASCII码表中的数字和字母的码值相同)。

另外,它具有64B的自定义字符RAM,可自行定义8个5x7点阵字符用于显示。

24.如何用软件消除键盘的抖动?

答:由于按键是机械开关结构,所以当用手按下其中一个键时,往往会出现所按键在闭合位置和断开位置之间发生跳几下后才会稳定到闭合状态的情况。在释放一个键时,也会出现类似的情况,这就是键的抖动,抖动的持续时间不一,但通常不会大于10ms。若抖动问题不解决,就会引起对闭合键的多次读入。对于键抖动最方便的解决方法就是当发现有键按下后,

不是立即进行扫描,而是延时大约10ms 后再进行。由于一个键按下的时间一般会持续上百毫秒,所以延迟10ms 后再扫描处理并不迟。 25.如何确定LED 数码显示器的段码?

答:根据所选用的LED 数码管的极性(共阳极还是共阴极)以及数码中每一个笔段的引脚与CPU (或其它控制芯片) IO 口的引脚的连接来定(称自定的段码表)。一般资料上提供的段码表是标准接法的段码,即数码管的a 、b 、c 、d 、e 、f 、g 、dp 的引脚要依次接在CPU 的Px.0~Px.7上,这种接法有时会使在PCB 布线的时候不大方便,不如自定的段码表灵活。 26.段码表数组变量一定要放在CODE 存储区吗?放在其它存储区会减少程序的代码吗? 答:最好放在Code 存储区,当然也可以放在内部RAM 或外部RAM 区,但这样作会占用本来就非常稀少的内部RAM 资源和不多的外部RAM 资源。由于放在其它区域仍然要采用程序中的段码表,所以不仅不能减少程序的代码量还会增加把段码表传送的程序指令,增加程序的代码数量。

二、选择题

1. 89c51单片机在晶振12MHz 时,计数器对外部脉冲最大计数频率为___C___。 A. 12MHz B. 1MHz C. 0.5MHz D. 6MHz

2. 89c51外接晶振频率为6MHz ,其计数器允许输入外部脉冲的最高频为 A 。 A. 0.25MHz B. 1MHz C. 6MHz D. 12MHz

3. 下列几种中断优先级的次序中, C 为可实现的次序。

A. 0INT ,T1, 1INT ,T0,串口

B. 串口,T0,0INT ,T1,1INT

C. 0INT ,1INT ,T0,T1,串口

D. 串口,0INT ,T1,1INT ,T0 4. 各中断源发出的中断请求信号,都会标记在MCS-51中的 B 中。 (A )TMOD (B) TCON 、SCON (C) IE (D) IP 6.下面哪一种仅适用于定时器T0(D )。

A.方式0

B.方式1

C.方式2

D.方式3 7.下列说法正确的是 C

A 、 各中断发出的中断请求信号,都会标记在MCS -51系统的IE 寄存器中。

B 、 各中断发出的中断请求信号,都会标记在MCS -51系统的IP 寄存器中。

C 、 各中断发出的中断请求信号,都会标记在MCS -51系统的TCON 与SCON 寄存器中。

D 、 各中断发出的中断请求信号,都会标记在MCS -51系统的TMOD 寄存器中。 8.在MCS -51中,需要外加电路实现中断撤除的是: A A 、电平方式的外部中断 B 、定时中断

C 、外部串行中断

D 、跳变方式的外部中断 9.下列说法正确的是 A

A 、 特殊功能寄存器PCON ,与定时器/计数器的控制无关。

B 、 特殊功能寄存器TMOD ,与定时器/计数器的控制无关。

C 、 特殊功能寄存器IE , 与定时器/计数器的控制无关。

D、特殊功能寄存器TCON,与定时器/计数器的控制无关。

10.下列说法中不正确的是 D

A、同一级别的中断请求按时间的先后顺序响应。

B、同级中断不能嵌套。

C、低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优

先级中断请求。

D、同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。

三、填空题

1. 89c51有 5 个中断源,可分为 2 个优先级。上电复位时 INT0 中断源的优先

级别最高。

2.当单片机接到外设的中断申请时,单片机响应中断,单片机将暂停主程序的执行,转去执行中断服务程序,执行完中断服务,再执行主程序。

3.89c51单片机的中断源有:外部0中断,定时器T0中断,外部1中断,定时器T1中断,

串行口通讯中断。

4.阅读以下程序后填空

#include

unsigned char a;

void main(void)

{

TMOD=0x02;

TL0 =0xd8;

TH0 =0xd8;

EA=1;

ET0=1;

TR0=1;

while(1);

}

void Timer0() interrupt 1

{

a++;

}

1)本程序把定时器/计数器 T0 设置成方式 2 。

2)本程序执行时,变量a的内容将 +1 。

3)程序在 while(1) 语句处发生中断,执行完中断服务程序后,返回到 while(1) 语句处。

4)本程序中断服务程序的入口地址为 000BH 。

5)是否可将interrupt 1改为interrupt 3?不能。

四、是非题

1. MCS-51中的基本型89c51共有五个中断源,这五个中断请求源全部来自外部引脚。(×)

2. 对MCS-51系列芯片中,当使用内部RAM时,EA引线端应接高电平;而不使用内部RAM

时,EA引线端则应接低电平。(√)

3. MCS-51中的89c51单片机P3口的各口线,必须作为第二功能使用。(×)

五、编程题

1. 在P3.2-P3.4三个引脚上分别接有三个发光二极管,用C51编程实现三个发光二极管依次闪亮,循环不止。电路原理图如图5-2所示。

#include

#define uchar unsigned char

#define uint unsigned int

uchar code dispcode[]=

{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

/*-------------------------------------------------------------

功能:毫秒延时函数

参数:当晶振为11.0592MHz时,x为ms数,,误差都为17us;x=1000为1秒

---------------------------------------------------------------*/

void delayms(unsigned int x)

{

unsigned char j;

while(x--)

{

for(j=0;j<113;j++){;}

}

}

void main(void) //主程序

{

uchar num=0;

while(1)

{

P1=dispcode[num/10];

P3= dispcode[num%10];

delayms(1000);

num++;

if (num>99) num=0;

}

}

3.设计一动态显示4位8段LED数码管的电路原理图,并编写程序显示“5678”。

解:

电路原理图如图5-6。 程序如下:

#include

#define uchar unsigned char #define uint unsigned int

/*---------------------------------------------------------------- LED 数码管位选线连接定义

注:LED 数码管段码线连接在P0口

----------------------------------------------------------------*/ sbit LED1=P2^0; sbit LED2=P2^1; sbit LED3=P2^2; sbit LED4=P2^3;

uchar code dispcode[]= //LED 显示0~9、黑的段码定义

{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; uchar ledbuf[4]; //4LED 显示缓冲区,ledbuf[0]为高位,ledbuf[4]为低位

/*---------------------------------------------------------------------功能:延时子程序

参数:x -需延时的毫秒数 当晶振为11.0592MHz 时,延时为xms --------------------------------------------------------------------*/ void delayms(uint x) {

uchar j; while(x--) 图5-6 4位LED 动态显示

{

for(j=0;j<113;j++);

}

}

/*---------------------------------------------------------------

功能:显示4位LED函数(ledbuf[0]为高位,ledbuf[4]为低位)

说明:P0=0xff;在Proteus仿真中才用,实际应用时可去掉

----------------------------------------------------------------*/

void Dis_4LED(uchar *ledbuf)

{

P0=dispcode[ledbuf[0]];LED1=1;LED2=0;LED3=0;LED4=0; delayms(1);

P0=dispcode[ledbuf[1]];LED1=0;LED2=1;LED3=0;LED4=0; delayms(1);

P0=dispcode[ledbuf[2]];LED1=0;LED2=0;LED3=1;LED4=0; delayms(1);

P0=dispcode[ledbuf[3]];LED1=0;LED2=0;LED3=0;LED4=1; delayms(1);

}

void main(void)

{

ledbuf[0]=5;

ledbuf[1]=6;

ledbuf[2]=7;

ledbuf[3]=8;

while(1)

{

Dis_4LED(ledbuf);

}

}

7.根据图5-7的电路原理,设计一个独立式键盘管理程序,在检测到键按下时,点亮对应的LED。键闭合时,采用软件延时消抖的处理,键释放时不加消抖动处理。

解:

/*----------------------------------------------------------- 文件名:key.h头文件

功能:三独立键处理函数

-----------------------------------------------------------*/ #ifndef _KEY_H_

#define _KEY_H_

#include

#define uchar unsigned char

#define UP 0x01 //定义键号

#define DOWN 0x02

#define ENTER 0x03

sbit UP_key =P1^0; //定义键与51单片机的引脚

sbit DOWN_key =P1^1;

sbit ENTER_key=P1^2;

/*-------------------------------------------------------------

功能:毫秒延时函数

参数:当晶振为11.0592MHz时,x为ms数;误差都为16us;x=1000为1秒

引用举例:delayms(500); 表示延时500毫秒。

---------------------------------------------------------------*/

void delayms(unsigned int x)

{

unsigned char j;

while(x--)

{

for(j=0;j<113;j++){;}

}

}

/*-----------------------------------------------------------

功能:获取键号

返回: key=键号1-3; key=0无键按下。

引用举例:如之前定义了一个uchar的变量 Key_NUM,则可以

Key_NUM=KeycanNUM(); Key_NUM将被赋予按键后的键号值。

------------------------------------------------------------*/

uchar KeyscanNUM(void)

{

uchar key=0; // 无键按下,key=0

UP_key=1;DOWN_key=1;ENTER_key=1;

if (UP_key==0 ){delayms(10); if(UP_key==0) key=UP; else key=0;} if (DOWN_key==0 ){delayms(10); if(DOWN_key==0)key=DOWN; else key=0;} if (ENTER_key==0){delayms(10); if(ENTER_key==0)key=ENTER;else key=0;} return key;

}

#endif

程序(文件名3keydemo.c)如下:

/*------------------------------------------------------------

文件名:3keydemo.c

功能:独立键处理演示程序

------------------------------------------------------------*/ #include "key.h"

sbit LED_RED = P3^2; //定义LED引脚

sbit LED_YELLOW= P3^3;

sbit LED_GREEN = P3^4;

/*------------------------------------------------------------ 键处理子函数

功能:按UP键红灯亮,按ENTER键黄灯亮,按DOWN键绿灯亮,

------------------------------------------------------------*/ void KeyProc(uchar key)

{

switch(key)

{

case UP: {LED_RED=0;LED_YELLOW=1;LED_GREEN=1;}break;

case DOWN: {LED_RED=1;LED_YELLOW=0;LED_GREEN=1;}break;

case ENTER:{LED_RED=1;LED_YELLOW=1;LED_GREEN=0;}break;

}

}

//**主程序

void main (void)

{

uchar key;

while(1)

{

key=KeyscanNUM();

if(key==UP || key==DOWN || key==ENTER)

{

KeyProc(key);

}

key=0;

}

}

8.根据图5-8所示电路,

(1)编写LED(0-9)的段码;

(2)设计一个程序,开机后LED显

示0,以后每按一次键,显示的数

字加1,显示9后,再回到0,并照

此循环。

图5-8

解:

#include

#define uchar unsigned char

sbit key=P3^4; //键引脚

uchar keycounter=0;

uchar code dispcode[]=

{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //LED(0-9)的段码

void main(void) //主程序

{

P2=dispcode[0];

while(1)

{

if(key==0) //如键按下

{

if(key==1) // 检测键是否松开

{

keycounter++;

if(keycounter>9)keycounter=0;

P2=dispcode[keycounter];

}

}

}

}

9.用Proteus设计一个4x4的键盘,一位7段LED数码管显示的电路,编写程序将按键的编码显示出来(0~F)。

图5-9

解:电路原理图如图5-9。

#include "4x4KEY.H" //4x4KEY.H 见教材5.2.4, 但要把无键按下的返回值改为16 #define uchar unsigned char uchar code dispcode[]=

{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x 86,0x8e,0xbf}; // LED (0-F ,-)的段码

void main(void) { uchar keynum=16;

P2=dispcode[16]; //显示“-” while(1) { Keynum=Get_Key();

if(keynum !=16) //有键按下 {

P2=dispcode[keynum]; //P2显示按键值

} } }

10.利用

51单片机的定时器和中断方式,在共阳极的两个LED 上显示00~99(每次增加1秒)反复循环的秒钟。请设计电路原理图和程序。 解:

电路原理图如图5-10,程序如下:

#include

#define uchar unsigned char #define uint unsigned int

uchar code DispCode[]=

{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x f8,0x80,0x90,0xff}; uchar num;

uchar timecounter=100; sbit LED1=P3^6; sbit LED0=P3^7;

void delayms(unsigned int x) {

unsigned char j; while(x--)

{ for(j=0;j<113;j++){;}} }

void main(void)

//主程序

{

TMOD=0x01; TL0=0xf0;

TH0=0xd8;

EA=1; //开总允许中断

ET0=1;

TR0=1;

while(1)

{

P1=DispCode[num/10];LED1=1;LED0=0;delayms(5);

P1=DispCode[num%10];LED1=0;LED0=1;delayms(5);

}

}

void timer0(void) interrupt 1

{

TL0=0xf0;

TH0=0xd8;

timecounter--;

if(timecounter==0)

{

timecounter=100;

num++;

if(num>99)num=0;

}

}

11.如图5-11,编写程序,每次按键使外部中断0产生中断,在中断服务程序中使外接发光二极管LED改变一次亮灭状态。

解:程序如下:

12.如图5.12,已知MCS-51单片机系统晶振频率为12MHz,试编写程序,用定时器T0,工作方式2,使P1.0引脚输出如下周期方波。

解:每隔0.1ms 改变一次P1.0的输出状态,即形成周期方波,用T0方式2,定时实现。 计算初值:C=28

-t/T=256–(0.0001)/10-6

=256-100=156=9CH

程序如下:

#include sbit P1_0=P1^0;

void main(void) //主程序 {

TMOD=0x02; //置定时器T0为方式2 TL0 =0x9c; //置定时器初值 TH0 =0x9c;

EA=1; //开总中断 ET0=1; //开T0中断 TR0=1; //启动定时

while(1); //无限循环,等待下一次定时中断 }

void Timer0() interrupt 1 //T0中断服务程序 {

P1_0=~P1^0; //P1.0取反,产生方波 }

13.如图5.13,用P1.0驱动LED 亮1秒、灭1秒地闪烁,设晶振频率为12MHz 。 解: MCS-51定时器最长的定时时间达不到1秒,这里采用了一种长定时方法:先做一个10ms 即0.01秒的定时,增加一个软件计数器(如TimeCouter),记录0.01秒定时中断次数,计满100个中断为1秒。程序框图见图5.14。 计数初值16

2/C t T =-=65536 - 0.01/10-6=D8F0H

#include

#define uchar unsigned char sbit Led=P1^0;

uchar TimeCouter =100;

void main(void) //主程序 {

TMOD=0x10; //置定时器T1为方式1 TL1 =0xf0; //置定时器初值 TH1 =0xd8;

EA=1; //开总中断 ET1=1; //开T1中断 TR1=1; //启动定时 S 为TimeCounter

Led=0;

while(1); //无限循环,等待下一次定时中断

}

void Timer1() interrupt 3 //T1中断服务程序

{

TL1 =0xf0; //重置定时器初值

TH1 =0xd8;

TimeCounter--;

if(TimeCounter==0)

{

TimeCounter=100;

Led=~Led;

}

}

INT引脚输入被检测信号,用门控方式测量正脉冲宽度(设脉宽小于65.5ms)。15.1

INT的控制,当GATA=1,TR1=1时,一分析:采用T1的门控制方式,使T1的启动受1

INT引脚输入高电平时,T1才启动计时,直至出现低电平,停止计时。为了测量确保真旦1

正从高电平上升沿开始计时,T1的计数要先等到出现一个高电平后,下一个高电平到来才开始进行,见图5.15。程序主要部分如下:

#include

#defined uint unsigned int

sbit InputPulse=P3^3;

void main(void) //主程序

{

uchar PulseWide;

TMOD=0x90; //置T1,门控方式、定时器,工作方式1

TL1 =0x00; //置定时器初值

TH1 =0x00;

while(InputPulse==0)

{

TR1=1; //定时可以开始,但还要等外部脉冲为高电平时

}

while(InputPulse==1) //当外部脉冲为高电平时,计时开始,

{

;

}

while(InputPulse==0) //当外部脉冲为低电平时,计时停止,取出定时数值

{

TR1=0;

PulseWide=TH1*256+ TL1;

}

}

注意:

本例是在停止了定时后读取定时的计时值的(由于T1是定时方式,所以T1所计的内部

脉冲个数实质就是时间),这时的数值结果已无法改变。如果需要在定时/计数器运行中读取它的数值,可能会出错。原因是不可能在同一时刻读取THx 和TLx 的内容。比如,先读TLx ,后读THx ,由于定时/计数器还在运行,在读THx 前,恰好TLx 产生溢出向THx 进位,这时TLx 的值就完全不同了。一种解决的方法是:先读THx ,后读TLx ,再读THx ,若两次读得的THx 相同,则可确定读得的内容是正确的。若前后两次读得的THx 有变化,则再重复上述过程,直至正确为止。本例的定时是由外部脉冲接在INT1的引脚控制的,不存在上述问题。

16.见附录D , 实验4 ,利用计数器,记录光电开关被遮断的次数,并用LCD1602显示出来。 解:

电路原理图如图5.16。

lcd1602_4.h 见附录D , 实验4所提供的头文件和驱动程序。

#include "lcd1602_4.h"

#define uint unsigned int #define uchar unsigned char

//存放转换成液晶显示字符(ASIIC)的数组 uchar DispBuffer[4];

void main(void) { P2=0; LCD_init();//液晶初始化

TMOD=0x60; //置T0为计数器方式

2

单片机部分习题答案

第2章:2、CIP-51有哪些存储空间?各个存储空间的功能及寻址范围是什么? 有程序存储器、内部数据存储器、外部数据存储器、特殊功能寄存器和位寻址区五个独立的地址空间。 ●程序存储器:存放程序和常数,容量为64KB,地址范围0000H-0FFFFH ●内部数据存储器:用于通用寄存器和存放数据的临时存储器,容量为256B, 地址范围00H-0FFH ●外部数据存储器:用于存放数据,容量为64KB(有4KB在芯片内部),地 址为0000-0FFFFH ●特殊功能寄存器(SFR):提供对片内资源和外设的访问和控制,以及与外 设的数据交换,C8051F020有122个,离散分布在地址80H-0FFH中。 ●位地址空间:存放位变量,进行布尔运算,容量为256位,有内部RAM的 20H-2FH(16字节,128位)和部分SFR(字节地址可以被8整除的)组成,地址范围为00H-0FFH 3、CIP-51的内部RAM空间有多少字节?它们在应用中有什么专门用途?堆栈一般应设置在什么位置? ●内部RAM有256字节 ●低128B中的00H-1FH用于通用寄存器,20H-2FH既可以字节寻址也可以 位寻址,30H-7FH作一般存储器用;高128B因为与SFR地址重叠,故只能间接寻址,也作一般存储器用 ●理论上堆栈可以设在内部数据存储器的任何位置,复位时堆栈指针SP为 07H,但为了避开通用寄存器和位地址空间,一般设在30H-0FFH。 5、读写内部RAM与外部RAM的数据时,使用的指令有什么区别?读程序存储器的数据的指令又有什么不同? 读写内部RAM用MOV指令;读写外部RAM用MOVX指令;读程序存储器用MOVC指令,写程序存储器用MOVX指令,但为与写外部RAM相区分,需要对相应SFR的相关位进行设置。 6、若(PSW)=0x10,则当前的R0~R7在内部RAM中有哪些单元? 由(PSW)=0x10可知RS1RS0=10,故通用寄存器R0-R7在内部RAM的0x10-0x17单元。(PSW的格式P22) 第一次作业存在的问题: 第一题:5个存储空间,有的同学写的不全,漏SFR和位寻址区;有的同学对位寻址区的寻址范围写的不对,应为0x00-0xff而非0x20-0x2f。

单片机原理及接口技术课后习题答案 李朝青 第五章

单片机原理及接口技术课后习题答案李朝青 课后习题答案2009-11-22 15:13 阅读696 评论9 字号:大中小第五章 1、什么是中断和中断系统?其主要功能是什么? 答:当CPU正在处理某件事情的时候,外部发生的某一件事件请求CPU迅速去处理,于是,CPU暂时中止当前的工作,转去处理所发生的事件,中断服务处理完该事件以后,再回到原来被终止的地方,继续原来的工作。这种过程称为中断,实现这种功能的部件称为中断系统。功能: (1)使计算机具有实时处理能力,能对外界异步发生的事件作出及时的处理 (2)完全消除了CPU在查询方式中的等待现象,大大提高了CPU的工作效率 (3)实现实时控制 2、试编写一段对中断系统初始化的程序,使之允许INT0,INT1,TO,串行口中断,且使T0中断为高优先级中断。 解:MOV IE,#097H MOV IP,#02H 3、在单片机中,中断能实现哪些功能? 答:有三种功能:分时操作,实时处理,故障处理 4、89C51共有哪些中断源?对其中端请求如何进行控制? 答:(1)89C51有如下中断源 ①:外部中断0请求,低电平有效 ②:外部中断1请求,低电平有效 ③T0:定时器、计数器0溢出中断请求 ④T1:定时器、计数器1溢出中断请求 ⑤TX/RX:串行接口中断请求 (2)通过对特殊功能寄存器TCON、SCON、IE、IP的各位进行置位或复位等操作,可实现各种中断控制功能 5、什么是中断优先级?中断优先处理的原则是什么? 答:中断优先级是CPU相应中断的先后顺序。原则: (1)先响应优先级高的中断请求,再响应优先级低的 (2)如果一个中断请求已经被响应,同级的其它中断请求将被禁止

第5章习题解答

第5章思考题及习题5参考答案 一、填空 1.如果采用晶振的频率为3MHz,定时器/计数器T x(x=0,1)工作在方式0、1、2下,其方式0的最大定时时间为,方式1的最大定时时间为,方式2的最大定时时间为。 答:32.768ms,262.144ms,1024μs 2.定时器/计数器用作计数器模式时,外部输入的计数脉冲的最高频率为系统时钟频率的。 答:1/24 3.定时器/计数器用作定时器模式时,其计数脉冲由提供,定时时间与有关。 答:系统时钟信号12分频后,定时器初值 4.定时器/计数器T1测量某正单脉冲的宽度,采用方式可得到最大量程?若时钟频率为6MHz,求允许测量的最大脉冲宽度为。 答:方式1定时,131.072ms。 5. 定时器T2 有3种工作方式:、和,可通过对寄存器中的相关位进行软件设置来选择。 答:捕捉,重新装载(增计数或减计数),波特率发生器,T2CON 6. AT89S52单片机的晶振为6MHz,若利用定时器T1的方式1定时2ms,则(TH1)= ,(TL1)= 。 答:FCH,18H。 二、单选 1.定时器T0工作在方式3时,定时器T1有种工作方式。 A.1种 B.2种 C.3种D.4种 答:C 2. 定时器T0、T1工作于方式1时,其计数器为位。 A.8位 B.16位 C.14位 D.13位 答:B 3. 定时器T0、T1的GATE x=1时,其计数器是否计数的条件。

A. 仅取决于TR x状态 B. 仅取决于GATE位状态 C. 是由TR x和INT x两个条件来共同控制 D. 仅取决于INT x的状态 答:C 4. 定时器T2工作在自动重装载方式时,其计数器为位。 A.8位 B. 13位 C.14位 D. 16位 答:D 5. 要想测量INT0引脚上的正单脉冲的宽度,特殊功能寄存器TMOD的内容应为。 A.87H B. 09H C.80H D. 00H 答:B 三、判断对错 1.下列关于T0、T1的哪些说法是正确的。 A.特殊功能寄存器SCON,与定时器/计数器的控制无关。对 B.特殊功能寄存器TCON,与定时器/计数器的控制无关。错 C.特殊功能寄存器IE,与定时器/计数器的控制无关。错 D.特殊功能寄存器TMOD,与定时器/计数器的控制无关。错 2.定时器T0、T1对外部脉冲进行计数时,要求输入的计数脉冲的高电平或低电平的持 续时间不小于1个机器周期。特殊功能寄存器SCON与定时器/计数器的控制无关。错 3.定时器T0、T1对外部引脚上的脉冲进行计数时,要求输入的计数脉冲的高电平和低电平的持续时间均不小于2个机器周期。对 四、简答 1.定时器/计数器T1、T0的工作方式2有什么特点?适用于哪些应用场合? 答:方式2为初值自动装入的8位定时器/计数器,克服了在循环定时或循环计数应用时就存在用指令反复装入计数初值影响定时精度的问题。 2.TH x与TL x(x=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后的新值是立即刷新还是等当前计数器计满后才能刷新? 答:THx与TLx(x = 0,1)是计数器,其内容可以随时用指令更改,但是更改后的新值要等当前计数器计满后才能刷新。 3.如果系统的晶振的频率为24MHz,定时器/计数器工作在方式0、1、2下,其最大定时时间各为多少? 答:晶振的频率为24MHz, 机器周期为0.5μs。

单片机复习题(含部分答案)

《单片机原理及应用》课程复习题 适用于电子信息工程 11级 一、填空题 1、 A T89S51单片机为个引脚。 2、 A T89S51的机器周期等于 3、 A T89S51访问片外存储器时,利用 8位地址信号。 4、 A T89S51的 5、 A T89S51内部提供位定时 /计数器,定时器有种工作方式。 6、 A T89S51有级中断, 个中断源。 7、 A T89S51的口为高 8位地址总线口。 8、设计一个以 AT89C51单片机为核心的系统,如果不外扩程序存储器,使其内部 4KB 闪烁程序存储器有效,则其 EA* 引脚应该接 +5V 9、单片机系统中使用的键盘分为和行列式键盘,其中行列式键盘的按键识别方法有扫描法和线反转法。 10、 A T89S51内部数据存储器的地址范围是 是 20H~2FH ,对应的位地址范围是 00H~7FH ,外部数据存储器的最大可扩展容量是。 11、如果 (A=34H, (R7=0ABH,执行 XCH A, R7;结果 , (R7= 。 12、在 R7初值为 00H 的情况下, DJNZ R7, rel 指令将循环执行

13、欲使 P1口的低 4位输出 0,高 4位不变,应执行一条命令。 14、若 CPU 使用的是寄存器第 1组, R0~R7的地址范围是。 15、单片机进行串行通信时,晶振频率最好选择 16、当执行 MOVX A , @R1指令时,伴随着 17、若 A 中的内容为 67H ,那么, P 标志位为。 18、 A T89S51唯一的一条 16位数据传送指令为。 19、 LJMP 的跳转范围是 , AJMP 的跳转范围是 SJMP 的跳转范围是 20、 74LS138是具有 3路输入的译码器芯片,其输出作为片选信号时,最多可以选中片芯片。 21、如果 (DPTR=507BH, (SP=32H, (30H=50H, (31H=5FH, (32H=3CH,则执行下列指令后: POP DPH POP DPL POP SP 则:(DPH= ___3CH___; (DPL =___5FH___; (SP =___50H___; 22、 A T89S51复位后, PC 与 SP 的值为分别为和。 23、当单片机复位时 PSW =0区, R4所对应的存储单元地址为 04H 。 24、当 AT89S51执行 MOVC A , @A+ DPTR指令时,伴随着 25、 D/A(数 /模转换器的作用是把(数字量转换成(模拟量 ,而 A/D(模 /数转换器 则正好相反。

单片机(熊静琪)第五章部分习题答案

1.设采样离散控制系统如图所示,已知a=1,K=1,T=1S,输入单位阶跃信号,试分析系统的过渡过程。 解: 离散系统的传递函数 a=1; K=1 ;T=1; num=[K]; den=conv([1 0],[1 a]); [num2 den2]=c2dm(num,den,T); G0z=tf(num2,den2,T); Gz=feedback(G0z,1) 结果: Transfer function: 0.3679 z + 0.2642 ----------------- z^2 - z + 0.6321 Sampling time: 1 单位输入响应下的输出图像: num3=[0.3679 0.2642]; den3=[1 -1 0.6321]; dstep(num3,den3) axis([0 35 -0.1 1.5]) 结果: 由图像可知,在单位阶跃信号的作用下,调整时间ts约为12s,超调量为40%,峰值时间tp=3s,振荡次数N=1.5,衰减比为2:1,稳态误差ess=0. 2.设采样离散控制系统如图所示,已知a=1,K=1,T=1S,输入单位阶跃信号、单位速度、单位加速度时的稳态误差。 解: 离散系统的传递函数: a=1; K=1 ;T=1; num=[K]; den=conv([1 0],[1 a]); [num2 den2]=c2dm(num,den,T); G0z=tf(num2,den2,T);

Gz=feedback(G0z,1) 结果: Transfer function: 0.3679 z + 0.2642 ----------------- z^2 - z + 0.6321 Sampling time: 1 三种输入下的稳态误差: syms z GZ Kp Kv Ka ess1 ess2 ess3 Gz=factor((0.3679*z+0.2642)/(z^2-1.368*z+0.3679)); Kp=limit(Gz,z,1); ess1=1/(1+Kp) Kv=limit((z-1)*Gz,z,1); ess2=1/Kv Ka=limit((z-1)^2*Gz,z,1); ess3=1/Ka 结果: ess1 = -1/6320 ess2 = Inf ess3 = Inf 3.已知采样离散系统的方程如下,是判断系统的稳定性。 (1)D(Z)=Z^Z-Z+0.632 解: syms den p i n den=[1 -1 0.632]; p=roots(den) i=find(abs(p)>1); n=length(i); if n>0 disp('system is not stable') else disp('system is stable') end 结果: P = 0.5000 + 0.6181i 0.5000 - 0.6181i system is stable 4.设采样离散控制系统如图所示,已知a=1,试求T=1s是,T=0.5两种采样周期下,保证系

单片机试题及答案

单片机原理与接口技术习题答案 习题与思考题1 1-1 微型计算机通常由哪些部分组成?各有哪些功能? 答:微型计算机通常由控制器、运算器、存储器、输入/输出接口电路、输入设备和输出设备组成。控制器的功能是负责从内部存储器中取出指令并对指令进行分析、判断、并根据指令发出控制信号,使计算机有条不紊的协调工作;运算器主要完成算数运算和逻辑运算;存储器用于存储程序和数据;输入/输出接口电路完成CPU与外设之间相连;输入和输出设备用于和计算机进行信息交流的输入和输出。 1-2 单片微型计算机与一般微型计算机相比较有哪些区别?有哪些特点? 答:与通用微型计算机相比,单片机的硬件上,具有严格分工的存储器ROM和RAM和I/O端口引脚具有复用功能;软件上,采用面向控制的指令系统和硬件功能具有广泛的通用性,以及品种规格的系列化。单片机还具备体积小、价格低、性能强大、速度快、用途广、灵活性强、可靠性高等特点。 1-3 简述计算机的工作过程。 答:计算机的工作是由微处理器以一定的时序来不断的取指令、指令译码和执行指令的过程。 1-4 单片机的几个重要指标的定义。 答:单片机的重要指标包括位数、存储器、I/O口、速度、工作电压、功耗和温度。 1-5 单片微型计算机主要应用在哪些方面? 答:单片机的主要应用领域有智能化产品、智能化仪表、智能化测控系统、智能化接口等方面。 1-6 为什么说单片微型计算机有较高的性能价格比和抗干扰能力? 答:因为单片微型计算机主要面向特定应用而设计,设计者在硬件和软件上都高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,具备较高的性能、价格比;单片机嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中,另外单片机体积小,可以放入屏蔽设备中,从而使其具有较高的抗干扰能力。 1-7 简述单片机嵌入式系统的定义和特点。 答:单片机嵌入式系统是嵌入到对象体系中的专用计算机系统;其特点是面向特定应用、与各个行业的具体应用相结合、硬件和软件高效率、软件固化在存储器芯片或单片机本身和不具备自举开发能力。 习题与思考题2 2-1 MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么? 答:MCS-51单片机在一块芯片中集成了CPU、RAM、ROM、定时/计数器、多功能I/O口和中断控制等基本功能部件。 单片机的核心部分是CPU,CPU是单片机的大脑和心脏。 程序存储器用于存放编好的程序或表格常数。数据存储器用于存放中间运算结果、数据暂存和缓冲、标志位等。 定时/计数器实质上是加法计数器,当它对具有固定时间间隔的内部机器周期进行计数时,它是定时器;当它对外部事件进行计数时,它是计数器。 I/O接口的主要功能包括:缓冲与锁存数据、地址译码、信息格式转换、传递状态(外设状态)和发布命令等。 中断控制可以解决CPU与外设之间速度匹配的问题,使单片机可以及时处理系统中许多随机的参数和信息,同时,它也提高了其处理故障与应变能力的能力。 2-2 MCS-51单片机的核心器件是什么?它由哪些部分组成?各部分的主要功能是什么? 答:单片机的核心部分是CPU,可以说CPU是单片机的大脑和心脏。它由运算器、控制器和布尔(位)处理器组成。 运算器是用于对数据进行算术运算和逻辑操作的执行部件。

单片机原理及应用课后习题答案第5章作业

第五章中断系统作业 1. 外部中断1所对应的中断入口地址为()H。 2. 对中断进行查询时,查询的中断标志位共有、_ _、、 _ 和_ 、_ _ 六个中断标志位。 3.在MCS-51中,需要外加电路实现中断撤除的是:() (A) 定时中断 (B) 脉冲方式的外部中断 (C) 外部串行中断 (D) 电平方式的外部中断 4.下列说法正确的是:() (A) 同一级别的中断请求按时间的先后顺序顺序响应。() (B) 同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。() (C) 低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求 能中断低优先级中断请求。() (D) 同级中断不能嵌套。() 5.在一般情况下8051单片机允许同级中断嵌套。() 6.各中断源对应的中断服务程序的入口地址是否能任意设定? () 7.89C51单片机五个中断源中优先级是高的是外部中断0,优先级是低的是串行口中断。() 8.各中断源发出的中断申请信号,都会标记在MCS-51系统中的()中。 (A)TMOD (B)TCON/SCON (C)IE (D)IP 9. 要使MCS-51能够响应定时器T1中断、串行接口中断,它的中断允许寄存器 IE的内容应是() (A)98H (B)84H (C)42 (D)22H 10.编写出外部中断1为负跳沿触发的中断初始化程序。 11.什么是中断?其主要功能是什么? 12. 什么是中断源?MCS-51有哪些中断源?各有什么特点? 13. 什么是中断嵌套? 14.中断服务子程序与普通子程序有哪些相同和不同之处? 15. 中断请求撤除的有哪三种方式? 16. 特殊功能寄存器TCON有哪三大作用? 17. 把教材的P82页的图4.24改为中断实现,用负跳变方式,中断0(INT0)显示“L2”,中断1(INT1)显示“H3”。(可参考第四章的电子教案中的例子)

李全利版单片机原理及接口技术课后答案(第五章)

章5 80C51的中断系统及定时/计数器 1.80C51有几个中断源?各中断标志是如何产生的?又是如何复位的?CPU响应各中断时,其中断入口地址是多少? 答:5个中断源,分别为外中断INT0和INT1、T0和T1溢出中断、串口中断。 电平方式触发的外中断标志与引脚信号一致;边沿方式触发的外中断响应中断后由硬件自动复位。 T0和T1,CPU响应中断时,由硬件自动复位。 RI和TI,由硬件置位。必须由软件复位。 另外,所有能产生中断的标志位均可由软件置位或复位。 各中断入口地址:INT0―0003H,T0—000BH,INT1—0013H,T1—001BH,RI和TI—0023H。 2.某系统有三个外部中断源1、2、3,当某一中断源变低电平时便要求CPU处理,它们的优先处理次序由高到低为3、2、1,处理程序的入口地址分别为2000H、2100H、2200H。试编写主程序及中断服务程序(转至相应的入口即可)。 答:将3个中断信号经电阻线或,接INT1。 ORG 0000H LJMP MAIN ORG 00013H LJMP ZDFZ ORG 0040H MAIN:SETB EA SETB EX1 SJMP $ 0RG 0200H ZDFZ:PUSH PSW PUSH ACC JB P1.0,DV0 JB P1.1,DV1 JB P1.2,DV2 INRET:POP ACC POP PSW RETI ORG 2000H DV0:------------ JMP INRET ORG 2100H

DV1:------------ JMP INRET ORG 2200H DV2:------------ JMP INRET 3.外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定? 答: 当IT0=0时,INT0为电平触发方式。电平触发方式时,CPU在每个机器周期的S5P2采样INT0引脚电平,当采样到低电平时,置IE0=1向CPU请求中断;采样到高电平时,将IE0清0。在电平触发方式下,CPU响应中断时,不能自动清除IE0标志。 电平触发方式时,外部中断源的有效低电平必须保持到请求获得响应时为止,不然就会漏掉;在中断服务结束之前,中断源的有效的低电平必须撤除,否则中断返回之后将再次产生中断。该方式适合于外部中断输入为低电平,且在中断服务程序中能清除外部中断请求源的情况。 当IT0=1时,INT0为边沿触发方式。边沿触发方式时,CPU在每个机器周期的S5P2采样INT0引脚电平,如果在连续的两个机器周期检测到INT0引脚由高电平变为低电平,即第一个周期采样到INT0=1,第二个周期采样到INT0=0,则置IE0=1,产生中断请求。在边沿触发方式下,CPU响应中断时,能由硬件自动清除IE0标志。 边沿触发方式时,在相继两次采样中,先采样到外部中断输入为高电平,下一个周期采样到为低电平,则在IE0或IE1中将锁存一个逻辑1。若CPU暂时不能响应,中断申请标志也不会丢失,直到CPU响应此中断时才清0。另外,为了保证下降沿能够被可靠地采样到,INT0和INT1引脚上的负脉冲宽度至少要保持一个机器周期(若晶振频率为12MHz,为1微秒)。边沿触发方式适合于以负脉冲形式输入的外部中断请求。 4.定时/计数器工作于定时和计数方式时有何异同点? 答: 定时/计数器实质是加1计数器。 不同点:设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值乘以机器周期就是定时时间。设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。 相同点:它们的工作原理相同,它们都有4种工作方式,由TMOD中的M1M0设定,即 方式0:13位计数器; 方式1:16位计数器; 方式2:具有自动重装初值功能的8位计数器; 方式3:T0分为两个独立的8位计数器,T1停止工作。 5.定时/计数器的4种工作方式各有何特点?

单片机习题答案

《单片机应用技术》习题答案 第一章概述 1、什么就是总线?总线主要有哪几部分组成?各部分得作用就是什么? 总线就是连接计算机各部件之间得一组公共得信号线。一般情况下,可分为系统总线与外总线。 系统总线应包括:地址总线(AB)控制总线(CB)数据总线(DB) 地址总线(AB):CPU根据指令得功能需要访问某一存储器单元或外部设备时,其地址信息由地址总线输出,然后经地址译码单元处理。地址总线为16位时,可寻址范围为216=64K,地址总线得位数决定了所寻址存储器容量或外设数量得范围。在任一时刻,地址总线上得地址信息就是惟一对应某一存储单元或外部设备。 控制总线(CB):由CPU产生得控制信号就是通过控制总线向存储器或外部设备发出控制命令得,以使在传送信息时协调一致得工作。CPU还可以接收由外部设备发来得中断请求信号与状态信号,所以控制总线可以就是输入、输出或双向得。 数据总线(DB):CPU就是通过数据总线与存储单元或外部设备交换数据信息得,故数据总线应为双向总线。在CPU进行读操作时,存储单元或外设得数据信息通过数据总线传送给CPU;在CPU进行写操作时,CPU把数据通过数据总线传送给存储单元或外设 2.什么就是接口电路? CPU与接口电路连接一般应具有哪些信号线?外部设备与接口电路连接一般应具有哪些信号线? CPU通过接口电路与外部输入、输出设备交换信息, 一般情况下,外部设备种类、数量较多,而且各种参量(如运行速度、数据格式及物理量)也不尽相同。CPU为了实现选取目标外部设备并与其交换信息,必须借助接口电路。一般情况下,接口电路通过地址总线、控制总线与数据总线与CPU连接;通过数据线(D)、控制线(C)与状态线(S)与外部设备连接。 3、存储器得作用就是什么?只读存储器与随机存储器有什么不同? 存储器具有记忆功能,用来存放数据与程序。计算机中得存储器主要有随机存储器(RAM)与只读存储器(ROM)两种。随机存储器一般用来存放程序运行过程中得中间数据,计算机掉电时数据不再保存。只读存储器一般用来存放程序,计算机掉电时信息不会丢失。 4 什么就是单片机?单片机与微机相比有何特点? 单片机(Single-Chip-Microputer)又称单片微控制器,其基本结构就是将微型计算机得基本功能部件:中央处理机(CPU)、存储器、输入接口、输出接口、定时器/计数器、中断系统等全部集成在一个半导体芯片上,因此,单片机其体积小、功耗低、价格低廉,且具有逻辑判断、定时计数、程序控制等多种功能。 单片机结构上得设计,在硬件、指令系统及I/O能力等方面都有独到之处,具有较强而有效得控制功能。虽然单片机只就是一个芯片,但无论从组成还就是从其逻辑功能上来瞧,都具有微机系统得含义。另一方面,单片机毕竟就是一个芯片,只有外加所需得输入、输出设备,才可以构成实用得单片机应用系统。 5、单片机主要应用于哪些领域? (1)智能仪器。智能仪器就是含有微处理器得测量仪器。单片机广泛应用于各种仪器仪表,使仪器仪表智能化取得了令人瞩目得进展。

单片机部分习题答案

第2章: 2、CIP-51有哪些存储空间?各个存储空间的功能及寻址范围是什么? 有程序存储器、内部数据存储器、外部数据存储器、特殊功能寄存器和位寻址区五个独立的地址空间。 ●程序存储器:存放程序和常数,容量为64KB,地址范围0000H-0FFFFH ●内部数据存储器:用于通用寄存器和存放数据的临时存储器,容量为256B,地址范围00H-0FFH ●外部数据存储器:用于存放数据,容量为64KB(有4KB在芯片内部),地址为0000-0FFFFH ●特殊功能寄存器(SFR):提供对片内资源和外设的访问和控制,以及与外设的数据交换,C8051F020有 122个,离散分布在地址80H-0FFH中。 ●位地址空间:存放位变量,进行布尔运算,容量为256位,有内部RAM的20H-2FH(16字节,128位) 和部分SFR(字节地址可以被8整除的)组成,地址范围为00H-0FFH 3、CIP-51的内部RAM空间有多少字节?它们在应用中有什么专门用途?堆栈一般应设置在什么位置? ●内部RAM有256字节 ●低128B中的00H-1FH用于通用寄存器,20H-2FH既可以字节寻址也可以位寻址,30H-7FH作一般存储 器用;高128B因为与SFR地址重叠,故只能间接寻址,也作一般存储器用 ●理论上堆栈可以设在内部数据存储器的任何位置,复位时堆栈指针SP为07H,但为了避开通用寄存器和 位地址空间,一般设在30H-0FFH。 5、读写内部RAM与外部RAM的数据时,使用的指令有什么区别?读程序存储器的数据的指令又有什么不同?读写内部RAM用MOV指令;读写外部RAM用MOVX指令;读程序存储器用MOVC指令,写程序存储器用MOVX指令,但为与写外部RAM相区分,需要对相应SFR的相关位进行设置。 6、若(PSW)=0x10,则当前的R0~R7在内部RAM中有哪些单元? 由(PSW)=0x10可知RS1RS0=10,故通用寄存器R0-R7在内部RAM的0x10-0x17单元。(PSW的格式P22) 第一次作业存在的问题: 第一题:5个存储空间,有的同学写的不全,漏SFR和位寻址区;有的同学对位寻址区的寻址范围写的不对,应为0x00-0xff而非0x20-0x2f。 第三题:内部RAM每一部分的专门作用,尤其低128B要再分类说明;片内XRAM不算片内RAM;堆栈一般在0x30-0xff,而非0x30-0x7f。 第六题:部分同学不会做;要查询PSW的格式,RS1RS0的作用,P22表2-2 8、请叙述中断的响应过程。一个中断请求从提出到CPU响应最短要多长时间?如果CPU响应中断的条件全部具备,响应中断最长的时间是多少?在什么样的情况下会出现这个响应时间? C8051F的每个系统时钟周期对中断标志采样并对优先级译码,如果允许中断响应,则置位相应的优先级状态触发器,然后执行一条硬件长调用指令,控制转移到相应的入口,清相应中断请求标志(有些需要在中断服务程序中清除,如RI、TI),接着PC压栈(但不保护PSW),将中断服务程序的入口地址送给PC,完成中断响应。最快需要5个系统时钟周期:1个中断检测周期,4个对ISR的调用周期(LCALL)。最慢发生在CPU正在执

单片机课后习题答案部分筛选

第一章 2单片机具有哪些特点 (1)片内存储容量越来越大。 (2抗干扰性好,可靠性高。 (3)芯片引线齐全,容易扩展。 (4)运行速度高,控制功能强。 (5)单片机内部的数据信息保存时间很长,有的芯片可以达到100年以上。 第二章 6. 如何简捷地判断89C51正在工作? 答:用示波器观察8051的XTAL2端是否有脉冲信号输出(判断震荡电路工作是否正常?) ALE(地址锁存允许)(Address Latch Enable)输出是fosc的6分频用示波器观察ALE是否有脉冲输出(判断 8051芯片的好坏?) 观察PSEN(判断8051能够到EPROM 或ROM中读取指令码?) 因为/PSEN接外部EPROM(ROM)的/OE端子 OE=Output Enable(输出允许) 9. 读端口锁存器和“读引脚”有何不同?各使用哪种指令? 答:读锁存器(ANL P0,A)就是相当于从存储器中拿数据,而读引脚是从外部拿数据(如MOV A,P1 这条指令就是读引脚的,意思就是把端口p1输入数据送给A) 传送类MOV,判位转移JB、JNB、这些都属于读引脚,平时实验时经常用这些指令于外部通信,判断外部键盘等;字节交换XCH、XCHD算术及逻辑运算 ORL、CPL、ANL、ADD、ADDC、SUBB、INC、DEC控制转移CJNE、DJNZ都属于读锁存器。 13. 内部RAM低128字节单元划分为哪3个主要部分?各部分主要功能是什么? 答:片内RAM低128单元的划分及主要功能: (l)工作寄存器组(00H~lFH) 这是一个用寄存器直接寻址的区域,内部数据RAM区的0~31(00H~lFH),共32个单元。它是4个通用工作寄存器组,每个组包含8个8位寄存器,编号为R0~R7。 (2)位寻址区(20H~2FH) 从内部数据RAM区的32~47(20H~2FH)的16个字节单元,共包含128位,是可位寻 址的RAM区。这16个字节单元,既可进行字节寻址,又可实现位寻址。 (3)字节寻址区(30H~7FH) 从内部数据RAM区的48~127(30H~7FH),共80个字节单元,可以采用间接字节寻址 的方法访问。 15. 开机复位后,CPU使用的是哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工作寄存器组?

单片机课后习题答案解析

一)填空题 1. 十进制数14对应的二进制数表示为(1110B),十六进制数表 示为(0EH)。十进制数-100的补码为(9CH),+100的补码为(64H)。 2. 在一个非零的无符号二进制整数的末尾加两个0后,形成一个新的无符号二进制整数,则新数是原数的(4)倍。 3. 8位无符号二进制数能表示的最大十进制数是(255)。带符号二进制数11001101转换成十进制数是(-51)。 4. 可以将各种不同类型数据转换为计算机能处理的形式并输送到计算机中去的设备统称为(输入设备)。 5. 已知字符D的ASCII码是十六进制数44,则字符T的ASCII码是十进制数(84)。 6. 若某存储器容量为640KB,则表示该存储器共有(655360)个存储单元。 7. 在计算机中,二进制数的单位从小到大依次为(位)、(字节)和(字),对应的英文名称分别是(bit)、(Byte)和(Word)。 8. 设二进制数A=10101101,B=01110110,则逻辑运算A∨B=(11111111),A ∧B=(00100100),A⊕B=(11011011)。 9. 机器数01101110的真值是(+110),机器数01011001的真值是(+89),机器数10011101的真值是(+157或-115),机器数10001101的真值是(+206或-50)。(二)单项选择题 1. 用8位二进制补码数所能表示的十进制数范围是(D) (A)-127 ~ +127 (B)-128 ~ +128 (C)-127 ~ +128 (D)-128 ~ +127 2. 下列等式中,正确的是(B) (A)1 KB = 1024×1024 B (B)1 MB = 1024×1024 B (C)1 KB = 1024 M B (D)1 MB = 1024 B 3. 程序与软件的区别是(C) (A)程序小而软件大(B)程序便宜而软件昂贵 (C)软件包括程序(D)程序包括软件 4. 存储器中,每个存储单元都被赋予惟一的编号,这个编号称为(A) (A)地址(B)字节(C)列号(D)容量 5. 8位二进制数所能表示的最大无符号数是(B) (A)255 (B)256 (C)128 (D)127 6. 下列4个无符号数中,最小的数是(B) (A)11011001(二进制)(B)37(八进制) (C)75(十进制)(D)24(十六进制) 7. 下列字符中,ASCII码最小的是(B) (A)a (B)A (C)x (D)X 8. 下列字符中,ASCII码最大的是(C) (A)a (B)A (C)x (D)X 9. 有一个数152,它与十六进制数6A相等,那么该数是(B) (A)二进制数(B)八进制数(C)十进制数(D)十六进制数 第2章80C51单片机的硬件结构 (一)填空题

单片机第5章习题答案

第5章习题答案 1.8051定时器/计数器有哪几种工作模式?各有什么特点? 答:8051定时器/计数器有0,1,2,3四种工作模式。模式0为13位1定时器/计数器,模式1为16位1定时器/计数器,模式2为自动赋初值的8位定时器/计数器,模式3可以增加一个8位定时器(T1没有模式3)。 2.8051定时器作定时和计数时,其计数脉冲分别由谁提供? 答:8051定时器作定时器时,输入的记数脉冲是由晶体振荡器的输出经12分频后得到的,所以定时器可看作是对单片机机器周期的计数器。8051定时器作计数器时,则对外部事件进行计数。 3.8051定时器的门控信号GATE为1时,定时器如何启动? 答:8051定时器的门控信号GATE为1时,只有INT0(或INT1)引脚为高电平且TR0(或TR1)置1时,相应的T0或T1才能选通工作。 4.定时器/计数器0已预置为156,且选定用于模式2的计数方式,现在T0引脚上输入周期为1ms的脉冲,问: (1) 此时定时器/计数器0的实际用途是什么? (2) 在什么情况下,定时器/计数器0溢出? 答:(1)此时定时器/计数器0的实际用途是0.1S脉冲信号发生器。 (2)当T0每记数100次后定时器/计数器0溢出。 5.设f osc=12MHz,定时器0的初始化程序和中断服务程序如下: MAIN: MOV TH0, #9DH MOV TL0, #0D0H MOV TMOD, #01H SETB TR0 … 中断服务程序: MOV TH0, #9DH MOV TL0, #0D0H … RETI 问:(1) 该定时器工作于什么方式? (2) 相应的定时时间或计数值是多少? 答:(1)该定时器以模式1工作于定时方式。 (2)相应的定时时间为25.136ms. 6.8051单片机的f osc=6MHz,如果要求定时时间分别位0.1ms和5ms,当T0工作在模式0、模式1和模式2时,分别求出定时器的初值。 答:(1)定时时间分别位0.1ms时:模式0初值为8142、模式1初值为65486,模式2初值206。

单片机课后习题答案 胡汉才编

1.25 单片机内部由哪几部分电路组成?各部分电路的主要功能是什么? 解:单片机内部由CPU、存储器和I/O接口等电路组成。CPU的主要功能是对二进制数进行算术和逻辑运算、执行指令(从ROM中取指令,对指令译码,发各种控制信号使CPU和其他部分协调一致的工作,完成指令的功能),存储器由ROM和RAM组成,ROM的主要功能是存储单片机应用系统的程序,RAM的主要功能是存储实时数据或作为通用寄存器、堆栈、数据缓冲区。I/O接口的主要功能是负责单片机和外设、外部存储器间的通信。 第二章 存在的错别字问题:“振荡”写出“推荡”;“芯片”写成“蕊片”。 2.3、程序状态字PSW各位的定义是什么? 解:PSW的各位定义如下: Cy:进位标志位;AC:辅助进位位; F0:用户标志位;RS1、RS0:寄存器选择位; OV:溢出标志位;P:奇偶标志位; PSW1:未定义。 2.4、什么叫堆栈?8031堆栈的最大容量是多少?MCS51堆栈指示器SP有多少位,作用是什么?单片机初始化后SP中的内容是什么? 解:堆栈:符合“先进后出”或“后进先出”存取规律的RAM区域。 8031堆栈的最大容量是128B; MCS-51堆栈指针SP有8位,作用是存放栈顶(/栈低)地址; 单片机初始化后(即单片机复位后)SP中的内容是07H。 存在的问题:1、堆栈的定义中,未答出“RAM区域”,而用了“部件”; 2、只说了“单片机初始化后(即单片机复位后)SP中的内容是栈底地址”,未说明具体值07H; 3、8031堆栈的最大容量错成128M或256B。 2.5、数据指针DPTR有多少位,作用是什么? 解:数据指针DPTR有16位;作用是存放ROM或外部RAM的地址。 2.7、8051片内RAM容量有多少?可以分为哪几个区?各有什么特点? 解:8051的片内RAM容量有128B;分为三个区:工作寄存器区、位寻址区和便笺区; 存在的问题:1、8051的片内RAM容量错成256B。 2.8、8051的特殊功能寄存器SFR有多少个?可以位寻址的有哪些? 解:8051的SFR有21个,可位寻址的有11个:ACC、B、PSW、IP、P3、IE、P2、SCON、P1、TCON 和P0。 存在的问题:SFR有21个错成了26个;可位寻址的SFR中多了一个T2CON,个别同学甚至在T2CON 用了一个“+”号。

第5章《单片机原理与C51基础》赵丽清(课后习题及答案)

思考题: 【5-1】51系列单片机的内部设有几个定时/计数器? 有几个特殊功能寄存器与定时/计数相关? 其功能是? 【5-2】如果采用的晶振频率为6 MHz,定时器/计数器工作在方式0、1、2下,其最大定时时间各为多少? 【5-3】定时器/计数器用作定时器模式时,其计数脉冲由谁提供?定时时间与哪些因素有关?【5-4】定时器/计数器用作计数器模式时,对外界计数频率有何限制? 【5-5】采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1 ms后,又转为计数工作方式,如此循环不止。假定AT89S51单片机的晶体振荡器频率为6MHz,请使用方式1实现,要求编写程序。 【5-6】已知51系列单片机的系统晶振频率为6MHz,请利用定时器T1和P1.2输出矩形脉冲,其波形如下: 【5-7】51系列单片机的T0和T1在模式3时有何不同? 【5-8】当定时器T0用于方式3时,应该如何控制定时器T1的启动和关闭? 【5-9】编写程序,要求使用T0,采用方式2定时.在P1.0输出周期为400μs,占空比为10:1的矩形脉冲。 【5-10】定时器/计数器测量某正单脉冲的宽度,采用何种方式可得到最大量程?若时钟频率为6 MHz,求允许测量的最大脉冲宽度是多少? 【5-11】编写一段程序,功能要求;当P1.0引脚的电平正跳变时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平负跳变时,停止计数,并将计数值写人R0、R1(高位存R1,低位存R0)。 第五章思考题答案: 【5-1】解答:51系列单片机的内部有2个定时/计数器T0和T1。有2个特殊功能寄存器与其相关,分别是TMOD和TCON,TMOD是定时/计数器的工作方式控制寄存器,用来确定工作方式和功能;TCON是定时/计数器的控制寄存器,用来控制T0、T1的启动和停止及设置溢出标志。 【5-2】解答:如果采用的晶振频率为6MHz,一个机器周期则为2μs,则定时器/计数器工作在方式0、1、2下,其最大定时时间各为16.384ms、131.072ms、0.512ms。 【5-3】解答:定时器/计数器用作定时器模式时,其计数脉冲来自内部时钟脉冲。每个机器周期计数值增1,所以计数值乘以机器周期就是定时时间,因此计数频率为振荡频率的1/12,因此定时时间与计数值和振荡频率有关。 【5-4】解答:定时器/计数器用作计数器模式时,其计数脉冲来自相应的外部输入引脚T0(P3.4)或T1(P3.5)。当输入信号发生由1至0的负跳变时,计数器(TH0,TL0或TH1,TL1)的值增1。计数的最高频率一般为振荡频率的1/24。 【5-5】解答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用

单片机部分答案第四版北航马忠梅

← 1.22 已知(A)=7AH,(R0)=30H,(30H)=A5H,PSW=80H。问执行(单独执行)以下各指令的结果 XCH A,R0; A=30H, R0=7AH XCH A,30H; A=A5H XCH A,@R0; A=A5H XCHD A,@R0; A=75H ;二者低4位互换 SWAP A; A =A7H;A高低4位互换 ADD A, R0; A = AAH, Cy=0, OV=1(a6 a7 =1) ADD A,30H; A= 1FH, Cy=1, OV=0 ADD A, A,#30H; A= AAH, Cy=0, OV=1; ADDC A,30H; A= 20H, Cy=1, OV=0; 因为PSW的Cy=1 SUBB A,30H; A= D4H, Cy=1, OV=1; 因为PSW的Cy=1 SUBB A,#30H; A= 49H, Cy=0, OV=0; 因为PSW的Cy=1 ← 1.24 已知(A)=83H,(R0)=17H,(17H)=34H。执行以下指令后A=? ANL A,#17H ; 逻辑与(A)=03H ORL 17H,A ;逻辑或(17H)=37H XRL A,@R0 ; 异或(A)=34H CPL A ; 取反(A)= CBH ← 1.25 将内部RAM20H、21H、22H,连续三个单元的内容以此放入 2FH、2DH、2EH单元 MOV R0, #20H MOV R1, #2FH LOOP : MOV A, @R0 MOV @R1, A INC R0 DEC R1 CJNE R0, #23H, LOOP SJMP $ ← 1.34 外部数据RAM在2000H~2100H区域有一个数据块,将他们移动到3000H~3100H区域 解一: MOV DPTR, #2000H MOV P2,#30H MOV R1, #00H LOOP : MOVX A, @DPTR MOV X @R1, A INC DPTR INC R1 CJNE R1, #00H, LOOP INC P2 MOV X A, @DPTR MOVX @R1, A 解二: MOV DPTR, #2000H

相关文档
相关文档 最新文档