单片机复习题带答案_第1页
单片机复习题带答案_第2页
单片机复习题带答案_第3页
单片机复习题带答案_第4页
单片机复习题带答案_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、单项选择题1利用以下   D  关键字可以改变工作存放器组A、interruptB、sfrC、while      D、using2C51中一般指针变量占用(   C    )字节存储。A、一个       B、两个       C、三个       D、四个3使用宏来访问绝

2、对地址时,一般需包含的库文件是 BA、reg51.h     B、absacc.h   C、intrins.h    D、startup.h4执行#define PA8255  XBYTE0x3FFC;PA8255=0x7e;后存储单元0x3FFC的值是 A  A、Ox7e   B、8255H    C、未定    D、7e5设有int i;那么表达式i=1,+i,+i|+i,i的值为 C A、1 B、2

3、C、3 D、46设有int a =10,11,12,*p=&a0;那么执行完*p+;*p+=1;后a0,a1,a2的值依次是 C A、10,11,12 B、11,12,12 C、10,12,12 D、11,11,127设有int i;那么表达式i=1,+i,i|+i,i的值为 B A、1 B、2 C、3 D、48、单片机8051的XTAL1和XTAL2引脚是 D 引脚 。 A、外接定时器         B、外接串行口     

4、   C、外接中断         D、外接晶振9、单片机的定时器/计数器设定为工作方式1时,是 D 。 A、8位计数器结构    B、2个8位计数器结构C、13位计数器结构    D、16位计数器结构10、串行口每一次传送 C 字符。A、1个字节          B、1bit   &#

5、160;      C、1帧          D、1 串11、计算机能直接识别的语言是 C 。A、汇编语言 B、自然语言 C、机器语言 D、C语言12、 MCS51单片机的CPU主要的组成局部为   A 。A、运算器、控制器       B、加法器、存放器      C、运算器、加法器     &

6、#160;  D、运算器、译码器13、 MCS-51系列单片机芯片是双列直插式封装的,有 C 个引脚。A、24 B、30 C、 40 D、5014、MCS-51的中断允许触发器内容为83H,CPU将响应的中断请求是 A 。A、T0 B、 INT1 C、串行接口 D、 INT015、P0口作数据线和低8位地址线时   C 。A、应外接上拉电阻       B、不能作I/O口    C、能作I/O口     D、应外接高电平二、判断题:每题

7、1分,共10分。正确的在括号内打“,错误的打“×。判对得分,不判、判错均不得分。1假设一个函数的返回类型为void,那么表示其没有返回值。 Y   2特殊功能存放器的名字,在C51程序中,全部大写。 Y3“sfr后面的地址可以用带有运算的表达式来表示。   N   4#include  <reg51.h>与#include  “reg51.h是等价的。 Y 5sbit不可以用于定义内部RAM的可位寻址区,只能用在可位寻址的SFR上。N 6Continue 和break都可用来实现循环体的中止。 

8、; N 7假设一个函数的返回类型为void,那么表示其没有返回值。 Y 8所有定义在主函数之前的函数无需进行声明。  N  9int i,*p=&i;是正确的C说明。 Y   107&3+12的值是15。   Y  11一个函数利用return不可能同时返回多个值。 Y 12、51单片机只能做控制用,不能完成算术运算。 N 13、MCS-51的中断源全部编程为同级时,优先级最高的是INT1。 N 14、MCS51单片机的CPU能同时处理8位二进制数据。 Y 15、单片机的主频越高,其运算速度越快。

9、N 16、为了消除按键的抖动,常用的方法有硬件和软件两种方法。 Y 三、填空每空1分,共20分。在空白处填上正确的内容1KeiL C51软件中,工程文件的扩展名是_ _UV2_,编译连接后生成可烧写的文件扩展名是_ hex _。2C51支持的指针有 一般指针 和 存储器指针 。3C51中,没有专门的循环语句,我们可以用函数_crol_ _完成一个字节的循环左移,用_irol _完成二个字节的循环左移。4    是C语言的根本单位。5C语言中输入和输出操作是由库函数 scanf         和

10、    printf    等函数来完成。6假设有说明int i,j,k;那么表达式i=10,j=20,k=30,k*=i+j的值为_ 900 _。7 数组 是一组有固定数目和相同类型成分分量的有序集合。8变量的指针就是变量的 地址 ;指针变量的值是 指针 。9在C语言中,把多个不同类型的变量结合在一起形成的一个组合型变量,称为 结构变量 ,简称 结构 。10C51的数据类型有 根本类型 、 结构类型 、 指针类型 、 空类型 。11C51的根本数据类型有 位型 、 字符型 、 整形 、 长整形 、 浮点型 、 双精度浮点型 。12C51的构造

11、数据类型有 数组类型 、 结构类型 、 共用体型 、 梅举型 。13C51的存储类型有 data 、 bdata 、 idata 、 pdata 、 xdata 、 code 。14C51的存储模式有 small 、 compact 和 large 。15C51程序与其他语言程序一样,程序结构也分为 顺序结构 、 选择结构 、 循环结构 三种。16数组的一个很重要的用途就是 查表 。17在单片机扩展时, P0 口和 P2 口为地址线, P0 口又分时作为数据线。18、在 MCS-51单片机中,如采用6MHZ晶振,一个机器周期为 2us 。19、消除键盘抖动常用两种方法,一是采用 硬件 ,用根本

12、RS触发器构成;二是采用 软件 ,既测试有键输入时需延时 10毫秒 后再测试是否有键输入,此方法可判断是否有键抖动。20、在串行通信中,根据数据传送方向分为 单工 、 半双工 和 全双工 三种方式。四、问答题共20分1简述C51语言和汇编语言的比较5分使用C51语言进行嵌入式系统的开发,有着汇编语言所不可比较的优势: 编程调试灵活方便; 生成的代码编译效率高; 模块化开发; 可移植性好; 便于工程的维护;2简述单片机的C语言的特点7分单片机的C语言的特点主要表达在以下几个方面: 无需了解机器硬件及其指令系统,只需初步了解MCS-51的存储器结构; C51能方便的管理内部存放器的分配、不同存储器

13、的寻址和数据类型等细节问题,但对硬件控制有限;而汇编语言可以完全控制硬件资源; C51在小应用程序中,产生的代码量大,执行速度慢;但在较大的程序中代码效率高; C51程序由假设干函数组成,具有良好的模块化结构,便于改良和扩充; C51程序具有良好的可读性和可维护性;而汇编语言在大应用程序开发中,开发难度增加,可读性差; C51有丰富的库函数,可大大减少用户的编程量,显著缩短编程与调试时间,大大提高软件开发效率; 使用汇编语言编制的程序,当机型改变时,无法直接移植使用,而C语言程序是面向用户的程序设计语言,能在不同机型的机器上运行,可移植性好。3哪些变量类型是51单片机直接支持的?5分答:C51

14、编译器支持的数据类型有:位型bit、无符号字符型unsigned char、有符号字符型signed char、无符号整型unsigned int、有符号整型signed int、无符号长整型unsigned long、有符号长整型signed long、浮点型float和指针型等。C51编译器支持的数据类型、长度和值域如表1-1所示。表1-1 C51的数据类型数据类型长度/bit长度/byte值域bit10,1unsigned char810255signed char81-128127unsigned int162065 535signed int162-32 76832 767unsig

15、ned long32404 294 967 295signed long324-2 147 483 6482 147483 647float324±1176E-38±340E+386位数字double648±1176E-38±340E+3810位数字一般指针243存储空间 065 5354简述C51的数据存储类型10分答:我们都知道,8051单片机存储区可分为内部数据存储区、外部数据存储区以及程序存储区。8051单片机内部的数据存储区是可读写的,8051派生系列最多可有256字节的内部数据存储区,其中低128字节可直接寻址,高128字节从0x80到0xF

16、F只能间接寻址,从20H开始的16字节可位寻址。内部数据区可分为3个不同的存储类型:data、idata和bdata。外部数据区也是可读写的,访问外部数据区比访问内部数据区慢,因为外部数据区是通过数据指针加载地址来间接访问的。C51提供两种不同的存储类型xdata和pdata访问外部数据。程序存储区是只能读不能写。程序存储区可能在8051单片机内部或者在外部或者内外都有,这由8051单片机的硬件决定。C51提供了code存储类型来访问程序存储区。每个变量可以明确地分配到指定的存储空间,对内部数据存储器的访问比对外部数据存储器的访问快许多,因此应当将频繁使用的变量放在内部存储器中,而把较少使用的

17、变量放在外部存储器中。各存储区的简单描述如表1-2所示。表1-2 C51存储类型与8051存储空间的对应关系存储区描述DATA片内RAM的低128字节,可在一个周期内直接寻址BDATA片内RAM的位寻址区,16字节IDATA片内RAM的256字节,必须采用间接寻址XDATA外部数据存储区,使用DPTR间接寻址PDATA外部存储区的256个字节,通过P0口的地址对其寻址。使用MOVX Ri,需要两个指令周期CODE程序存储区,使用DPTR寻址。以上介绍的是C51的数据存储类型,C51存储类型及其大小和值域如表1-3所示。表1-3 C51存储类型及其大小和值域存储类型长度/bit长度/byte值域

18、data810255idata810255pdata810255code162065 535xdata162065 5355简述C51对51单片机特殊功能存放器的定义方法5分答:MCS-51通过其特殊功能存放器SFR实现对其内部主要资源的控制。MCS-51单片机有21个SFR,有的单片机还有更多的SFR,它们分布在片内RAM的高128字节中,其地址能够被8整除的SFR一般可以进行位寻址。关于MCS-51单片机的特殊功能存放器参看附录A。对SFR只能用直接寻址方式访问。C51允许通过使用关键字sfr、sbit或直接引用编译器提供的头文件来实现对SFR的访问。 1使用关键字定义sfr为了能直接访问

19、特殊功能存放器SFR,C51提供了一种自主形式的定义方法。这种定义方法与标准的C语言不兼容,只适用于对8051系列单片机进行C编程。这种定义的方法是引入关键字“sfr,语法如下:sfr 特殊功能存放器名字 = 特殊功能存放器地址;如:sfr SCON=0x98;/*串口控制存放器地址98H*/sfr TMOD=0X89;/*定时器/计数器方式控制存放器地址89H*/ 2通过头文件访问SFR 8051系列单片机的存放器数量与类型是极不相同的,因此对单片机特殊功能存放器的访问可以通过对头文件的访问来进行。 为了用户处理方便,C51编译器把MCS-51单片机的常用的特殊功能存放器和特殊位进行了定义,

20、放在一个“reg51.h或“reg52.h的头文件中。当用户要使用时,只需要在使用之前用一条预处理命令“#include <reg51.h>把这个头文件包含到程序中,然后就可以使用特殊功能存放器名和特殊位名称了。用户可以通过文本编辑器对头文件进行增减。 3SFR中位定义在8051单片机的应用问题中,经常需要单独访问SFR中的位,C51的扩充功能使之成为可能,使用关键字“sbit可以访问位寻址对象。特殊位sbit的定义,像SFR一样不与标准C兼容。与SFR定义一样,用关键字“sbit定义某些特殊位,并接受任何符号名,“=号后将绝对地址赋给变量名。这种地址分配有三种方法:第一种方法:s

21、bit 位名=特殊功能存放器名位置;当特殊功能存放器的地址为字节8位时,可使用这种方法。特殊功能存放器名必须是已定义的SFR的名字。“后的“位置语句定义了基地址上的特殊位的位置。该位置必须是07的数。如:第二种方法:sbit 位名=字节地址位置;这种方法是以一个整常数为基地址,该值必须在0x800xFF之间,并能被8整除,确定位置的方法同上。第三种方法:sbit 位名=位地址;这种方法将位的绝对地址赋给变量,地址必须在0x800xFF之间。6C51 的data、bdata、idata 有什么区别?6分答:data、bdata、idata是说明数据的存储类型,data是指片内RAM的低128字节

22、,可在一个周期内直接寻址;bdata是指片内RAM的位寻址区,16字节;idata是指片内RAM的256字节,必须采用间接寻址。7C51中的中断函数和一般的函数有什么不同?6分答:C51编译器允许用C51创立中断效劳函数,中断函数是由中断系统自动调用的。中断函数的定义格式为:函数类型 函数名 interrupt n using n其中:interrupt和using为关键字;interrupt后面的n 为中断源的编号,即中断号;using后面的n所选择的存放器组,取值范围为03。定义中断函数时,using是一个选项,可以省略不用。如果不用using选项,那么由编译器选择一个存放器组作为绝对存放

23、器组。8051的中断过程通过使用interrupt关键字和中断号031来实现,中断号告诉编译器中断函数的入口地址。8按照给定的数据类型和存储类型,写出以下变量的说明形式6分1在data区定义字符变量val1答:char data vall;2在idata区定义整型变量val2 答:int idata val2;3在xdata区定义无符号字符型数组val34。答:unsigned xdata val34;4在xdata区定义一个指向char类型的指针px。答:char xdata *px;5定义可位寻址变量flag。答:bit flag;6定义特殊功能存放器变量P3。答:Sfr P3=0xB0;

24、9什么是重入函数?重入函数一般什么情况下使用,使用时有哪些需要注意的地方?答: 多个函数可以同时使用的函数,称为重入函数。6分通常情况下,C51函数不能被递归调用,也不能应用导致递归调用的结构。有此限制是由于函数参数和局部变量是存储在固定的地址单元中。重入函数特性允许你声明一个重入函数。即可以被递归调用的函数。重入函数可以被递归调用,也可以同时被两个或更多的进程调用。重入函数在实时应用中及中断效劳程序代码和非中断程序代码必须共用一个函数的场合中经常用到。10如何消除键盘的抖动?5分答:由于按键是机械开关结构,所以当用手按下其中一个键时,往往会出现所按键在闭合位置和断开位置之间发生跳几下后才会稳

25、定到闭合状态的情况。在释放一个键时,也会出现类似的情况,这就是键的抖动,抖动的持续时间不一,但通常不会大于10ms。假设抖动问题不解决,就会引起对闭合键的屡次读入。对于键抖动最方便的解决方法就是当发现有键按下后,不是立即进行扫描,而是延时大约10ms后再进行。由于一个键按下的时间一般会持续上百毫秒,所以延迟10ms后再扫描处理并不迟。11在使用8051的定时器/计数器前,应对它进行初始化,其步骤是什么?4分课本P198答:   (1)确定T/C的工作方式编程TMOD存放器;       (2)计算T/C中的计数初值

26、,并装载到TH和TL;       (3)T/C在中断方式工作时,须开CPU中断和源中断编程IE存放器;       (4)启动定时器/计数器编程TCON中TR1或TR0位。12. 什么叫中断?设置中断有什么优点?五、程序分析题10分1设单片机时钟频率为6MHz,分析下面程序实现什么功能?#include "reg51.h"sbit P10=P10;void main()TMOD=0x01;TH0=(65536-12500)/256;TL0=(65536-

27、12500)%256;ET0=1;EA=1;TR0=1;while(1); void T0_srv(void)interrupt 1 using 1TH0=(65536-12500)/256;TL0=(65536-12500)%256;P10=!P10;解:P1.0引脚输出50ms周期的方波。2分析下面程序实现什么功能?#include "reg51.h"#include "stdio.h"void init_ser()SCON = 0x50; /*SCON:工作模式1,8-bit UART,允许接收*/TMOD |= 0x20; /*TMOD:定时器T

28、1,工作模式2, 8位自动重载方式*/TH1 = 0xf3; /*当波特率为2400时,定时器初值*/TR1 = 1; /*定时器T1开始运行*/TI = 1; /*允许发送数据*/long factorial(int n) reentrantlong result;if(n=0)result=1;elseresult=n*factorial(n-1);return result;void main()int j;long tmp;long (*p)(int n);/*函数指针变量定义*/init_ser();p=(void*)factorial;/*函数指针变量p指向factorial()函

29、数*/for(j=0;j<11;+j)tmp=(*p)(j);/*用指针变量p调用factorial()函数*/printf("%d!=%ldn",j,tmp);for(;);解:输出010的阶乘。六、编程题30分1在8051系统中,振荡频率是12MHz,用定时器/计数器T0实现从P1.1产生周期是2s的方波,试编程。10分解:#include <reg51.h>sbit P1_1=P11;/定义位变量unsigned char i;/定时次数void timer0over(void); /函数声明定时50ms函数void main( ) /主函数 i=0

30、; TMOD=0x01;/定时器T0定时50ms,方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1;/开T0 for(;) if(TF0) timer0over( ); void timer0over(void) TH0=(65536-50000)/256; TL0=(65536-50000)%256; TF0=0; i+; if(i=20) /20次到了吗? i=0; P1_1=!P1_1; 2在8051系统中,振荡频率是12MHz,用定时器/计数器T1实现从P1.1产生高电平宽度是10ms,低电平宽度是20ms的矩形波,试编程。

31、10分解:#include <reg51.h>unsigned char i;sbit P1_1=P11;void main( )/主函数 i=0; TMOD=0x10;/T1定时方式1,定时时间10ms TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET1=1; TR1=1; while(1);void timer1_int(void) interrupt 3 TH0=(65536-10000)/256; TL0=(65536-10000)%256; i+; if(i=1) P1_1=0; else if(i=3) i=0

32、; P1_1=1; 3用单片机和内部定时器来产生矩形波,要求频率为100Hz,占空比为2:1,设单片机的时钟频率为12MHz,写出有关程序。10分解:#include <reg51.h>unsigned char i;sbit P1_1=P11;void main() i=0; TMOD=0x10; TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET1=1; TR1=1; while(1);void timer1_int(void) interrupt 3 TH0=(65536-10000)/256; TL0=(65536-

33、10000)%256; i+; if(i=2) P1_1=0; else if(i=3) i=0; P1_1=1; 4如图1-1所示,单片机P1口的P1.0和P1.1各接一个开关S1、S2,P1.4、P1.5、P1.6和P1.7各接一只发光二极管。由S1和S2的不同状态来确定哪个发光二极管被点亮,如表1-4所示。10分表1-4 S1、S2与二极管的关系S2S1被点亮的二极管00VD101VD210VD311VD4解:一程序如下:#include<reg51.h>void main() char a; a=P1/*读P1口*/ a=a&0x03;/*屏蔽高6位*/ if(a=

34、0) P1=0x83; else if a=1 P1=0x43; else if a=2 P1=0x23; else P1=0x13;二程序如下:#include “reg51.hvoid main()char a;a=P1;/*读P1口*/a=a&0x03;/*屏蔽高6位*/switch (a) case0:P1=0x83;break; case1:P1=0x43;break; case2:P1=0x23;break;case3:P1=0x13; 三程序如下:#include “reg51.hvoid main() char a; loop:a=P1;a=a&0x03;/*屏蔽高6位*/switch (a)case0:P1=0x83;break;case1:P1=0x43;break;case2:P1=0x23

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论