单片机应用考试题库.docx
- 文档编号:4818991
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:24
- 大小:89.21KB
单片机应用考试题库.docx
《单片机应用考试题库.docx》由会员分享,可在线阅读,更多相关《单片机应用考试题库.docx(24页珍藏版)》请在冰点文库上搜索。
单片机应用考试题库
第一章
1.答:
单片机又称为单片微计算机,它的结构特点是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时/计数器及终端系统等)全部集成在一个半导体芯片上。
虽然单片机只是一个芯片,但无论从组成还是从逻辑功能上来看,都具有微机系统的定义。
与通用的微型计算机相比,单片机体积小巧,可以嵌入到应用系统中作为指挥决策中心,是应用系统实现智能化。
2.2.虽然单片机只是一个芯片,但无论从组成还是从逻辑功能上来看,都具有微机系统的定义。
与通用的微型计算机相比,单片机体积小巧,可以嵌入到应用系统中作为指挥决策中心,是应用系统实现智能化,此后在8031上发展出了MCS51系列MCU系统。
基于这一系统的单片机系统直到现在还在广泛使用。
随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。
90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。
随着INTELi960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。
然而,由于各应用领域大量需要的仍是8位单片机,因此各大公司纷纷推出高性能、大容量、多功能的新型8位单片机。
目前,单片机正朝着高性能和多品种发展,但由于MCS-51系列8位单片机仍能满足绝大多数应用领域的需要,可以肯定,以MCS-51系列为主的8位单片机,在当前及以后的相当一段时间内仍将占据单片机应用的主导地位。
列为主的8位单片机,在当前及以后的相当一段时间内仍将占据单片机应用的主导地位。
3.3.答:
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。
4.4.第一步,需求分析,分析项目的需求,有哪些功能等等;第二部,方案选择,比如芯片选择,是否需要带系统,选用哪种语言开发等等;第三部,可行性分析 选定这个方案是否可行,代价有多大,周期有多长,是否能够在有限的时间内实现;第四部 方案实施 主要分为硬件设计 和软件设计第五步 调试和测试。
5.5.首先阅读软件使用说明,了解基本功能,然后绘制原理图,再点击原理图中的单片机加载程序,最后点击仿真即可。
6.第八章
7.非编码键盘的单片机系统中,键盘处理程序首先执行有无键按下的程序段,当确认有按键按下后,下一步就要识别哪一个按键被按下。
通常的按键所用开关为机械弹性开关。
由于机械触电的弹性作用,按键在闭合及断开的瞬间均伴随有一连串的抖动。
键抖动会引起一次按键被误读多次。
为了确保CPU对键的一次闭合仅作一次处理,必须去除抖动。
这个指令可以判断按键释放。
8.扫描法:
以4*4矩阵按键为例,将全部行线置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
线反转法:
在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:
依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
9.略
第二章
1、51单片机包含的主要功能部件包括:
CPU、RAM、ROM、I/O口、T/C、中断源的中断控制系统和全双工UART(通用异步接收发送器)的串行I/O口。
其中:
CPU:
由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:
用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:
用以存放程序、一些原始数据和表格;
I/O口:
四个8位并行I/O口,既可用作输入,也可用作输出
T/C:
两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信。
2、PSW各位的定义如下:
Cy(PSW.7):
即PSW的D7位,进位、借位标志。
进位、借位CY=1;否则CY=0
AC(PSW.6):
即PSW的D6位,辅助进位、借位标志。
当D3向D4有借位或进位时,AC=1;否则AC=0.
F0(PSW.5及PSW.1):
即PSW的D5位,用户标志位;RS1及RS0(PSW.4及PSW.3):
即PSW的D4、D3位,寄存器组选择控制位;
OV(PSW.2):
溢出标志。
有溢出OV=1,否则OV=0;F1(PSW·1):
保留位,无定义;
P(PSW·0):
奇偶校验标志位,由硬件置位或清0;存在ACC中的运算结果有奇数个1时P=1,否则P=0。
3、物理结构可分成片内程序存储区、片外程序存储区、片内数据存储区、片外数据存储区。
4、EA/Vpp:
访问外部存储器控制信号。
EA无效(高电平)时,访问内部ROM,其有效时,访问内部ROM。
5、程序复位入口地址是0000H、外部中断0是0003H、外部中断1是0013H、定时器0是000BH、定时器1是001BH、定时器2是002BH。
6、SFR是特殊功能寄存器,是80C51单片机中各功能部件对应的寄存器,用于存放相应功能部件的控制命令,状态或数据。
7、P3.0RXD(串行口输入)、P3.1TXD(串行口输出)、P3.2INT0(外部中断0输入)、P3.3INT1(外部中断1输入)、P3.4T0(定时\计数器0的外部输入)、P3.5T1(定时\计数器1的外部输入)、P3.6WR(片外数据存储器写选通)、P3.7RD(片外数据存储器读选通。
8、晶振为6MHz时,时钟周期=振荡周期=1/6MHz=0.1667us,机器周期=12*时钟周期=2us,双周期指令所用时间为两个机器周期所用时间,即4us。
9、51单片机共有四个8位双向并行的I/O口,每个端口都包括一个锁存器、一个输出驱动器和一个输入缓冲器。
但这四个端口的功能不全相同,P0口既可作一般I/O口使用,又可作地址/数据总线使用;P1口是一个准双向并行口,作通用并行I/O口使用;P2口除了可作为通用I/O使用外,还可在CPU访问外部存储器时作高八位地址线使用;P3口是一个多功能口除具有准双向I/O功能外,还具有第二功能。
准双向口:
不是严格意义上双向IO口,虽然IO口也可以实现输入输出功能,但是需要特殊处理,当作为输入口是需要先赋值“1”才能作为输入口使用。
10、复位操作作用是单片机对相关的寄存器、I/O端口进行初始化操作,使单片机从同一个状态开始工作。
寄存器PC,复位后状态码为0000H;
寄存器ACC,复位后状态码为00H;
寄存器PSW,复位后状态码为00H;
寄存器SP,复位后状态码为07H
11、最小系统是指用最少的元件组成的单片机可以工作的系统。
第三章
3.1答:
C51强大功能及其高效率的重要体现之一在于其丰富的可直接调用的库函数,多使用库函数使程序代码简单,结构清晰,易于调试和维护
3.2
C51存储类型与8051存储空间的对应关系
存储区
描述
DATA
片内RAM的低128字节,可在一个周期内直接寻址
BDATA
片内RAM的位寻址区,16字节
IDATA
片内RAM的256字节,必须采用间接寻址
XDATA
外部数据存储区,使用DPTR间接寻址
PDATA
外部存储区的256个字节,通过P0口的地址对其寻址。
使用MOVX@Ri,需要两个指令周期
CODE
程序存储区,使用DPTR寻址。
3.3C51对51单片机特殊功能寄存器的定义方法
答:
MCS-51通过其特殊功能寄存器(SFR)实现对其内部主要资源的控制。
MCS-51单片机有21个SFR,有的单片机还有更多的SFR,它们分布在片内RAM的高128字节中,其地址能够被8整除的SFR一般可以进行位寻址。
关于MCS-51单片机的特殊功能寄存器参看附录A。
对SFR只能用直接寻址方式访问。
C51允许通过使用关键字sfr、sbit或直接引用编译器提供的头文件来实现对SFR的访问。
(1)使用关键字定义sfr
为了能直接访问特殊功能寄存器SFR,C51提供了一种自主形式的定义方法。
这种定义方法与标准的C语言不兼容,只适用于对8051系列单片机进行C编程。
这种定义的方法是引入关键字“sfr”,语法如下:
sfr特殊功能寄存器名字=特殊功能寄存器地址;
如:
sfrSCON=0x98;/*串口控制寄存器地址98H*/
sfrTMOD=0X89;/*定时器/计数器方式控制寄存器地址89H*/
(2)通过头文件访问SFR
8051系列单片机的寄存器数量与类型是极不相同的,因此对单片机特殊功能寄存器的访问可以通过对头文件的访问来进行。
为了用户处理方便,C51编译器把MCS-51单片机的常用的特殊功能寄存器和特殊位进行了定义,放在一个“reg51.h”或“reg52.h”的头文件中。
当用户要使用时,只需要在使用之前用一条预处理命令“#include
用户可以通过文本编辑器对头文件进行增减。
(3)SFR中位定义
在8051单片机的应用问题中,经常需要单独访问SFR中的位,C51的扩充功能使之成为可能,使用关键字“sbit”可以访问位寻址对象。
特殊位(sbit)的定义,像SFR一样不与标准C兼容。
与SFR定义一样,用关键字“sbit”定义某些特殊位,并接受任何符号名,“=”号后将绝对地址赋给变量名。
这种地址分配有三种方法:
第一种方法:
sbit位名=特殊功能寄存器名^位置;
当特殊功能寄存器的地址为字节(8位)时,可使用这种方法。
特殊功能寄存器名必须是已定义的SFR的名字。
“^”后的“位置”语句定义了基地址上的特殊位的位置。
该位置必须是0~7的数。
如:
第二种方法:
sbit位名=字节地址^位置;
这种方法是以一个整常数为基地址,该值必须在0x80~0xFF之间,并能被8整除,确定位置的方法同上。
第三种方法:
sbit位名=位地址;
这种方法将位的绝对地址赋给变量,地址必须在0x80~0xFF之间。
3.4可直接进行处理的数据类型:
unsignedchar,signedchar,unsignedint,signedint,
Unsignedlong,signedlong,float,bit,sbit,sfr,sfr16
不能进行处理的数据类型:
double
C51编译器需要对程序中的预处理命令进行处理,然后将处理结果和源程序一起编译。
3.5
新建项目-编写代码加入项目-项目配置-编译和连接
3.6
在Debug那个选项卡里,选择usesimulator,使用软件进行调试。
3.7
1.基于电可擦除存储单元的EEPROM或Flash技术(譬如CPLD),特点是,掉电数据不丢失,但编程次数有限,编程速度慢;
2.基于SRAM查找表的编程单元(譬如FPGA),特点是,配置次数无限,加电可随时更改逻辑,但掉电后数据即丢失,下次上电需要重新配置;
3..基于反熔丝编程单元(譬如Actel的FPGA);
4.JTAG方式;
第四章
4.1.定时器/计数器定时和计数的内部工作有何异同点?
答:
定时是对周期固定的内部机器周期脉冲进行计数,计数时计数脉冲从T0(P3.4)或T1(P3.5)引脚接入。
其余的控制寄存器是一样的。
4.2
工作方式0:
13位计数模式最大范围0-8191
工作方式1:
16位计数模式最大范围0-65535
工作方式2:
8位自动重装计数模式0-255
工作模式3(只有T0):
TL0和TH0将被分割成2个0-255的独立计数器会触发TF0TF1中断
4.3
voidInitTimer0()
{
TMOD=0x01;定时器0,工作方式1
TH0=0xEC,TL0=0x77
ET0=1;打开定时器0中断
EA=1;打开总中断
TR0=1;打开定时器0
}
4.4.编写一段程序,功能要求:
当P1.0引脚的电平正跳变时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平负跳变时,停止计数,并将计数值写入R0、R1(高位存R1,低位存R0)。
答:
将P1.1的输入脉冲接入INT0,即使用T0计数器完成对P1.1口的脉冲计数。
参考程序如下:
ORG0000H
LJMPMAIN
ORG000BH
LJMPIT0P
MAIN:
JNBP1.0,MAIN
MOVTMOD,#05H;定时器/计数器T0为计数方式1
SETBTR0;启动T0,开始计数
SETBET0;允许T0中断
SETBEA;CPU开中断
WAIT:
JBP1.2,WAIT
CLREA
CLRTR0
MOVR1,TH0
MOVR0,TL0
AJMP$
IT0P:
INCR2
RETI
第五章
5.1.什么是中断、中断源、中断优先级和中断嵌套?
答:
中断是指单片机内部有一个中断管理系统,它对内部的定时器事件、串行通信的发送和接收及外部事件(如键盘按键动作)等进行自动的检测判断。
当CPU正在处理某件事情(例如正在执行主程序)的时候,外部或内部发生的某一事件(如某个引脚上电平的变化,一个脉冲沿的发生或计数器的计数溢出等)请求CPU迅速处理,于是,中断管理系统会置位相应标志通知CPU暂时中止当前的工作,迅速转去处理所发生的事件。
处理完该事件后,再回到原来被中止的地方,继续原来的工作,这样的过程称为中断。
产生中断的请求源称为中断源。
将中断事件按轻重缓急分若干级别叫中断优先级。
允许中断优先级高的中断源中断正在执行的低优先级的中断服务程序叫中断嵌套。
5.2.什么叫中断源?
MCS-51有哪些中断源?
各有什么特点?
它们的中断向量地址分别是多少?
答:
中断源即引发中断的事件。
MCS-51单片机有5个中断源,它们是外部中断0,定时器T0,外部中断1,定时器T1,串行口。
外部中断源是由引脚的触发信号引起的中断,定时器中断源是由于定时器计数器的溢出引发的中断,串行口是由于串行通信的发送或接收引发的中断。
外部中断0,定时器T0,外部中断1,定时器T1,串行口五个中断源的中断向量地址依次为:
0003H,000BH,0013H,001BH,0023H。
5.3.MCS-51中断的中断响应条件是什么?
答:
(1)有中断源发出中断请求;
(2)此中断源允许位为1,即中断源可以向CPU发中断请求;
(3)CPU开总中断允许,即EA=1;
(4)无同级或者更高级中断正在服务
5.4.MCS-51的中断响应过程是怎样的?
答:
(1)将相应的中断优先级状态触发器置1,以阻断后来的同级和低级中断请求;
(2)由硬件清除相应的中断请求标志,串行口的发送和接收中断除外;
(3)执行一条硬件LCALL指令,即把程序计数器PC的内容压入堆栈保存,再将相应的中断服务程序的入口地址送入PC;
5.5.有一外部中断源,接入端,当其中有中断请求时,要求CPU把一个从内部RAM30H单元开始的50个字节的数据块传送到外部RAM从1000H开始的连续存储区。
请编写对应的程序。
解:
#include
voidmain(){
IT0=1;
EA=1;
EX0=1;
while
(1);
}
voidintx0()interrupt0using1{
char*ptr1=0x30;
charxdatai,*ptr2=0x1000;
for(i=0;i<50;i++)*ptr2++=*ptr1++;
}
6.805l单片机只有两个外部中断源,若要扩展成8个外部中断源,请画出实现这种扩展的硬件线路图,并说明如何确定各中断源的优先级。
解:
用按钮开关模拟中断源的中断请求,INT0单独作为一个中断源,INT1扩展成7个中断源,有中断请求时,借助于P2口识别是这七个中断源是哪个请求中断,为了验证正确性,如果是INT0中断,则在P0口的数码管上显示0,是INT1中断,则根据从上到下是哪个中断源在P0口的数码管上显示1—7。
具体电路和程序如下:
#include
charled_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};
voidINT0_srv(void)interrupt0using1//外部中断0处理程序
{
P0=led_mod[0];
}
voidINT1_srv(void)interrupt2using2//外部中断1处理程序
{
charintnum;
intnum=P2;
switch(intnum){
case0xfe:
P0=led_mod[1];break;
case0xfd:
P0=led_mod[2];break;
case0xfb:
P0=led_mod[3];break;
case0xf7:
P0=led_mod[4];break;
case0xef:
P0=led_mod[5];break;
case0xdf:
P0=led_mod[6];break;
case0xbf:
P0=led_mod[7];
}
}
voidmain(){
EA=1;
EX0=1;
EX1=1;
P0=0;
while
(1);
}
第6章
1、比特率是指每秒传送的比特(bit)数。
波特率是指单片机或计算机在串口通信时的速率。
溢出率也叫定时器的溢出频率,从设定初值开始计数,当计数到0FFH再一个计数脉冲到来时刻就溢出。
2、波特率发生器需要在计数值溢出后自动重新赋值,再次开始计数,所以选模式2。
否则溢出后要程序响应中断重新赋值。
T1定时器的初值计算:
波特率=((2的SMOD次方)xF)/(32x12x(256-N)
其中:
SMOD是特殊功能寄存器PCON的第7位,取1或0(波特率倍增,或不倍增)。
N是置入定时器TH1的时间常数初值,F是晶振频率。
当SMOD取0,波特率=F/(32x12x(256-N)),N=256-F/(波特率x32x12)
3、1800字符/分钟=30字符/秒,1个字符=1起始位+1奇偶校验位+1停止位=3bits,则波特率为30*3=90bits/s
4、串行口分四种工作方式,由SM0、SM1二位决定,其定义如下:
SM0、SM1工作方式功能描述波特率
00方式0同步移位寄存器
01方式110位UART
10方式211位UART
11方式311位UART
5、9600*60/10=57600字节
6、略
7、9600=(2^1*F)/(32*12*(256-N)
N是置入定时器TH1的时间常数初值,F是晶振频率。
N=FDH=253得:
F=5.5296MHz。
8、设系统时钟频率fosc=6.0MHZ。
查教材表9-2可知,可取SMOD=0,T1的计数初值为F3H。
程序如下:
ORG0000H
AJMPMAIN;上电,转向主程序
ORG0023H;串行口的中断入口地址
AJMPSERVE;转向中断服务程序
ORG0040H;主程序
MAIN:
MOVSP,#60H;设置堆栈指针
MOVSCON,#90H
MOVPCON,#00H
MOVTMOD,#20H
MOVTH1,#0F3H
MOVTL1,#0F3H
SETBTR1
MOVR0,#20H;置发送数据区首地址
MOVR1,#40H;置接收数据区首地址
MOVR7,#10H;置发送字节长度
MOVR6,#10H;置接收字节长度
SETBES;允许串行口中断
SETBEA;CPU允许中断
MOVA,@R0;取第一个数据发送
MOVSBUF,A;发送第一个数据
SJMP$;等待中断
SERVE:
JNBRI,SEND;TI=1,为发送中断
CLRRI
MOVA,SBUF;读出接收缓冲区内容
MOV@R1,A;读入接收缓冲区
DJNZR6,L1;判断数据块发送完否
SJMPL2;数据块接收完,转L2
L1:
INCR1;修改数据区指针
L2:
RETI;中断返回
SEND:
CLRTI;清除发送中断标志
DJNZR7,L3;判断数据块发送完否
SJMPL4;数据块接收完,转L4
L3:
MOVA,@R0;取数据发送
MOVSBUF,A;发送数据
INCR0;修改数据地址
L4:
RETI;中断返回
END
9、ORG0000H
AJMPMAIN;上电,转向主程序
ORG0023H;串行口的中断入口地址
AJMPSTOP;转向中断服务程序
ORG0040H;主程序
MAIN:
MOVSP,#60H
MOVTMOD,#20H
MOVTH1,#0E8H
MOVTL1,#0E8H
SETBTR1
MOVSCON,#90H
MOVPCON,#00H
MOVR0,#20H;置发送数据区首地址
MOVR1,#40H;置接收数据区首地址
SETBES;允许串行口中断
SETBEA;CPU允许中断
MOVA,@R0
MOVC,PSW.0;P→C
CPLC
MOVTB8,C
MOVSBUF,A;发送第一个数据
SJMP$
STOP:
JNBRISOUT;TI=1,为发送中断
AJMPSTOP;转向中断服务程序
ORG0040H;主程序
MAIN:
MOVSP,#60H
MOVTMOD,#20H
MOVTH1,#0E8H
MOVTL1,#0E8H
SETBTR1
MOVSCON,#0D0H
MOVPCON,#00H
MOVR0,#20H;置发送数据区首地址
MOVR1,#40H;置接收数据区首地址
SETBES;允许串行口中断
SETBEA;CPU允许中断
MOVA,@R0
MOVC,PSW.0;P→C
CPLC
MOVTB8,C
MOVSBUF,A;发送第一个数据
SJMP$
STOP:
JNBRISOUT;TI=1,为发送中断
CLRRI
MOVA,SBUF;读出接收缓冲区内容
MOVC,PSW.0;P→C
CPLC;形成奇校验
JCLOOP1;判断接收端的奇偶值,C=1转LOOP1
JNBRB8,LOOP2;C=0,RB8=0,转LOOP2
SJMPERROR;C=0,RB8=1,转出错处理
LOOP1:
JBRB8,LOOP2;C=1,RB8=1,转LOOP2
SJMPERROR;C=0,RB8=1,转出错处理
LOOP2:
MOV@R1,A;将接收数据送入接收数据区
INCR1;修改数据区指针
RETI
SOUT:
CLRTI;是发送中断,清除
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 应用 考试 题库