单片机期末考试.docx
《单片机期末考试.docx》由会员分享,可在线阅读,更多相关《单片机期末考试.docx(15页珍藏版)》请在冰豆网上搜索。
单片机期末考试
《单片机开发与应用技术》部分参考答案
习题1-4:
什么是单片机,它有哪些主要特点?
单片机(SingleChipMicrocomputer,SCM)全称单片微型计算机,国际上统称为微控制器(MicroControllerUnit,MCU),它是在一块半导体芯片上集成了中央处理器CPU、只读存储器ROM、随机存取存储器RAM、定时/计数器和多种输入/输出(I/O)接口的一个完整的微型计算机。
它是微型计算机发展过程中的一个重要分支,是计算机家族中的一个重要成员。
其实质上就是一个以芯片形态表现的微型计算机,是集成了微型计算机核心技术的智能化集成电路芯片。
r
主要特点有:
高性价比;高集成度、高可靠性;控制能力强;低功耗、低电压;体积小;丰富的总线接口;配置典型、应用灵活。
习题1-7:
ISP和IAP与传统编程器相比有哪些优势?
ISP(In-SystemProgramming)是指在系统中编程,这种编程方式通过下载线将程序代码下载到单片机中后,由单片机内部的编程电路自行固化程序代码。
设计时只要预留相应的引脚接口,甚至不用将单片机从系统中取下,就能实现重新编程。
而IAP(In-ApplicationProgramming)是指在应用中编程,这种编程方式一般是通过串口先将程序代码下载到单片机,然后由单片机内部的监控程序自行将程序代码固化到存储器中。
编程时系统无需断电停止工作,即在应用中就能实现程序代码的擦除和改写。
相比传统方式,ISP和IAP省却了编程器,编程时芯片不用从电路板上取下,避免了芯片和电路板的损伤,也使得程序的升级和改动变得更加容易。
此外IAP方式还可通过网络实现远程升级和维护。
习题1-8:
MCS-51单片机有哪几种代表类型,主要特性如何?
MCS-51系列产品中有字母“C”的表示CMOS或CHMOS工艺,否则是HMOS工艺。
该系列可分为51/31和52/32两个子系列,其中51子系列是基本型,而52子系列是加强型。
其主要特性如表所示。
系列
型号
片内ROM
片内RAM
定时/计数器
I/O线
串口
中断源
MCS-51
8031/80C31
无
128Byte
2×16位
32
1
5
8032/80C32
无
256Byte
3×16位
32
1
6
8051/80C51
4KByte
128Byte
2×16位
32
1
5
8052/80C52
8KBtye
256Byte
3×16位
32
1
6
习题2-1:
Intel80C51主要由哪几部分组成,各自功能如何?
Intel80C51主要组成部分及其功能是:
(1)8位CPU。
负责执行指令,完成各种运算,以及管理、控制单片机中各部件,使它们能协调一致的工作。
(2)内部时钟电路OSC。
产生单片机执行过程中所需要的定时时钟信号。
(3)时序和控制部分。
负责产生单片机访问外部存储器时所需的逻辑控制信号,以及通过外部手段对单片机进行复位操作时的内部复位信号。
(4)特殊功能寄存器SFR。
用来对单片机内部资源进行操作控制。
(5)片内RAM存储器。
主要用来存储数据。
(6)片内ROM存储器。
主要用来存储程序和常量数据。
(7)定时/计数器。
用来产生定时信号和对外部脉冲进行计数,在串行通信中还可用作波特率发生器。
(8)异步串行接口。
可被用作和其它处理器或设备的通信。
(9)并行I/O口。
用作单片机与外部进行并行信息交换。
(10)外中断接口。
用于外设向单片机请求中断。
习题2-2:
Intel80C51内部的CPU寄存器有哪些,有何用途?
(11)8位累加器A。
是CPU中使用频率最高,工作最繁忙的一个寄存器。
许多指令,比如像算术运算、逻辑运算等都要使用该寄存器来临时存放数据。
(12)8位寄存器B。
主要与累加器A组合用于乘除运算,也可作普通数据存储用。
(13)8位程序状态字寄存器PSW。
主要用于存放运算结果特征。
(14)16位数据指针寄存器DPTR。
用于存放有关操作数据在存储器中的地址。
(15)8位堆栈寄存器SP。
用于存放堆栈的栈顶地址。
习题2-5:
Intel80C51的存储器是如何组织的?
引脚
有何用途?
Intel80C51的存储器空间物理上分为:
片内ROM、片外ROM、片内RAM和片外RAM四个独立存储空间。
逻辑上分为:
统一编址的程序存储空间(0000H~FFFFH)、片内数据存储空间(00H~FFH)和片外数据存储空间(0000H~FFFFH)三部分。
其片内数据存储空间又可分为:
通用寄存器区(00H~1FH)、位寻址区(20H~2FH)、数据缓冲区(30H~7FH)、特殊功能寄存器区(80H~FFH)。
引脚
用来选择程序存储空间的低4KB(0000H~0FFFH)映射在片内还是片外。
当
=0时,映射在片外,而当
=1时,映射在片内。
习题2-10:
什么叫寻址方式,MCS-51单片机的指令有几种寻址方式,各有何特点?
寻址方式就是如何寻找操作数或其存放地址的方法形式,寻址方式越丰富,编程越灵活方便。
(16)立即寻址。
操作对象以常数形式在指令中给出,其作为机器指令编码的一部分,读取指令的同时也就得到操作对象。
(17)寄存器寻址。
操作对象存放在寄存器中,在指令中给出存放的寄存器名称。
(18)直接寻址。
操作对象存放在片内RAM或SFR中,在指令中直接给出存放的片内RAM单元或SFR地址,该地址作为机器指令编码的一部分。
(19)寄存器间接寻址。
操作对象存放在片内RAM或片外RAM中,在指令中间接给出存放操作对象的RAM单元地址,该地址可存放在R0、R1或DPTR寄存器中。
(20)变址寻址。
操作对象存放在ROM中,在指令中间接给出存放操作对象的ROM单元地址,该地址是A寄存器与PC或DPTR寄存器的和。
(21)位寻址。
操作对象存放在位单元中,在指令中直接给出存放的位单元地址,该地址作为机器指令编码的一部分。
(22)转移地址寻址。
为指令提供转移的目标地址,有相对寻址、绝对寻址、变址寻址3种。
习题2-11:
请用数据传送指令实现以下操作:
(23)将R3寄存器的值传送到R4寄存器中。
MOVA,R3
MOVR4,A
(24)交换R3和R4寄存器中的值。
MOVA,R3
XCHA,R4
MOVR3,A
(25)将片外RAM中1010H单元的值传送到片外0200H单元中。
MOVDPTR,#1010H
MOVXA,@DPTR
MOVDPTR,#0200H
MOVX@DPTR,A
(26)交换片外RAM中1010H单元和0200H单元的值。
MOVDPTR,#1010H
MOVXA,@DPTR
MOVB,A
MOVDPTR,#0200H
MOVXA,@DPTR
XCHA,B
MOVX@DPTR,A
MOVA,B
MOVDPTR,#1010H
MOVX@DPTR,A
(27)将B寄存器高4位和低4位交换。
MOVA,B
SWAPA
MOVB,A
习题2-16:
将累加器A的高3位数据通过P1口的低3位输出。
RLA
RLA
RLA
ANLP1,#F8H
ORLP1,A
习题3-2:
编程实现逻辑表达式:
P1.4=
∧P1.1∨
⊕
。
上述逻辑表达式可改写为:
P1.4=
∧P1.1∨P1.2∧
∨
∧P1.3
ORG0000H
MOVC,P1.1
ANLC,/P1.0
MOVF0,C
MOVC,P1.2
ANLC,/P1.3
ORLC,F0
MOVF0,C
MOVC,P1.3
ANLC,/P1.2
ORLC,F0
MOVP1.4,C
END
习题3-3:
比较两个存放在R6和R7寄存器中的带符号数大小,将其中最大的一个存放到R5寄存器中。
ORG0000H
MOVA,R6
CLRC
SUBBA,R7
JZL1
MOVC,OV
ANLC,/ACC.7
MOVF0,C
MOVC,ACC.7
ANLC,/OV
ORLC,F0
JNCL1
MOVA,R7
JMPNEXT
L1:
MOVA,R6
NEXT:
MOVR5,A
END
习题3-7:
定义一个子程序将A中的数字字符“0”~“9”转换为对应的数字。
SUBP:
CLRC
MOVB,A
SUBBA,#30H
JCRETURN
CLRC
MOVA,B
SUBBA,#40H
JNCRETURN
CLRC
MOVA,B
SUBBA,#30H
RETURN:
RET
习题4-3:
按要求用C51定义下列变量。
(28)一个存放在片内直接寻址区中的无符号字符型变量ch。
unsigendchardatach;
(29)一个存放在ROM中的字符数组string,其内容为字符串“MCS-51”。
charcodestring[]="MCS-51";
(30)一个存放在片内间接寻址区中的整型变量i,变量地址为95H。
intidatai_at_0x95;
(31)一个存放在片外RAM中的无符号整型常变量N,其值为10000。
constunsignedintxdataN=10000;
(32)一个存放在片外RAM中的易变量整型数组arr,数组首地址为0100H。
volatileintxdataarr[10]_at_0x100;
(33)一个指向片内直接寻址区的字符型存储器指针变量p1。
chardata*p1;
(34)一个存放在片内间接寻址区中的整型通用指针变量p2。
int*idatap2;
(35)一个指向片外RAM并存放在片内间接寻址区中的实型存储器指针变量p3。
floatxdata*idatap3;
(36)一个指向分页片外RAM的空指针变量p4。
voidpdata*p4;
(37)2个位变量a和b。
bita,b;
习题4-4:
编程将P1口低4位的输入,输出到高4位。
#include"reg51.h"
main()
{unsignedn;
P1|=0x0f;
n=P1;
n<<=4;
P1&=0x0f;
P1|=n;
}
习题4-6:
编程将存放在片外RAM中地址0000H起始的100个8位无符号数中的最大数找出。
#include"reg51.h"
volatileunsignedcharxdataarr[100]_at_0x0000;
main()
{unsignedchari,max;
max=arr[0];
for(i=1;i<100;i++)
if(max}
习题6-1:
MCS-51单片机的4个输入/输出口各有何用途。
MCS-51单片机有4个8位双向的并行输入/输出口P0、P1、P2和P3,这些口既可以整体8位输入/输出,也可以只对某个引脚单独输入/输出。
此外在外扩存储器时,P0口被用作地址/数据线AD7~AD0,P2口被用作高8位地址线A15~A8;P1口在8051单片机中没有复用的第二功能;P3口引脚从低到高依次复用为RXD串行接收、TXD串行发送、
外中断0输入、
外中断1输入、T0定时/计数器0外部计数输入、T1定时/计数器1外部计数输入、
片外RAM存储器写信号、
片外RAM存储器读信号。
习题6-3:
什么是中断?
中断响应的基本步骤如何?
54
中断(Interrupt)是指执行程序过程中,因某种事件发生,处理器于是暂停正被执行的程序,转而去为事件服务,服务完毕后又返回原来程序中被暂停处继续执行的过程。
中断响应的基本步骤。
(38)中断源提出中断请求,置位相应中断标志位;
(39)对应中断源及总中断使能;
(40)中断优先级判别;
(41)处理器查询到中断请求,且当前指令执行完毕,或是没有同级或高级中断程序被执行,保护现场,处理器转到对应中断向量处执行中断程序;
(42)中断程序执行完毕,恢复现场,中断返回。
习题6-6:
使用汇编语言编写MCS-51单片机的中断程序时需注意哪些问题?
(43)设置中断向量。
在中断向量处安排中断程序,或放置一条转移指令将流程转到中断程序处。
(44)现场保护。
执行中断程序前将重要寄存器如A、PSW,及其他有关数据保存到堆栈中。
(45)恢复现场。
在中断程序执行完后,将现场保护的数据按相反顺序从堆栈中恢复。
(46)中断返回。
最后执行IRET指令返回被中断程序。
(47)此外对于硬件不能自动清除的中断请求标志位如RI、TI,需要在中断程序返回前用指令清除。
习题6-5:
80C51单片机的定时/计数器有几种工作方式,各有何特点?
80C51单片机的定时/计数器有4种工作方式。
方式0。
13位计数,定时时的定时时间=(213-计数初值)×12/fOSC。
方式1。
16位计数,定时时的定时时间=(216-计数初值)×12/fOSC。
方式2。
8位自动重装计数,定时时的定时时间=(28-计数初值)×12/fOSC。
方式3。
将T0拆分为两个8为计数器,其中TL0可以定时或计数,而TH0只能定时。
T1不能工作在此方式。
习题6-9:
80C51单片机的串行口有几种工作方式,各有何特点?
80C51单片机的串行口有4种工作方式,数据收发均为先低位后高位。
方式0。
移位寄存器方式,波特率为fOSC/12,数据由RXD引脚收发,TXD引脚输出移位时钟。
方式1。
10位异步通信方式,波特率可变,数据由RXD引脚接收,TXD引脚发送。
一帧数据由1位起始位、8位数据位和1位停止位组成。
方式2。
11位异步通信方式,波特率为fOSC/32或fOSC/64,数据由RXD引脚接收,TXD引脚发送。
一帧数据由1位起始位、8位数据位、1位可编程的第9位和1位停止位组成。
方式3。
11位异步通信方式,波特率可变,数据由RXD引脚接收,TXD引脚发送。
一帧数据由1位起始位、8位数据位、1位可编程的第9位和1位停止位组成。
习题6-10:
分别计算一下,在振荡时钟频率为11.05
92MHz和12MHz情况下,方式1的波特率分别为1200、2400、4800、9600、19200、38400bps时,定时/计数器T1的计数初值应取多少合适,它们与实际的偏差各为多少?
由波特率计算公式:
fosc×2SMOD/(32×12×(28-T1的计数初值))
推导出:
T1的计数初值=28-fosc×2SMOD/(32×12×波特率)
取SMOD=0,fosc=11.0592MHz,波特率=1200bps时,计算得到:
T1的计数初值=232,实际波特率=1200bps,偏差为0。
取SMOD=0,fosc=11.0592MHz,波特率=2400bps时,计算得到:
T1的计数初值=244,实际波特率=2400bps,偏差为0。
取SMOD=0,fosc=11.0592MHz,波特率=4800bps时,计算得到:
T1的计数初值=250,实际波特率=4800bps,偏差为0。
取SMOD=0,fosc=11.0592MHz,波特率=9600bps时,计算得到:
T1的计数初值=253,实际波特率=9600bps,偏差为0。
取SMOD=1,fosc=11.0592MHz,波特率=19200bps时,计算得到:
T1的计数初值=253,实际波特率=19200bps,偏差为0。
取SMOD=1,fosc=11.0592MHz,波特率=38400bps时,计算得到:
T1的计数初值≈254,实际波特率=28800bps,偏差为25%。
取SMOD=0,fosc=12MHz,波特率=1200bps时,计算得到:
T1的计数初值≈230,实际波特率≈1202bps,偏差为0.17%。
取SMOD=0,fosc=12MHz,波特率=2400bps时,计算得到:
T1的计数初值≈243,实际波特率≈2404bps,偏差为0.17%。
取SMOD=0,fosc=12MHz,波特率=4800bps时,计算得到:
T1的计数初值≈250,实际波特率≈5208bps,偏差为8.5%。
取SMOD=0,fosc=12MHz,波特率=9600bps时,计算得到:
T1的计数初值≈253,实际波特率≈10417bps,偏差为8.5%。
取SMOD=1,fosc=12MHz,波特率=19200bps时,计算得到:
T1的计数初值≈253,实际波特率≈20833bps,偏差为8.5%。
取SMOD=1,fosc=12MHz,波特率=38400bps时,计算得到:
T1的计数初值≈254,实际波特率≈31250bps,偏差为18.6%。
习题7-2:
常见的单片机键盘接口方式有哪两种,各有何特点?
依键盘与单片机接口方式的不同,可分为独立式按键和矩阵式按键两种类型。
独立式键盘的按键组织结构和程序比较简单,一个按键就需占用一个I/O引脚,资源利用率不高。
适用于单片机接口资源比较丰富,同时按键数目又不太多的应用中。
矩阵式按键组织结构和程序都稍复杂,但在占用较少单片机引脚的情况下即可获得更多数量的按键。
适用于单片机接口资源比较紧张,同时按键数目又较多的应用中。
习题7-5:
LED数码管的静态显示和动态显示方式各有何特点?
静态显示方式的特点是直接采用单片机并行I/O口的硬件结构较简单,程序编制容易,但由于单片机I/O口的限制,因而不易扩展太多,且由于数码管常亮,所以系统整体功耗较大。
动态显示方式的特点硬件结构稍复杂,程序编制难度稍大,在扩展较多位数时所占用的单片机I/O口不会增加太多,但工作时序要求较高,由于每个时刻只有一只数码管在点亮,所以系统整体功耗较低。
习题7-8:
为MCS-51单片机外扩存储器,其中ROM采用两片2732共8K,第1片的地址为1000H~1FFFH,第2片的地址为2000H~2FFFH;RAM采用1片6264,其地址为4000H~5FFFH。
画出设计的连线示意图,并简要说明。
由图可知:
第一片2732选中条件是A15A14A13A12=0001,对应地址段1000H~1FFFH。
第二片2732选中条件是A15A14A13A12=0010,对应地址段2000H~2FFFH。
6264选中条件是A15A14A13A12=0100或A15A14A13A12=0101,对应地址段4000H~5FFFH。