单片机复习题.docx

上传人:b****5 文档编号:6189540 上传时间:2023-01-04 格式:DOCX 页数:20 大小:281.13KB
下载 相关 举报
单片机复习题.docx_第1页
第1页 / 共20页
单片机复习题.docx_第2页
第2页 / 共20页
单片机复习题.docx_第3页
第3页 / 共20页
单片机复习题.docx_第4页
第4页 / 共20页
单片机复习题.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

单片机复习题.docx

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

单片机复习题.docx

单片机复习题

单片机复习题

单片机的引脚及其功能

1.EA脚的功能是控制程序存储器的选择,单片机使用片内程序存储器时,该引脚

应该接+5V高电平。

2.单片机的RST引脚是复位引脚,外接复位电路。

3.MCS-51单片机有片内RAM、特殊功能寄存器、扩展数据存储器和程序存储器4个存储空间。

4.对于标准的MCS-51单片机而言,idata区是指片内RAM地址范围为0x00~0x7f的

区域,共128字节,对于增强型MCS-51单片机(52单片机)而言,idata区的地址范围为

0x00~0xff,共256字节。

5.MCS-51单片机的data区位于单片机的片内RAM中,地址范围为0x00~0x7f,共

128字节。

6.MCS-51单片机有4组工作寄存器组,工作寄存器组区的地址范围是0x00~0x1f,

当前工作寄存器组用R0~R78个寄存器表示。

7.若函数display()的定义如下:

voiddisplay(void)using1

{……}

单片机在执行函数display时,当前工作寄存器组是第1组工作寄存器,其中R2的地

址是0x0a。

8.单片机执行下列程序段后,当前工作寄存器组是第3组工作寄存器,其中R7的地

址是0x1f。

RS0=1;RS1=1;

9.code区是指单片机的程序存储区,code区的作用是存放程序代码和表格数据。

10.至少要配备时钟电路、复位电路、存储器电路和电源电路,单片机才能独

立工作。

11.时钟电路的作用是产生时钟信号,装配晶振时应该将晶振尽可能地安装在

XTAL1、XTAL2引脚附近。

12.若单片机的fosc=12MHz,单片机的机器周期为1μs。

13.C51程序中至少有一个main函数。

14.C51程序中,语句由分号(;)结尾。

15.C51书写比较自由,一条语句可以分多行书写,也可以在一行中书写多条语句。

16.unsignedchar型变量占1个字节,值域是0~255,data区中最多只能定义128

个unsignedchar型变量。

17.C51中,16进制数的表示方法是以0x开头的数字,与0x12等值的十进制数是18。

18.用C51设计单片机程序时,应尽量使用无符号字符型和位型数据,以便提高程

序的运行速度。

19.写出下列常量和变量的定义式:

⑴值为20的符号常量KTIM。

⑵无符号字符型变量i、j。

⑶带符号整型变量k。

⑷浮点型变量f。

⑸有符号的长整型变量sl。

⑹位变量mybit。

⑺定义无符号字符型变量i、j,并给i赋值3、j赋值4。

【解】

⑴#defineKTIM20

⑵unsignedchari,j;

⑶intk;

或者signedintk;

⑷floatf;

⑸longsl;

或者signedlongsl;

⑹bitmybit;

⑺unsignedchari=3,j=4;

20.若有下列定义:

inti=0x1234;

unsignedcharj;

语句“j=i;”执行后,i=0x1234,j=0x34。

21.若有下列定义:

inti;

unsignedcharj=0x82;

语句“i=j;”执行后,i=0x0082。

22.若有下列定义:

unsignedinti;

charj=0x82;

语句“i=j;”执行后,i=0xff82,j=0x82。

23.定义下列特殊功能寄存器和特殊位:

⑴特殊功能寄存器P0、P1、P2、P3。

⑵16位特殊功能寄存器RCAP2,RCAP2的低字节地址为0xca,高字节地址为0xcb。

⑶特殊功能寄存器P0的第0位P0_0。

⑷片内RAM0x24单元的第4位down。

【解】

⑴sfrP0=0x80;

sfrP1=0x90;

sfrP2=0xa0;

sfrP3=0xb0;

⑵sfr16RCAP2=0xca;

⑶法一:

sfrP0=0x80;

sbitP0_0=P0^0;

法二:

sbitP0_0=0x80^0;

法三:

sbitP0_0=0x80;//这里的0x80是P0.0的位地址,而不是P0口的端口地址

⑷法一:

sbitdown=0x24^4;

法二:

sbitdown=0x24;//这里的0x24为0x24单元第4位的位地址

24.设m为unsignedchar型变量,mybit为bit型变量,请按下列要求编写程序段:

⑴将m中的数据从P0口输出。

⑵将mybit中的数据从P0.0口线输出。

⑶将P0.3口线置1。

⑷将P0.5口线清0。

⑸读P0口的输入状态,并保存至m中。

⑹读P0.0口线输入状态,并保存到mybit中。

【解】

⑴sfrP0=0x80;

unsignedcharm;

P0=m;

⑵sfrP0=0x80;

sbitP0_0=P0^0;

bitmybit;

P0_0=mybit;

⑶sfrP0=0x80;

sbitP0_3=P0^3;

P0_3=1;

⑷sfrP0=0x80;

sbitP0_5=P0^5;

P0_5=0;

⑸sfrP0=0x80;

unsignedcharm;

P0=0xff;

m=P0;

⑹sfrP0=0x80;

sbitP0_0=P0^0;

bitmybit;

P0_0=1;

mybit=P0_0;

25.单片机复位后,P0=0xff。

26.复位后,特殊功寄存器P1=0xff。

27.宏定义是一种编译预处理命令,宏定义以#开头,结尾处无分号(;),一般放在

程序的开头处。

用字符uchar代表字符unsignedchar的宏定义是#defineunchar

unsignedchar。

28.C51中,测试等于运算符是==,测试不等于运算符是!

=。

29.C51中,当一个表达式中有多个运算符时,先进行高优先级运算,同级运算的先

后顺序由结合方向确定,若结合方向是从左向右,则按从左至右的顺序进行运算。

30.下列程序中,表达式“d=a!

=b

=(b

后求解d=(a!

=(b

程序运行后,a=4,b=3,c=2,d=1。

voidmain(void)

{unsignedchara=4,b=3,c=2,d;

d=a!

=b

}

31.下列程序运行后,a=1,b=3,c=0。

voidmain(void)

{unsignedchara=0,b=1,c=2;

c=!

(a=1)&&(b=3);

}

32.设有下列程序段:

a=1;b=2;c=3;//1

if(k<5)//2

a=4;b=5;//3

c=6;//4

⑴若k=4,则执行上述程序段后,a=4,b=5,c=6。

⑵若k=5,则执行上述程序段后,a=1,b=5,c=6。

33.单片机在片外不扩展程序存储器,不扩展并行RAM,也不扩展并行I/O芯片的情

况下,P2口可作为普通的I/O口使用。

34.复位时,特殊功能寄存器P2=0xff。

35.设m为unsignedchar型变量,mybit为bit型变量,请按下列要求编写程序段:

⑴从P2口输出数据0x5a。

⑵将mybit中的数据从P2.6口线输出。

⑶将P2.2口线置1。

⑷将P2.4口线清0。

⑸读P2口的输入状态,并保存至m中。

⑹读P2.7口线的输入状态,并保存到mybit中。

【解】

⑴sfrP2=0xa0;

P2=0x5a;

⑵sfrP2=0xa0;

sbitP2_6=P2^6;

bitmybit;

P2_6=mybit;

⑶sfrP2=0xa0;

sbitP2_2=P2^2;

P2_2=1;

⑷sfrP2=0xa0;

sbitP2_4=P2^4;

P2_4=0;

⑸sfrP2=0xa0;

unsignedcharm;

P2=0xff;

m=P2;

⑹sfrP2=0xa0;

sbitP2_7=P2^7;

bitmybit;

P2_7=1;

mybit=P2_7;

36.单片机片外扩展并行I/O芯片时,P2口只能作地址总线口使用,不能作普通I/O口使用,此时,P2口输出的是高8位地址A15~A8

37.P3口是双功能I/O口,在端口线上的第二功能没有启用的情况下,P3口的端口线才能作普通的I/O口使用。

38.单片机复位后,特殊功能寄存器P3=0xff。

39.按下列要求编写程序段:

⑴读P3口输入至变量keyinput中。

⑵读P3.4引脚输入至位变量setport中。

⑶将P3.5置1。

【解】

⑴sfrP3=0xb0;

unsignedcharkeyinput;

P3=0xff;

keyinput=P3;

⑵sfrP3=0xb0;

sbitP3_4=P3^4;

bitsetport;

P3_4=1;

setport=P3_4;

⑶sfrP3=0xb0;

sbitP3_5=P3^5;

P3_5=1;

40.#include的作用是将特殊功能寄存器定义头文件reg51.h包含至当前程序文件中来,一般放在程序的开头处。

41.%是取余运算符,要求运算符两边的数据必须是字符型型数据或者是整型数据。

42.10%4=2,10/3=3。

43.表达式if(a%2!

=0)可以判断变量a是否为奇数。

44.下列程序段运行后,i=6,j=6,k=5,m=5。

unsignedchari=5,j,k,m;

j=i++;

k=++j;

m=--k;

45.逻辑与运算符是&&,按位与运算符是&,逻辑或运算符是||,按位或运算符是|,逻辑非运算符是!

,按位反运算符是~。

46.函数_crol_()是C51的内嵌函数,若程序中使用了_crol_()函数,则需要在程序的开头处使用“#include”将头文件intrins.h包含至当前程序文件中

来。

函数_crol_(m,2)的功能是将无符号字符变量m循环左移2位。

47.定义函数时,若函数无形式参数,则用void说明形式参数。

48.调用无参数函数时,可以省略实际参数表,但不能省略函数名后面的园括号。

49.C51规定,函数必须先定义,才能使用函数。

50.程序中需要调用math.h头文件中的cos(x)函数,则在程序的开头处需要用

#include将math.h文件包含至程序文件中来。

51.请按下列要求定义变量:

⑴在片内RAM0x20~0x2f区域内定义无符号字符型变量i、j。

⑵在片内RAM0x00~0x7f区域内定义无符号整型变量k,k的初值为4。

⑶在扩展RAM中定义长整型变量k。

⑷在程序存储器中定义无符号字符型变量a,a的值为字符L。

【解】

⑴unsignedcharbdatai,j;

⑵unsignedintdatak=4;

⑶longxdatak;

⑷unsignedcharcodea='L';

52.若有如下定义:

unsignedcharidataa[5];

数组a[]位于idata区,有5个元素,这些元素依次是a[0]、a[1]、a[2]、a[3]、

a[4]。

53.若有如下定义:

unsignedchara[]={1,2,3,4,5};

unsignedcharb[5]={6,7};

数组a[]有5个元素,元素a[2]的值为3。

数组b[]中有5个元素,元素b[2]的值为0。

54.C51程序中,若数组中各元素的值均小于256,一般是将数组定义成字符型数组。

55.MCS-51单片机有外部中断0、定时/计数器0、外部中断1、定时/计数器1和串

行I/O中断5个中断源,共有6个中断请求标志位。

56.中断请求标志位的作用是记录中断事件是否发生过,并向CPU提出中断请求,在中断产生条件满足的情况下,硬件电路会自动地将中断请求标志位置1。

57.外部中断0的中断请求标志位是IE0。

58.使用外部中断1时,需要将IE寄存器的EA位和EX1位置1。

59.外部中断0有低电平触发和下降沿触发2种触发方式,一般采用下降沿触发方式。

60.将外部中断1设置成下降沿触发的方法是将特殊功能寄存器TCON的IT1位置1,其语句是IT1=1;。

61.特殊功能寄存器IP的功能是什么?

什么样情况下可以不设置IP?

什么样的情况下必须设置IP?

为什么?

【解】

IP的功能是,管理单片机的中断优先级。

当系统中只开放了一个中断时,不必设置IP,当系统中开放的中断数不止一个时,必须设置IP的值。

因为在这种情况下存在着多个中断源同时向CPU请求中断服务的问题,在这种情况下,必须确定CPU优先响应哪个中断请求。

62.某应用系统中使用了INT0、INT1、T0三个中断,如果这3个中断同时向CPU提出中断请求时,要求CPU按T0→INT0→INT1的顺序响应中断请求,请写出实现这一要求的程序段。

【解】

要想CPU按T0→INT0→INT1的顺序响应中断请求,必须将T0设为高级中断,INT0、INT1设为低级中断。

实现上述要求的程序段如下:

#include

……

PT0=1;//T0采用高级中断

PX0=0;//INT0采用低级中断,单片机复位后,PX0=0,本句可省去

PX1=0;//INT1采用低级中断,单片机复位后,PX0=0,本句可省去

63.单片机复位后,如果5个中断源同时向CPU提出中断请求,CPU响应中断的顺序是什么?

【解】

单片机复位后,IP=0x00,5个中断源均为低级中断,当它们同时向CPU提出中断请求时,CPU按以下顺序响应中断请求:

INT0→T0→INT1→T1→TI/RI

64.外部中断0的中断类型号是0,外部中断1的中断类型号是2,定时/计数器T1的中

断类型号是3,串行发送中断的中断类型号是4。

65.某应用系统中使用了INT0、INT1两个中断,INT0采用低电平触发,INT1采用下降沿触发,当这两个中断源同时向CPU请求中断时,CPU先响应INT1的中断请求。

请写出系统初

始化程序。

【解】系统初始化程序如下:

#include

voidinit_int(void)

{IT0=0;//INT0采用低电平触发。

单片机复位后,IT0=0,本句可以省去

IT1=1;//INT1采用下降沿触发

PX0=0;//INT0为低级中断,单片机复位后,PX0=0,本句可以省去

PX1=1;//INT1为高级中断

EX0=1;//开INT0中断

EX1=1;//开INT1中断

EA=1;//开全局中断

}

66.如图所示采用外部中断0(INT0)。

在开关SW1断开时使LED正反循环流水点亮,在开关SW1闭合时使LED交替循环点亮10次。

解】

#include

#include

#defineuintunsignedint

voiddelay(uintN);

voidmain()

{

uinti,led;

EA=1;

EX0=1

PX0=0x01;

IT0=1;

while

(1)

{

led=0xfe;

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

{

P1=led;

delay(20000);

led=_crol_(led,1);

}

led=0x7f;

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

{

P1=led;

led=_cror_(led,1);

delay(20000);

}

}

}

voiddelay(uintN)//延时程序

{

uintj=N;

for(j=0;j

}

voidint_0()interrupt0using0//中断服务函数

{

inti,F=0xAA;

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

{

P1=F;

delay(40000);//调用延时程序

F=~F;//对F取反

}

return;

}

67.标准的MCS-51单片机片内集成有2个16位的可编程定时/计数器,它们有定时和计数2种运行模式和4种工作方式。

68.与定时/计数器T0有关的外部引脚是P3.2/INT0、P3.4/T0。

69.T1的计数器是TH1、TL1,它是加1计数器,每输入1个脉冲,计数器的值就会自动加1,计数值计满模值时,计数值回0,硬件电路会自动地将特殊功能寄存器TCON的TF1位置1。

70.当TMOD.6=1时,T1的计数器对外部引脚P3.5/T1输入的脉冲进行计数。

71.当TMOD.2=0时,T0的计数器对机器周期计数,T0实现的是定时功能。

72.将TMOD的D2(TMOD.3)位清0,T0用TR0控制计数器的启动与停止。

当TR0=1时,T0的计数器正常计数,当TR0=0时,T0的计数器停止计数。

73.单片机复位后,TMOD的值为0x00,T0工作在定时模式,其计数器为13位计数

器,并且使用TR0控制计数器的开启和停止。

74.T0采用方式1、定时模式,T1采用方式0、计数模式,设置T0、T1的运行模式、工作方式的语句是TMOD=0x41;。

75.单片机复位后,TCON的值为0x00,T0停止运行。

76.TCON中的位分配有位地址,启动定时/计数器T0的语句是TR0=1;。

77.方式0的计数器是13位计数器,当TMOD的TMOD.1、TMOD.0位设置为00时,T0工作在方式0下,T0的计数器由TH0中的8位和TL0中的低5位组成,其模值为8192。

78.T1工作在方式0下,T1的计数器计满8192时,其计数值回0,硬件电路会自

动地将TF1位置1,用来指示计数值已计满。

79.方式1的计数器是16位计数器,其模值是65536,将TMOD的D5、D4(TMOD.5、TMOD.4)位设置为01时,T1工作在方式1下,T1的计数器由TH1中的8位和TL1中的8位组成。

80.方式2的计数器是8位计数器,其模值是256。

81.单片机的fosc=12MHz,T0作5ms定时器使用,T0的计数次数为5000,可以采用的工作方式是方式0、方式1。

82.单片机的fosc=6MHz,T0工作在方式0下作10ms定时器使用,给T0装入计数初值的语句是TH0=(8192-5000)/32;TL0=(8192-5000)%32;,

若T0工作在方式1下,给T0装入计数初值的语句是TH0=(65536-5000)/256;TL0=(65536-5000)%256;。

83.T1的计数次数为25,工作在方式2下,给T1装入计数初值的语句是

TH1=TL1=256-25;。

84.T0的中断请求标志位是TF0,中断类型号是3。

85.STC89C51单片机的fosc=6MHz,若要求定时时长为0.1ms,T0工作在方式0、方式1、方式2和方式3,定时器的计数初值各为多少?

若T0为高优先级中断,请编写对应的初始化程序。

【解】定时器的定时时长为0.1ms,则定时器的计数次数n为

n=(fosc×t)/12==50

在方式0下,其计数初值为x=8192-50=8142

在方式1下,其计数初值为x=65536-50=65486

在方式2下,其计数初值为x=256-50=206

在方式3下,其计数初值为x=256-50=206

若T0为高优先级中断,各种方式下的初始化程序如下:

⑴方式0

voidinit_T0(void)

{TMOD=0x00;//设置T0的工作模式、工作方式:

方式0、定时,本句可省略

TL0=(8192-50)%32;//T0计数器赋初值

TH0=(8192-50)/32;//

PT0=1;//T0为高级中断

ET0=1;//开T0中断

EA=1;//开全局中断

TR0=1;//启动T0

}

⑵方式1

voidinit_T0(void)

{TMOD=0x01;//设置T0的工作模式、工作方式:

方式

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

当前位置:首页 > 考试认证 > 公务员考试

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

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