单片机考试复习题及答案.docx
《单片机考试复习题及答案.docx》由会员分享,可在线阅读,更多相关《单片机考试复习题及答案.docx(21页珍藏版)》请在冰豆网上搜索。
单片机考试复习题及答案
选择题
1、主频为12MHz的单片机他的机器周期为(c)。
A、1/12微秒B、0.5微秒
C、1微秒D、2微秒
2、MCS-51系列单片机是属于(C)体系结构。
A、冯诺依曼B、普林斯顿
C、哈佛D、图灵
3、定时器/计数器工作方式0为(A)。
A、13位定时/计数方式B、16位定时/计数方式
C、8位可自动装入计数初值方式D、2个8位方式
6、MCS-51单片机每个机器周期都要进行中断查询,查询的是(A)。
A、中断标志位B、中断允许控制位
C、中断优先级控制位D、外部中断触发方式控制位
7、当外部中断被设置为下降沿触发时,对触发信号的要求是高、低电平的持续时间均应大于(B)。
A、1个机器周期B、2个机器周期
C、4个机器周期D、8个机器周期
8、在下列寄存器中,与定时器/计数器无关的是(C)。
scon是控制寄存器
A、TCONB、TMODC、SCOND、IE
9、若欲将T0设置为定时器方式2、T1设置为计数器方式1,T0、T1均采用软件启/停控制,则方式寄存器TMOD的方式控制字为(B)。
A、00100101B、01010010
C、10101101C、1101101010
10、当晶振频率为6MHz、定时/计数器工作于方式1,最大定时时间为(D)。
A、8.192msB、16.384msC、65.53msD、131.072
11、当晶振频率为6MHz,定时/计数器T0工作于定时器方式2,若要求定时值为0.2ms,则定时初值为(A)。
A、156B、56C、100D、200
12、设MCS-51单片机的晶振频率为12MHz,定时器作计数器使用时,其最高的输入计数频率为(C)。
A、2MHzB、1MHzC、500KHzD、250KHz
13、利用下列(D)关键字可以改变工作寄存器组。
A、interruptB、sfrC、whileD、using
14、(D)是c语言提供的合法的数据类型关键字。
A、FloatB、signedC、integerD、Char
15、12MHz晶振的单片机在定时器工作方式下,定时器中断记一个数所用的定时时间是(A)。
A、1usB、2usC、4usD、8us
16、8051单片机的定时器/计数器工作方式1是(B)。
A、8位计数器结构B、16位计数器结构
C、13位计数器结构D、2个8位计数器结构
17线反转法识别有效按键时,如果读入的列线全为1,则说明(A)。
A、没有键被按下B、有一个案件被按下
C、有多个按键被按下D、以上说法都不对、
18、利用下列(D)关键字可以改变寄存器组。
A、interruptB、sfrC、whileD、using
19、支持写入单片机或仿真调试的目标程序的文件格式是(D)
A、*.ASMB、*.CC、*.EXED、*.HEX
20.MCS_51单片机的复位信号是(A)有效。
A高电平B低电平C脉冲D下降沿
21.AT89S51单片机是(B)单片机。
A4位B8位C16位D32位
22.51单片机五个中断源的默认优先权由高到低排队正确的是(C)
A串行口、定时计数器0、定时计数器1、外中断0、外中断1
B串行口、外中断0、定时计数器0、定时计数器1、外中断1
C外中断0、定时计数器0、外中断1、定时计数器1、串行口
D外中断0、外中断1、定时计数器0、定时计数器1、串行口
23.定时/计数器T0的M1M0=00时,定时计数器的最大计数值是(B)
A65536B8192C256D128
24.下列选项中不是C51编程是使用的的关键字的是(B)
AintegerBdefineCbreakDsbit
25.定时/计数器中段发生在(D)
A送入初始值B启动定时/计数器
C定时/计数器停止时D计数器满量程时
26.89C51定时/计数器共有四种操作模式,由TMOD寄存器中M1/M0的状态决定,当M1/M0的状态为01时,定时/计数器被设定为(A)
A13位定时/计数器
B16位定时/计数器
C自动重装8位定时/计数器
DT0为2个独立的8位定时/计数器
27.8051单片机的一个机器周期包含(C)个时钟周期
A6B2C12D9
28.单片机的定时器/计数器工作方式1是(D)
A8位计数器结构B2个8位计数器结构
C13位计数器结构D16位计数结构
29.C51中一般char型变量占用(A)字节存储。
A一个B两个C三个D四个
30.函数_crol_()包含在头文件(C)中
Areg51.hBabsacc.hCintrins.hDmath.h
31.十进制数67在C语言中表达为十六进制数形式为(C)
A0x52B0x67C0x43D0x34
32.八段共阴极数码管显示0的字段码是(A)
A0x3fB0xc0C0x00D0xff
33、MCS-51单片机的51子系列为用户提供了(B)个硬件中断源
A、4B、5C、6D、7
34、下列选项中()是定时/计数器T0的中断允许控制位
A、EABB、ET0C、IT0D、IE0
35、已知某数的BCD码为0111010101000010,则其表示的十进制数值为(B)
A、7542HB、7542C、75.42HD、75.42
36、所谓CPU是指(A)
A、运算器和控制器B、运动器和存储器C、输入输出设备D、控制器和存储器
37、单片机能直接运行的程序叫(C)
A、源程序B、汇编程序C、目标程序D、编译程序
38、8031单片机若晶振频率为fosc=12MHZ,则一个机器周期等于(C)us
A、1/12B、1/2C、1D、2
39、8051单片机定时器工作方式0是指的(C)
A、8位B、8位自动重装C、13位D、16位
40、用8031的定时器T1作定时方式,用模式1,
则工作方式控制字为(C)
A、01HB、05HC、10HD、50H
41、8051单片机有(B)个中断优先级
A、1B、2C、3D、4
42、下列(D)型号的单片机有T0和T2三个16位的定时/计数器
A、8031B、8051C、AT89C51D、AT89C52
43、在下列寄存器中,与定时/计数控制无关的是(C)
A、TC0NB、TM0DC、SC0ND、IE
44、七段共阴极数码管的a~g段分别接P0.0~P0.6,则要显示字符“H”,P0口应送段码为(D)
A、67HB、6EHC、90HD、76H
45、N位LED显示器采用动态显示方式时,需要提供的I/0线总数是(A)
A、8+NB、8*NC、ND、8*N+1
46、定时/计数器有4种工作模式,它们由(B)寄存器中的M1/M0状态决定的
A、TC0NB、TM0DC、PCOND、SC0N
47、以下能正确定义一维数组的选项是(B)
A、inta[5]={0,1,2,3,4,5};
B、chara[]={0,1,2,3,4,5};
C、chara={“A”,“B”,“C”};
D、inta[5]=“0123”;
48、MCS-51单片机上电复位的信号是(D)
A、下降沿B、上升沿C、低电平D、高电平
49、可以将P1口的低4位全部置高电平的表达式是(A)
A、P1&=0x0fB、P1|=0x0fC、P1^=0x0fD、P1^=0x0f
50、主题为12MHZ的单片机,它的机器周期为(C)
A、1/12微秒B、0.5微秒C、1微秒D、2微秒
51、定时/计数器的定时是指(C),定时/计数器的计数是指(B)
A、对时间计数B、外部事件定时C、内部时钟计数D、尾部事件计数
52、以下程序段(A)
X=1;
dox=x*x;
while(!
x);
A、是死循环B、循环执行两次C、循环执行一次D、有语法错误
53、单片机C51中用关键字(C)来改变寄存器组
A、interruptB、unsignedC、usingD、reentrant
54、一个C语言程序总是从(C)开始执行的
A、书写顺序的第一函数B、书写顺序的第一条执行语句
C、主函数mainD、不确定
判断题
1、所有定义在主函数之前的函数无需进行声明。
F
2、所谓机器周期是指CPU执行一条指令所需要的时间。
F指令周期一般由若干个机器周期组成
3、定时/计数器工作于定时方式时,是通过89C51片内振荡输出经12分频后的脉冲进行计数,直至溢出为止。
T
4、若一个函数的返回类型为void,则表示其没有返回值。
T
5、#include与#include“reg51.h”是等价的。
T
6、命令语句if(x=10){P0=0xff};表达的含义是当x的值为10时,才执行P0=0xff的命令。
T
7、使用高速的24MHZ或33MHZ单片机代替原有的12MHZ或16MHZ单片机,可以方便地将运行速度提高一倍。
T
8、bit和sbit都是用来定义位变量,所以两者之间没有区别,可以随便替换使用。
F
9、单片机外部中断是只有用低电平触发。
F
10、单片机C语言程序设计中可以不分大小写。
F
11、单片机C语言程序设计中,用关键字bit定义单片机的端口。
F
12、五个中断源中优先级是高的是外部中断0,优先级是低的串行口中断。
T
13、单片机只能做控制用,不能完成算数运算。
F
14、各中断源发出的中断请求信号,都会标记在MCS-51系统中的TC0N中。
F
15、外部中断1,中断请求信号由P3.3输入。
T
16、十进制数89的BCD码可以记为89H。
F
17、单片机的复位有上电自动复位和按钮手动复位两种,当单片机运行出错或进入死循环时,可按复位键重新启动。
T
18、MCS-51单片机的两个定时器的均有两种工作方式,即定时和计数工作方式。
T
19、启动定时器工作,可使用SETBTRi(i=0,1)启动。
T
20、定时/计数器工作于计数方式时,是通过8051的P3.4和P3.5对外部脉冲进行计数,当遇到脉冲下降沿时计数一次。
T
填空题
1、两位十六制数最多可以表示256个存储单元。
2、89C51具有64KB的字节程序空间寻址能力。
3、当系统处于正常工作状态且振荡稳定后,在RST引脚上加一个高电平并维持两个个机器周期,可将系统复位。
4、单片机89C51的时钟频率为6MHZ,若要求定时1ms,定时/计数器工作于模式1,其定时/计数器的初值为FE0CH。
5、函数是C语言的基本单位。
6、定时/计数器T0作为计数器使用时,其计数频率不能超过晶振频率fosc的1/24。
7、单片机C51语言源程序从main函数开始执行。
每个C语言程序必须有一个且只能有一个main函数。
C51程序的函数由函数首部和函数体两部分构成。
8、C51定义可寻址位,使用关键字为sbit,定义特殊功能寄存器当中的某位用关键字sfr。
9、修饰符interruptm中m的取值为0对应的中断情况是外部int0中断。
10、8051子系列单片机片内有两个16位的定时/计数器。
11、LED数码管的显示方式有共阴和共阳两种。
12、变量a1=0x92,if(a1)结果是(真/假)。
13、运算符号“=”用于赋值,符号“==”用于恒等于。
14、变量tmp=0x15,经运算tmp>>=4;后的tmp值为21。
15、液晶LCD1602模块,实际显示区有2行,每行显示16个5*7点阵的ASICII字符。
16、当系统处于正常工作状态且振荡稳定后,在RST引脚上加一个高电平并维持两个个机器周期,可将系统复位。
17、中断请求信号有边缘触发和电平触发两种触发方式。
18.当系统处于正常工作状态且振荡稳定后,在RST引脚上加一个高电平并维持(两)个机器周期,可将系统复位。
19.中断请求信号有电平触发和脉冲触发两种触发方式。
20.在8051单片机中,如采用6MHZ晶振,一个机器周期,一个周期为
(2)us。
21.8051单片机有5个中断源,2级中断优先级别。
22.MCS-51单片机中有2个16位的定时/计数器,可以被设定的工作方式有4种。
23.消除键盘抖动的常用两种方法,一是采用硬件去抖电路,用基本RS触发构成;二是采用软件去抖程序,既测试有键输入时需延时5-10ms后再测试是否有键输入,此方法可判断是否有键抖动。
24.计算机的系统总线有数据局总线、系统总线、和控制总线。
25.8051有两个16位可编程定时/计数器,其中定时作用是指对单片机对内部晶振频率内部时钟脉冲进行计数,而计数器的作用是指对单片机外部事件。
26.已知1只共阴极LED显示器,其中a笔端为字型代码的最低位,若需显示数字5,它的字型代码应为0x6d;若需显示字符‘A’,其字型代码为0x77。
27.完整的中断处理的过程包括三个阶段,即中断请求、中断响应、以及中断处理。
28.MCS-51内有5个中断源,按其自然优先级从高到低的排列顺序为外部0
、 定时器/计数器0、 外部1 、 定时器/计数器1 、 串口,它们所对应的c51中断入口序号分别为0、1、2、3、4。
29.8051单片机一个字节所能表示的无符号数的范围为00-255,而带符号所能表示的无符号数的范围为-128-127。
简答题
1、什么叫中断?
设置中断有什么优点?
使CPU暂停运行原来的程序而应更为急迫事件的需要转向去执行为中断源服务的程序,待该程序处理完后,再返回运行源程序
优点:
可以提高cpu工作效率。
具有故障处理功能。
实现时分操作,控制多个外设同时工作。
2、AT89S51采用6MHz的晶振,写出用定时器方式1时产生2ms定时中断的初值计算过程并确定其初值(16进制数)是多少?
对于12MHz的时钟,51单片机的机器周期就为
1/(12000000/12)=1us
那么对于定时1ms,需要定时器计数的个数就为
1ms/1us=1000
那么,对于方式1,需要装入的时间常数就为
2^16-1000=64536——0xfc18
3、简述中断的概念。
使CPU暂停运行原来的程序而应更为急迫事件的需要转向去执行为中断源服务的程序,待该程序处理完后,再返回运行源程序
4、什么是单片机?
简述单片机的应用领域。
单片机又称单片微控制器,是把一个计算机系统集成到一个芯片上。
1、智能产品2、智能仪表3、测控系统4、数控系统
5、什么叫中断?
中断有什么特点?
中断:
使CPU暂停运行原来的程序而应更为急迫事件的需要转向去执行为中断源服务的程序,待该程序处理完后,再返回运行源程序。
中断特点:
(1)中断类型码或者由指令给出.或者是预先规定的;
(2)不执行INTA*(中断应答)总线周期;(3)除单步中断外,任何内部中断都无法禁止;(4)除单步中断外,任何内部中断的优先级都比外部中断高。
完整中断的基本功能:
(1)响应中断、处理中断与返回;
(2)实现优先权排队;(3)高级中断源能中断低级的中断处理
6、单片机用内部定时器方法产生频率为100KHz等宽距形波,假设单片机的晶振频率为12MHz,请编程实现。
voidTimer0Init(void)//定时*************
{
AUXR|=0x80;//定时器时钟1T模式
TMOD&=0xF0;//设置定时器模式
TMOD|=0x01;//设置定时器模式
TL0=0xA8;//设置定时初值
TH0=0xFD;//设置定时初值
TF0=0;//清除TF0标志
ET0=1;//中断使能
TR0=1;//定时器0开始计时
}
//定时器0中断服务函数
//定时器0中断服务函数
bitflag=0;//用于电平翻转
voidtimer0_isr(void)interrupt1
{
TL0=0xA8;//设置定时初值
TH0=0xFD;//设置定时初值
P1.7=~flag;//电平翻转
}
7.利用T0的工作模式0产生定时,在P1.0引脚输出周期为10ms的方波。
设晶振频率fosc=12MHz.编程实现其功能(分别采用查询方式和中断方式)
中断:
#include//52单片机头文件
#include//包含有左右循环移位子函数的库
#defineuintunsignedint//宏定义
#defineucharunsignedchar//宏定义
sbitP1_0=P1^0;
uchartt;
voidmain()//主函数
{
TMOD=0x01;//设置定时器0为工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
while
(1);//等待中断产生
}
voidtimer0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
if(tt==100)
{
tt=0;
P1_0=~P1_0;
}
}
8.如何消除键盘的抖动?
消除键盘抖动的常用两种方法,一是采用硬件去抖电路,用基本RS触发构成;二是采用软件去抖程序
9.在使用8051的定时器/计数器前,应对它进行初始化,其步骤是什么?
TMOD选择定时器以及定时器工作模式THnTLn设定初始值
TRn开始运行
10.已知P3口接有发光二极管的阴极,编写程序使发光二极管闪烁三次。
11.共阳极数码管,写出0~9的显示编码。
0:
0xc01:
0xf92:
0xa43:
0xb04:
0x995:
0x926:
0x827:
0xf88:
0x809:
0x90
12.89C51单片机晶振fosc=6MHz,T0中断工作在模式1,最大定时的时长是多少?
方式0:
13位定时器,所以定时时间范围最大为2^13*2us=16.384ms
方式1:
16位定时器,所以定时时间范围最大为2^16*2us=131.072ms
方式2:
8位重装定时器,所以定时时间范围最大为2^8*2us=512us
12mhz
12MHz时一个指令周期为1μs。
模式0是13位计数器,因此最大定时时长2的13次方=8192μs。
模式1是16位计数器,因此最大定时时长2的16次方=65536μs。
模式2是可重载8位计数器,单次定时时长2的8次方=256μs
13.已知focs=12MHZ,利用定时器T1使P1.1口发光二极管进行秒闪烁。
即亮500ms,暗500ms,用C51写出程序。
#include
#defineth10x36
#definetl10xb0//500ms@12MHzFosc
sbitLED=P1^7;
voidTimer1()interrupt3
{
TL1=tl1;
TH1=th1;
LED=~LED;
}
voidTimerInit()
{
TMOD=0x01;
TH1=th1;
TL1=tl1;
EA=1;
ET1=1;
TR1=1;
}
voidmain()
{
TimerInit();
while
(1);
}
14.已知单片机系统晶振频率为6MHZ,若要求定时值为10ms时,定时器T0工作方式1时,定时器T0对应的初值是多少?
TMOD的值是多少?
TH0=?
TL0=?
TMOD=0X01;
TH0=(65536-5000)/256;=0xec
TL0=(65536-5000)%256;=0x78
15.请说明为什么使用LED需要接限流电阻,当高电平为+5V时,正常点亮一个LED需要多大阻值的限流电阻(设LED的正常工作电流为10mA,导通压降为2V),为什么?
R=(5-2)/10mA=300欧
16.简述LED数码管动态扫描的原理及其实现方式。
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动
17.指出下面程序的语法错误并改正。
#include
main(){
a=C;
Inta=7,C
delay(10)
voiddelay();{
cgari;
for(i=0;i<=255;”++”);
}
#include
main(){
a=C; //a和C必须先定义才可使用
Int a=7,C //缺分号,应该提在使用前说明 I要小写
delay(10) //延时子程序必须先定义,或先有函数原型说明
void delay();{ //作为函数定义,有函数定义不能嵌套的问题, //即不能在一个函数内定义另一个函数,而且“{”前不应有分号 //作为函数原型说明,应该放在函数调用之前,且其后不应该接函数体
cgar i; //字符型应该是unsigned char
for(i=O; i<=255; ”++”);// ”++”应改成i++
} //主函数没有结束,缺”}”
#include
#defineuintunsignedint
#defineucharunsignedchar
voiddelay(uintk);
main()
{
inta,C;
a=C;
a=7,C;
delay(10);
}
voiddelay(uintk)
{
uchari;
while(--k)
for(i=0;i<=255;i++)
{;}
}