文档库 最新最全的文档下载
当前位置:文档库 › 单片机复习答案分析

单片机复习答案分析

第一部分硬件基础

1、单片机的组成;

2、单片机的并行I/O口在使用时,有哪些注意的地方?

3、单片机的存储器;程序存储器和数据存储器的寻址范围,地址总线和数据总线的位数;数据存储器内存空间的分配;特殊功能寄存器区;

4、时钟及机器周期;

5、单片机的控制总线、地址总线及地址总线等。

例:

一、填空

1.MCS-51单片机有4个存储空间,它们分别是:片内RAM 、片内ROM 、片外RAM 、片外R0M 。

2、MCS-51单片机的一个机器周期包括 6 个状态周期, 12 个振荡周期。设外接12MHz晶振,则一个机器周期为 1 μs。

3.程序状态字PSW由 8 位组成。

4.在MCS-51单片机内部,其RAM高端128个字节的地址空间称为特殊寄存器区,但其中仅有21 个字节有实际意义。

5. MCS-51 系列单片机为 8 位单片机,其数据总线为 8 位,地址总线为 16 位。

6. MCS-51 单片机的4 个并行I/O 口若作为普通I/O 口使用时,输入操作分为读引脚和读锁存器,需要先向端口写“1”的操作是读引脚。

7. MCS-51 单片机的特殊功能寄存器分为可位寻址和不可位寻址两种,那么IE 为不可位寻址,TMOD 为可位寻址。

8.通常MCS-51单片机上电复位时PC= 0000 H、SP= 07 H、通用寄存器采用第0 组,这一组寄存器的地址范围

是00-07 H。

9.MCS-51单片机堆栈遵循先进后出后进先出的数据存储原则。

10.在MCS-51单片机中,使用P2、P0口传送地址信号,且使用P0口来传送数据信号,这里采用的

是分时复用技术。

11.MCS-51单片机位地址区的起始字节地址为 20H 。

12.对于并行口在读取端口引脚信号时,必须先对端口写 FFH 。13.PC的内容是用来存放下一条要执行的指令地址。

14、MCS-51 单片机运行出错后需要复位,复位的方法是在复位引脚上加一个持续时间超过 24 个时钟周期的高电平。

二、问答

1.简述MCS-51 单片机的P0、P1、P2 和P3 口的功能。

51单片机共有P0-P3四个端口,他们除了可以做普通I/O口之外,P0口既可以作为8位数据总线还可以分时输出低8位地址,经锁存器锁存形成A0-A7;P1口仅作为I/O用;P2口还可以输出作为高8位地址A8-A15;P3口具有第二功能,P3.0-P3.7第二功能分别依次为RXD、TXD、/INT0、/INT1、T0、T1、/WR、/RD

2.MCS-51单片机的三总线是由哪些口线构成的。

由P2、P0口组成16位地址总线;由P0口组成8位数据总线;由ALE、/PSEN、RST、/EA 与P3口中的/INT0、/INT1、T0、T1、/WR、/RD共10个引脚组成控制总线。

3.MCS-51单片机的位寻址区的字节地址范围是多少?位地址范围是多少?

20H ——2FH 00H ——7FH

4. MCS-51单片机存储器在结构上有什么特点?在物理上和逻辑上各有那几个地址空间?

单片机的存储器采用的是程序存储器与数据存储器截然分开的哈佛结构,即程序存储器和数据存储器各有自己的寻址方式、寻址空间和控制系统。

物理上分为4个存储器空间:片内程序存储器、片外程序存储器片内数据存储器、片外数据存储器

逻辑上分为3个地址空间:片内、片外统一编址的64KB程序存储器空间、片内256B的数据存储器地址空间、片内64KB数据存储器空间

5.简述MCS-51单片机00H-7FH片内RAM的功能划分,写出它们的名称以及所占用的地址空间,并说明它们的控制方法和应用特性。

(1)工作寄存器组(00H——1FH)

这是一个用寄存器直接寻址的区域,内部数据RAM区的0—31,共32个单元。它是4个通用工作寄存器组,每个组包含8个8位寄存器,编号为R0——R7。

(2)位寻址区(20H——2FH)

16个字节单元,共包含128位,这16个字节单元既可以进行字节寻址,又可以实现位寻址。主要用于位操作。

(3)堆栈与数据缓冲区(30H——7FH)用于设置堆栈、存储数据

6.请写出MCS-51单片机的五个中断源的入口地址。

INT0 0003h T0 000Bh INT1 0013h T1 001Bh 串口 0023h 第二部分 C51程序设计

1、C51的指令规则;C51编程语句及规则;

2、C51表达式和运算符;

3、顺序程序、分支程序及循环程序设计;

4、C51的函数;

5、中断函数。

例:

1.程序的基本结构有顺序、分支、循环结构。

2.C51的存储器模式有 SMALL 、COMPACT 、 LARGE 。3.C51中int型变量的长度为16 ,其值域为-32768~32767。4.C51中关键字sfr的作用定义51单片机内部一个字节的特殊功能寄存器,sbit的作用定义51单片机片内可位寻址位。

5.函数定义由函数体和函数头两部分组成。

6.C51的表达式由运算符运算对象组成。

7.C51表达式语句由表达式和分号组成。

8.C51中“!”运算符的作用是逻辑非;运算符”~”的作用是按位取反。

9.若函数无返回值,用void 关键字指定。

10.若局部变量未初始化,其初值为不确定。

11. C51 中,若定义8 位有符号类型的变量,可定义为char 型变量,其值域为-127~128 ;unsigned int 型变量的长度为

16 ,其值域为0~65535 。

二、程序设计题

1、电路如图所示,要求编程实现一个流水灯。

void delay(uchar z)

{

uchar x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--); }

void main()

{

uchar i;

P2=0xfe;

while(1)

{

for(i=0;i<8;i++)

{

delay(100);

P2=_crol_(P2,1);

}

}

}

2、设全自动洗衣机控制面板上有8个按键,8个指示灯。按下一个按键,对应的指示灯点亮。

第三部分中断系统

1、中断的定义;

2、中断源及其优先级;

3、中断过程及中断应用编程。

例:

一、填空题

1.MCS-51单片机有 5 个中断源。上电复位时,同级中断的自然优先级从高至低依次为INT0、T0、INT1、T1、串口,若IP=00010100B,优先级别最高者为INT1 、最低者为T1 。

2.外部中断请求有电平触发和脉冲触发两种触发方式。

3.MCS-51单片机5个中断源的中断入口地址为:0003H 000BH OO13H

OO1BH 0023H。

4.当定时器/计数器1申请中断时,TF1为 1 ,当中断响应后,TF1为 0 。当串口完成一帧字符接收时,RI为 1 ,当中断响应后,RI为 1 ,需要软件清零。

5.MCS-51 单片机定时器T0 的中断类型号是 1 。

二、简答题

1.MCS-51单片机有几个中断源?各中断标志是如何产生的?如何撤销的?各中断源的中断矢量分别是什么?

MCS-51单片机有5个中断源。外中断0/1电平触发方式,在对应引脚上检测到低电平将中断标志位IE0/1置1向CPU申请中断,边沿触发方式,在对应引脚上检测到负跳变将中断标志位IE0/1置1向CPU申请中断;定时器/计数器0/1在计数溢出时将TF0/1置1向CPU申请中断;串行口发送1帧结束将TI置1或接收1帧数据将RI置1向CPU申请中断。对于T0/T1和边沿触发的INT0/INT1中断标志在进入中断服务程序后自动撤销;

对于电平触发的INT0/INT1需在中断申请引脚处加硬件撤销电路;对于串行口中断标志TI/RI需在进入中断服务程序后用软件CLR RI或CLR TI,撤销。它们的中断矢量分别是:0003H、000BH、0013H、001BH、0023H。

2.简述MCS-51中断过程。

中断过程分中断申请、中断响应、中断处理、中断返回4个阶段。

中断请求:各中断源根据自身特点施加合适的信号,将对应的中断标志位置1向CPU申请中断。

中断响应:CPU对中断请求进行判断,形成中断矢量,转入响应的中断服务程序。

中断处理:根据各中断源要求执行响应中断服务程序。

中断返回:中断服务程序结束后,返回主程序。

3. MCS-51 单片机有哪几个中断源?它们的中断类型号分别是什么?自然优先级由高到低依次是什么?

有5个中断源:/INT0外部中断0,中断类型号为0;定时/计数器0中断,中断类型号为1;/INT1外部中断1,中断类型号为2;定时/计数器1中断,中断类型号为3;串行中断,中断类型号为4。

自然优先级由高到低依次是:/INT0外部中断0、定时/计数器0中断、/INT1外部中断1、

定时/计数器1中断、串行中断。

三、程序设计题

1、没有外部中断时,七段数码管显示8,当有外部中断时,七段数码管上显示的8连续闪烁8次,然后继续显示8。要求编写程序实现上述功能。

#include

#define uchar unsigned char

#define uint unsigned int

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void main()

{

EA=1;

EX0=1;

IT0=0;

while(1)

{

P1=0x7f;

}

}

void intt() interrupt 0

{

uchar i;

P1=0;

for(i=0;i<16;i++)

{

delay(300);

P1=~P1;

}

}

2、没有中断发生时,发光二极管闪烁,有中断发生时,发光二极管变为流水灯。要求编写程序实现上述功能。

3.应用编程。

例:

一、填空

1.MCS-51单片机中有 2 个16 位的定时器/计数器,定时/计数器的核心是一个加1 计数器。

2. 定时器/计数器T0可以工作于方式0 1 2 3 。

3.方式0为 13 位定时器/计数器。

4. 若系统晶振频率为12MHz,则T0工作于定时方式1时最多可以定

时65536 μs。

5. 若MCS-51 晶振频率为12MHz,则T0 工作于计数方式时,可以接受的计数脉冲频率范围为 0—0.5 。

6. TMOD中的M1M0= 11时,定时器工作于方式 3 。

7. 若系统晶振频率为6MHz,则定时器可以实现的最小定时时间为 2 μs。

8. MCS-51单片机工作于定时状态时,计数脉冲来自单片机内部时钟周期。

9. MCS-51单片机工作于计数状态时,计数脉冲来自外部引脚脉冲信号。

10. 当GATE=0时, TR0=1 启动T0开始工作。

11.欲对300个外部事件计数,可以选用定时器/计数器T1的模式 0 或模式 1 。

二、简答题

1、定时器/计数器T0和T1各有几种工作方式?简述每种工作方式的特点。如何控制定时器/计数器的工作方式?

T0可以工作于方式0,1,2,3;T1可以工作于方式0,1,2

方式0:是13位定时/计数器,由TLX的低5位(TLX的高3位未用)和THX高8位组成。方式1:TLX和THX组成16位定时/计数器。

方式2:方式2为自动重装初值的8位定时/计数器。方式3只适用于定时/计数器T0,当T0工作在方式3时,TH0和TL0被分为两个独立的8位计数器。

TMOD用来控制定时计数器的工作方式,位结构如下:

D7 D6 D5 D4 D3 D2 D1 D0

GATE C/T M1 M0 GATA C/T M1 M0

C/T:定时或计数功能选择位。1为计数方式,0为定时方式。

GATE:门控位,用于控制定时/计数器的启动是否受外部中断请求信号的影响。

GATE=0,软件控制位TR0(TR1)=1启动定时/计数器开始计数。

GATE=1,软件控制位TR0(TR1)=1,INT0(INT1)引脚为高电平时启动定时/计数器开始计数。

M1、M0:定时/计数器工作方式选择位,如下表所示。

2、设MCS-51单片机的晶振频率f OSC=12MHz,分别讨论定时器/计数器0在各种

工作方式下的最长定时时间。若定时100ms,则计算各种方式下的定时初值。由fosc =12MHz可知,一个机器周期T=1us,由于是加1计数,所以最长定时应是计数初值最小时(即为0时)的定时时间。

最长定时时间:方式0:8.192ms方式1:65.536ms方式2、3:0.256ms

初值:方式0:0C78(5ms)方式1:3CB0(50ms)方式2、3:0038(0.2ms)

三、程序设计题

1、设单片机晶振频率fosc=6MHZ,使用定时器0以方式0产生周期为600μs的等宽方波脉冲,并由P1.7输出,以查询方式完成。

2、利用单片机定时0~9s,一位数码管显示。要求T0用方式2实现。晶振频率

#include

#define uchar unsigned char

#define uint unsigned int

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

uchar ss,i,a,b;

void delay(uchar z)

{

uchar x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void main()

{

TMOD=0x01;

EA=1;

ET0=1;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

ss=0;

i=0;

P0=0x03;

while(1)

{

P1=table[ss];

delay(10);

if(i==20)

{

i=0;

ss++;

if(ss==9)

{

ss=0;

}

}

}

}

void timer0() interrupt 1

{

TL0=(65536-50000)%256;

i++;

}

4、利用定时器T0定时中断控制P1.7驱动LED发光二极管亮1s灭1s的闪烁,

设时钟频率为12MHz。

#include

#define uchar unsigned char

#define uint unsigned int

sbit led=P1^7;

uchar aa;

void main()

{

TMOD=0x01;

EA=1;

ET0=1;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

while(1)

{

if(aa==20)

{

aa=0;

led=~led;

}

}

}

void timer0() interrupt 1

{

TL0=(65536-50000)%256;

aa++;

}

第五部分串行通信

1、串行接口的组成;

2、串行通信过程;

3、通信方式及应用编程。

例:

一、填空题

1.在串行通信中,把每秒中传送的二进制数的位数叫波特率。

2.当SCON中的M0M1=10时,表示串口工作于方式 2 ,波特率为 fose/32 fose/64 。

3.SCON中的REN=1表示允许串行接受。

4.PCON 中的SMOD=1表示波特率加倍。

5.SCON中的TI=1表示允许串行发送。

6.MCS-51单片机串行通信时,先发送低位,后发送高位。7.MCS-51单片机方式2串行通信时,一帧信息位数为 11 位。

8.设T1工作于定时方式2,作波特率发生器,时钟频率为11.0592MHz,SMOD=0,波特率为2.4K时,T1的初值为 0FAH 。

9.MCS-51单片机串行通信时,通常用指令 MOVE SBUF ,A 启动串行发送。10.MCS-51 单片机的串行口工作于方式0 时用于同步移位寄存器。MCS-51

单片机串行方式0通信时,数据从 RXD 引脚发送/接收。

二、简答题

1、串行口设有几个控制寄存器?它们的作用是什么?

串行口设有2个控制寄存器,串行通信控制寄存器SCON和电源控制寄存器PCON。其中PCON

中只有PCON.7的SMOD与串行口的波特率有关。在SCON中各位的作用见下表:

2、简述MCS-51 单片机串行口的数据发送和数据接收过程。

MCS-51串行口具有两条独立的数据线:发送端TXD、接收端RXD,允许数据同时往两个相反的方向传输。一般通信时发送数据由TXD端输出,接收数据由RXD端输入。在串行通信时,用串行通信控制寄存器SCON和电源控制寄存器PCON控制串行接口的工作方式和波特率。

指令MOV SBUF,A将A中的数据送入发送缓冲寄存器SBUF,并启动一次数据发送。指令MOV A,SBUF将接收缓冲寄存器SBUF的数据送入A中,并启动一次数据接收。每接收/发送一个数据都必须用指令对串行中断标志RI/TI清0,以备下一次接收/发送。3、MCS-51单片机串行口有几种工作方式?各自的特点是什么?怎样确定其工作方式?、有4种工作方式。各自的特点为:

5、MCS-51单片机串行口各种工作方式的波特率如何设置,怎样计算定时器的初值?

串行口各种工作方式的波特率设置:

工作方式O:波特率固定不变,它与系统的振荡频率fosc的大小有关,其值为fosc/12。工作方式1和方式3:波特率是可变的,波特率=(2SMOD/32)×定时器T1的溢出率

工作方式2:波特率有两种固定值。

当SM0D=1时,波特率=(2SM0D/64)×fosc=fosc/32

当SM0D=0时,波特率=(2SM0D/64)×fosc=fosc/64

计算定时器的初值计算:

222562563212384SMOD SMOD OSC OSC

f f X B B

??=-=-

???

相关文档