单片机习题解答.docx

上传人:b****8 文档编号:23868556 上传时间:2023-05-21 格式:DOCX 页数:34 大小:154.83KB
下载 相关 举报
单片机习题解答.docx_第1页
第1页 / 共34页
单片机习题解答.docx_第2页
第2页 / 共34页
单片机习题解答.docx_第3页
第3页 / 共34页
单片机习题解答.docx_第4页
第4页 / 共34页
单片机习题解答.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

单片机习题解答.docx

《单片机习题解答.docx》由会员分享,可在线阅读,更多相关《单片机习题解答.docx(34页珍藏版)》请在冰豆网上搜索。

单片机习题解答.docx

单片机习题解答

项目1单片机最小系统

1.MCS-51系列的单片机怎么分类的,各类型的区别在哪些方面?

答:

该系列分类可分为8051子系列,8052子系列,80C51子系列。

各系列的区别主要在于使用的片内ROM的类型和容量大小的不同。

2.简述80C51单片机的内部结构和引脚功能。

答:

1)内部结构:

由一个8位CPU、128B片内RAM、21个特殊功能寄存器、4个8位并行I/O口、两个16位定时/计数器、一个串行输入输出口和时钟电路等组成。

2)引脚功能:

共有40个引脚。

包括电源线Vcc、地线Vss,时钟线XTAL1、XTAL2,P1口-P3四个八位口共32根I/O口线,4个控制引脚:

ALE(地址锁存允许)、/PSEN(外ROM读选通信号)、RST(复位信号)、/EA(内外ROM选择信号)。

3.简述80C51单片机存储器空间配置及功能。

答:

80C51有三个不同的存储空间,分别是最高64KB的ROM、最高64KB的外RAM和最高256B的片内RAM。

用不同的指令可控制信号实现操作。

1)ROM共64KB,60KB在片外,4KB在片内。

ROM主要用于存放程序,CPU读ROM中程序以程序计数器PC作为16位地址指针;用户读ROM中数据用MOVC指令,控制信号是/PSEN和/EA。

2)外RAM共64KB,读写外RAM用MOVX指令,控制信号是P3口中的/WR和/RD。

3)内RAM共128B,可分为工作寄存器区(00H~1FH)、位寻址区(20H~2FH)和数据缓冲区(30H~7FH)。

4)特殊功能寄存器(SFR)共21个,离散的分布在128B片内RAM的80H~FFH中。

均有不同的用途和功能。

常用的有累加器Acc、程序状态字PSW、堆栈指针SP及数据指针DPTR等。

5)程序计数器PC不属于特殊功能寄存器,不可访问,主要用于CPU读ROM16为地址指针。

4.单片机的并行I/O口在使用上有什么特点?

答:

P0端口既可以作为通用的I/O口进行数据的输入/输出,也可以作为单片机系统的低8位地址/数据线使用。

P1端口为准双向I/O端口,可作为通用I/O口使用,又能使用第二功能复用,具体功能可见表2-2。

P2端口可以作为通用I/O口使用,P2端口又能作为高8位地址线使用。

P3端口是一个准双向的I/O端口,作为通用I/O口使用,又能使用第二功能复用。

P3口的第二功能见下表。

80C51单片机P3口第二功能表

引脚名称

符号

功能

P3.0

RXD

串行口输入

P3.1

TXD

串行口输出

P3.2

INT0

外部中断0

P3.3

INT1

外部中断1

P3.4

T0

计数器T0输入

P3.5

T1

计数器T1输入

P3.6

WR

外部存储器写选通

P3.7

RD

外部存储器读选通

5.单片机复位后各寄存器的状态如何?

答:

单片机复位后,相关寄存器的状态如下表所示。

单片机复位后部分特殊功能寄存器的状态表

专用寄存器

复位后地址

专用寄存器

复位后地址

PC

0000H

TMOD

00H

ACC

00H

TCON

00H

B

00H

TH0

00H

PSW

00H

TL0

00H

SP

07H

TH1

00H

DPTR

0000H

TL1

00H

P0~P3

FFH

SCON

00H

IP

xxx00000B

SBUF

不定

IE

0xx00000B

PCON

0xxx0000B

注:

x表示无关位。

6.单片机的寻址方式有哪些?

答:

单片机的指令系统共使用了7种寻址方式,包括寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址等。

7.单片机的指令分为哪几类?

答:

(1)按功能可分为5类:

数据传送类指令(共29条)

算数运算类指令(共24条)

逻辑运算及移位类指令(共24条)

控制转移类指令(共17条)

布尔变量操作类指令(共17条)

(2)按字节数可以分为3类:

单字节指令(49条)

双字节指令(46条)

三字节指令(16条)

(3)按指令执行的时间可分为3类:

单机器周期指令(64条)

双机器周期指令(45条)

四机器周期指令(2条)

8.编写程序段实现交换内部RAM20H单元和30H单元的内容

答:

程序如下:

MOVA,20H

XCHA,30H

MOV20H,A

9.编写计算1234H+ABCDH的程序段,并将结果存入内部RAM30H~31H单元(30H存低位)。

解:

参考程序如下:

MOVA,#0CDH

ADDA,#34H

MOV30H,A

MOVA,#0ABH

ADDCA,#12H

MOV31H,A

10.请写出完成下列操作的指令:

(1)使累加器A的低4位清0,其余位不变。

ANLA,#0F0H

(2)使累加器A的低4位置1,其余位不变。

ORLA,#0FH

(3)使累加器A的低4位取反,其余位不变。

XRLA,#0FH

(4)使累加器A中的内容全部取反。

CPLA

11.无条件长转移指令、无条件绝对转移指令、无条件相对转移指令和条件转移指令的转移范围有什么不同?

答:

LJMPaddr16可以转移到64KB程序存储器中的任意位置。

AJMPaddr11转移范围2KB内绝对转移

SJMPrel 转移范围是以本指令的下一条指令为中心的-128~+127字节以内。

条件转移指令转移范围是以本指令的下一条指令为中心的-128~+127字节以内。

12.将一个字节内的两个BCD码十进制数拆开并变成相应的ASCII码的程序段如下,给下面每条指令加上注释。

  MOVR0,#32H;R0指向内部RAM32H单元

  MOVA,@R0;将32H单元的内容送入A

  ANLA,#0FH;屏蔽A的高4位,剩下个位数

  ORLA,#30H;个位加上30H,以转换为它的ASCII

  MOV31H,A;个位数的ASCII存放在31H单元

  MOVA,@R0;将32H单元的内容送入A

  SWAPA;将A的个位数和十位数交换

  ANLA,#0FH;屏蔽A的高4位,剩下十位数

  ORLA,#30H;十位加上30H,以转换为它的ASCII

  MOV32H,A;十位数的ASCII存放在32H单元

13.已知两数分别存放在R6和R7单元中,编程求其乘积,并存入R4R5寄存器中。

解:

编程如下:

MOVA,R6

MOVB,R7

MULAB

MOVR5,A;乘积低八位存入R5中

MOVR6,B;乘积高八位存入R4中

14.编写程序,把外部RAM中1000H~100FH中的16个数,传送到内部RAM30H~3FH中去。

解:

参考程序如下:

MOVR7,#16

MOVDPTR,#1000H

MOVR1,#30H

LOOP:

MOVXA,@DPTR

MOV@R1,A

INCDPTR

INCR1

DJNZR7,LOOP

SJMP$

15.编写程序,把内部RAM30H和31H两个单元的低4位二进制数,合并为一个字节,存放到40H单元中(30H的低4位,合并后放到高4位)。

解:

参考程序如下:

CHANGE:

MOVA,30H;取第一个数据

ANLA,#0FH;屏蔽高四位,保留低4位

SWAPA;转移至高四位

MOVB,A;暂存

MOVA,31H;取第二个数据

ANLA,#0FH

ORLA,B;合并

MOV40H,A;存数

16.编写一个子程序,找出外部RAM2000H~200FH数据区的最大值,并放入内部RAM30H单元中。

解:

参考程序如下:

SECH:

MOVDPTR,#2000H;置外部RAM数据区首地址

MOVR7,0FH;置外部RAM数据区长度

MOVXA,@DPTR;读第一个数据

MOVB,A;假设第一个数据为最大值

SLOP:

INCDPTR;指向下一个数据

MOVXA,@DPTR;读下一个数据

CJNEA,B,SLP1;新数据与最大值比较

SLP1:

JCSLP2;新数据小于旧数据,转下一个数比较

MOVB,A;存新的最大值

SLP2:

DJNZR7,SLOP;判循环结束否?

MOV30H,B;存最大值到30H单元

RET

项目2交通灯控制系统习题

1.什么叫中断?

中断有什么特点?

答:

中断是通过硬件来改变CPU的运行方向的。

单片机在执行程序的过程中,当CPU运行当前程序时,CPU之外的其它硬件(例如定时器、串行口等)会出现某些特殊情况,这些特殊情况会以一定的方式向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。

这种程序在执行过程中由于外界的原因而被中间打断的情况称为“中断”。

中断的特点:

分时操作、实时处理、故障处理。

2.80C51单片机有几个中断源,几个中断优先级?

各中断标志是如何产生的?

CPU响应各中断时,其中断入口地址是多少?

答:

80C51单片机有5中断源,2级中断优先级。

T0、T1的外部中断源根据电平触发或边缘触发后,置IE0/IE1=0;T0、T1的定时器溢出后,置TF0/TF1=1;串行口每发送或接收一帧数据后置中断标志ES=1。

CPU响应中断时,各中断源的中断入口地址如下表所示。

中断源

中断服务入口地址

0003H

T0

000BH

0013H

T1

001BH

串行口

0023H

T2

002BH

3.外部中断有哪两种触发方式?

对触发脉冲或电平有什么要求?

如何选择和设定?

答:

外部中断触发方式有电平触发或边缘触发。

电平触发方式为了让CPU能够检测到下降沿,

的高、低电平必须保持1个机器周期以上。

当IT1=0时,外部中断1控制为电平触发方式;当IT1=1时,外部中断1控制为边沿触发,即下降沿触发。

4.涉及80C51单片机中断控制的有哪几个特殊功能寄存器?

答:

有中断请求、中断允许和中断优先级控制3个方面的特殊功能寄存器。

1)中断请求:

定时和外中断控制寄存器TCON、串行口控制寄存器SCON;

2)中断允许控制寄存器IE;

3)中断优先级控制寄存器IP。

5.简述中断的过程,并说明是什么中断嵌套?

答:

系统的中断处理有以下几个步骤:

1)中断响应的条件

2)中断响应的过程

3)关闭中断

4)保护现场

5)打开中断

6)中断服务程序

7)中断服务程序

8)恢复现场

9)打开中断

10)恢复断点

中断嵌套:

当CPU响应某一中断时,若有优先权高的中断源发出中断请求,则CPU会中断正在进行的中断服务程序,并保留这个程序的断点,响应高级中断。

高级中断处理结束以后,再继续进行被中断的中断服务程序,这个过程称为中断嵌套

6.利用中断设计一个应用系统,实时显示P3.2引脚上出现负跳变脉冲的个数(设此脉冲数≤255,可直接调用显示子程序DISPLAY)。

解:

参考程序如下:

ORG0

LJMPMAIN

ORG0003H

LJMPPINT0;外中断0服务程序入口地址

ORG0100H

MAIN:

MOVSP,#60H;调整堆栈指针

SETBIT0;置外中断0为边沿触发方式

MOVIP,#01H;外中断0为高优先级

MOVR7,#00H;脉冲计数器清0

SETBEA;开放外中断0

SETBEX0

LOOP:

LCALLDISPLAY;调用显示子程序

SJMPLOOP;循环显示并等待中断

PINT0:

INCR7;脉冲计数器加1

RETI;中断返回

7.定时/计数器工作于定时和计数方式时有何异同点?

答:

设置为定时工作方式时,计数器对内部机器周期进行计数,每过一个机器周期,计数器增1,直至计满溢出。

定时器的定时时间与系统的振荡频率紧密相关,适当选择定时器的初值可获取各种定时时间。

设置为计数工作方式时,计数器对来自输入引脚T0(P3.4),T1(P3.5)和T2(P1.0)的外部信号进行计数,外部脉冲的下降沿将触发计数。

8.80C51单片机定时/计数器相关的寄存器有哪些?

简述它们每位的功能。

答:

定时/计数器T0、T1的初始化通过定时/计数器的方式寄存器TMOD和控制寄存器TCON来完成。

(1)定时/计数器T0、T1的方式寄存器TMOD

1)GATE:

门控位。

2)C/

:

功能选择位。

3)M1和M0:

T0、T1的工作方式选择位

(2)定时/计数器T0、T1的控制寄存器TCON

1)TCON.7(TF1):

T1溢出标志位。

2)TCON.6(TR1):

T1运行控制位。

3)TCON.5(TF0):

T0溢出标志位。

4)TCON.4(TR0):

T0运行控制位。

5)TCON.3(IE1):

外部中断(

)请求标志位。

6)TCON.2(IT1):

外部中断1触发方式选择位。

7)TCON.1(IE0):

外部中断0(

)请求标志位。

8)TCON.0(IT0):

外部中断0触发方式选择位。

9.利用定时/计数器T0,编程产生定时时钟从P1.1输出周期为0.5s的正脉冲信号,晶振频率为12MHz。

解:

参考程序如下:

START:

CLRP1.0

LCALLDELAY

SETBP1.0

LCALLDELAY

LJMPSTART

DELAY:

MOVR5,#28H;置25ms计数循环初值40D

MOVR6,#64H;置250s计数循环初值100D

MOVTMOD,#20H;置T1为方式2

    MOVTH1,#06H;置定时器初值

MOVTL1,#06H

SETBTR1;启动定时器T1

LP1:

JBCTF1,LP2;查询计数溢出

SJMPLP1;无溢出则继续计数

LP2:

DJNZR6,LP1;未到25ms继续循环

MOVR6,#64H

DJNZR5,LP1;未到1s继续循环

RET

10.利用定时/计数器T0,编程产生定时时钟,由P2口控制8个LED,使8个指示灯依次循环闪动,每个led闪动的间隔为1s。

LED为共阳极,晶振频率为12MHz。

解:

参考程序如下:

MOVA,#01111111b

LOOP:

MOVP2,A

ACALLDELAY

RRA

SJMPLOOP

DELAY:

MOVR5,#28H;置25ms计数循环初值40D

MOVR6,#64H;置250s计数循环初值100D

MOVTMOD,#02H;置T1为方式2

    MOVTH1,#06H;置定时器初值

MOVTL1,#06H

SETBTR1;启动定时器T1

LP1:

JBCTF1,LP2;查询计数溢出

SJMPLP1;无溢出则继续计数

LP2:

DJNZR6,LP1;未到25ms继续循环

MOVR6,#64H

DJNZR5,LP1;未到1s继续循环

RET

11.LED数码管的静态显示方式和动态扫描显示方式各有何特点?

分别适用于什么场合?

答:

LED静态显示方式下,每一位显示器的字段需要一个8位I/O口控制,而且该I/O口须有锁存功能,N位显示器就需要N个8位I/O口,每一位字段码分别从I/O控制口输出,保持不变直至CPU刷新显示为止,也就是各字段的亮灭状态不变。

静态显示方式编程较简单,但占用I/O口线多,硬件成本较高,一般适用于显示位数较少的场合。

动态扫描显示是将各位的所有相同字段线连在一起,每一位的a段连在一起,b段连在一起,…,dp段连在一起,共8段,由一个8位I/O口控制,而每一位的公共端(共阳或共阴com)由另一个I/O口控制。

数码管采用扫描方式轮流点亮。

动态扫描显示电路的特点是占用I/O端口线少,电路简单,硬件成本低,但编程较复杂,CPU要定时刷新扫描。

适用于显示位数较多的应用系统。

12.AT89C51单片机扩展一片8255A,若把8255A的PA口用作输入,每一位接一个开关;PA口用作输出,每一位接一个发光二极管。

请画出出电路原理图,并编写出PA口某一位开关接高电平时,PB口相应位发光二极管被点亮的程序。

参考电路:

由图8255A与单片机的连接方式分析可得I/O口地址为:

A口:

7CFFH;B口:

7DFFH;C口:

7EFFH;控制口:

7FFFH。

子程序清单如下:

MOVDPTR,#7FFFH

MOVA,#98H;设置A口为方式0输入口,B口为方式0输出口,

MOVX@DPTR,A

MOVDPTR,#7CFFH

MOVXA,@DPTR;从A口输入数据

MOVDPTR,#7DFFH

MOVX@DPTR,A;从B口输出数据

END

13.参考教材图2-24,按下列要求修改后,画出电路并编制数码管显示子程序。

(1)用4片74LS164连接4位LED数码管;

(2)用P1.7控制串行口输出;

(3)4位显示符已存放在以70H(低位)为首址的内部RAM中。

解:

参考电路设计

参考程序如下:

DIR2:

SETBP1.7;允许串行输出

MOVR7,#04H;置显示位数

MOVR0,#70H;置显示缓冲区首址

MOVDPTR,#TAB;置字段码表首址

LP:

MOVA,@R0;取显示数

MOVCA,@A+DPTR;读相应字段码

MOVSBUF,A;串口输出

JNBT1,$;等待串行传送结束

CLRT1;清串口中断标志

INCR0;修改显示数据区地址

DJNZR7,LP;判别显示完毕否?

CLRP1.0;停止串行输出

RET

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H;0~9共阳字段码表

DB92H,82H,0F8H,80H,90H

14.参考教材图2-27,按下列要求修改相关连线,画出电路并编制数码管动态扫描子程序。

(1)用单片机P0口做段控口,采用74LS240所反相驱动器;用P1.0~P1.3做位控输出线,采用74LS07做同相驱动,扩展4位LED共阴极数码管。

(2)显示缓冲区设置在30H~33H,对应从右到左的4位数码管。

(3)编制数码管动态扫描子程序,每调用一次子程序,对数码管从右到左扫描2次。

解:

参考电路:

参考程序设计:

显示子程序如下:

;*******************************************************************

;动态扫描子程序

;功能:

将30H~33H显示缓冲区的值取出送LED数码管显示

;*******************************************************************

ORG0D50H

SSEE:

SETBRS1换工作区

MOVR5,#02H;扫描5遍

SSE2:

MOV30H,#0FEH;设置位控码,从右往左扫描

MOV31H,#30H;从最高位开始扫描

MOVR7,#04H;扫描6个数码管

SSE1:

MOVA,30H;取位控码

MOVP1,,A;输出位控码

MOVR0,31H

MOVA,@R0

MOVDPTR,#DDFF

MOVCA,@A+DPTR

MOVP0,A;输出段控码

MOVA,30H

RLA;位控码左移一位

MOV30H,A

INC31H

MOVA,#0FFH;数码管全灭

MOVX@R1,A

DJNZR7,SSE1;6位数码管扫描完否?

DJNZR5,SSE2;5遍扫描完否?

CLRRS1;恢复工作区

RET

DDFF:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

DB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH

;数码管代码表0~9,A~B,灭,P.,H,特定提示符

;*******************************************************************

项目3电子钟

1.为什么会有“键抖动”?

如何消除?

答:

由于按键开关的结构为机械弹性元件,在按键按下和断开时,触点在闭合和断开的瞬间会产生接触不稳定,引起输出电平不稳定,即出现“键抖动”现象。

键盘的抖动时间一般为5~10ms,抖动现象会引起CPU对一次按键操作进行多次处理,从而可能产生错误,因此必须消除抖动的不良后果。

消除“键抖动”不良后果的方法主要有硬件和软件去抖动两种方法。

硬件去抖动通常有双稳去抖电路、单稳去抖电路和RC滤波去抖电路。

其中RC去抖电路简单实用。

软件去抖动的原理是根据按键抖动的特性,在第一次检测到按键按下后,执行10ms左右的延时子程序后再确认该键是否确实按下,从而消除抖动。

2.键盘扫描控制方式有几种?

各有何优缺点?

答:

单片机应用系统中,对键盘的处理工作仅是CPU工作内容的一部分,CPU好要进行数据处理、显示和其他输入输出操作,因此键盘处理工作既不能占用CPU太多时间,又需要CPU对键盘操作能及时作出响应。

CPU对键盘处理控制的工作方式有以下几种:

程序控制扫描方式。

程序控制扫描方式是在CPU工作空余,调用键盘扫描子程序,响应键输入信号要求。

程序控制扫描方式的键处理程序固定在主程序的某个程序段。

当主程序运行到该程序段时,每次扫描键盘,判断是否键输入,若有,则计算按键编号,执行相应键功能子程序。

这种工作方式,对CPU工作影响小,但应考虑键盘处理程序的运行间隔周期不能太长,否则会影响对键输入响应的及时性。

定时控制扫描方式。

利用定时/计数器每隔一段时间产生定时中断,CPU响应中断后对键盘进行扫描,并在有键闭合时转入该键的功能子程序。

定时控制扫描方式与程序控制扫描方式的区别是,在扫描间隔时间内,前者用CPU工作程序填充,后者用定时/计数器定时控制,定时控制扫描方式也应考虑定时时间不能太长,否则会影响对键输入响应的及时性。

中断控制方式。

中断控制方式是利用外部中断源,响应键输入信号。

当无键按下时,CPU执行正常工作程序。

当有键按下时,CPU立即产生中断,在中断服务子程序中扫描键盘,判断是哪一个键被按下,然

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1