


已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.一、单项选择题1. 利用下列(d)关键字可以改变工作寄存器组a 、interruptb 、sfr c、whiled、using2. c51 中一般指针变量占用(c)字节存储。a 、一个b、两个c、三个d 、 四 个3使用宏来访问绝对地址时,一般需包含的库文件是(b) a 、reg51.hb 、absacc.hc、intrins.hd、 startup.h4执行 #define pa8255xbyte0x3ffc;pa8255=0x7e;后存储单元0x3ffc 的值是(a)a 、ox7eb、8255hc、未定d 、 7e 5设有 int i;则表达式i=1,+i,+i|+i,i的值为( c) a 、1b、 2c、3d、46设有 int a =10,11,12,*p=&a0;则执行完 *p+;*p+=1;后 a0,a1,a2的值依次是( c)a 、10,11,12b、 11,12,12c、10,12,12d、11,11,127设有 int i;则表达式i=1,+i,i|+i,i的值为( b)a 、1b、 2c、3d、48、单片机8051 的 xtal1和 xtal2引脚是(d)引脚 。a 、外接定时器b、外接串行口c、外接中断d、外接晶振9、单片机的定时器/计数器设定为工作方式1 时,是(d)。a、 8 位计数器结构b、2 个 8 位计数器结构c、13 位计数器结构d、16 位计数器结构10、串行口每一次传送(c )字符。a 、1 个字节b 、1bitc、1 帧d 、 1 串11、计算机能直接识别的语言是(c ) 。a 、汇编语言b、自然语言c、机器语言d 、c 语言12、 mcs 51 单片机的cpu 主要的组成部分为( a)。a 、运算器、控制器b、加法器、寄存器c、运算器、加法器d、运算器、译码器13、 mcs-51 系列单片机芯片是双列直插式封装的,有(c)个引脚。a 、24b 、30c、 40d、5014、 mcs-51 的中断允许触发器内容为83h ,cpu 将响应的中断请求是(a)。a 、t0b 、 int1c、串行接口d 、 int0 15、 p0 口作数据线和低8 位地址线时( c)。a 、应外接上拉电阻b、不能作i/o 口c、能作 i/o 口d、应外接高电平;.二、判断题: (每小题1 分,共 10 分。正确的在括号内打“,”错误的打 “。”判对得分,不判、判错均不得分。 )1. 若一个函数的返回类型为void ,则表示其没有返回值。(y)2. 特殊功能寄存器的名字,在c51 程序中,全部大写。 ( y)3. “ sfr后”面的地址可以用带有运算的表达式来表示。(n)4. #include 与#include“ reg51.h是等”价的。( y )5. sbit 不可以用于定义内部ram 的可位寻址区,只能用在可位寻址的sfr 上。( n)6. continue和 break 都可用来实现循环体的中止。(n ) 7若一个函数的返回类型为void ,则表示其没有返回值。( y) 8所有定义在主函数之前的函数无需进行声明。(n)9 int i,*p=&i;是正确的c 说明。(y)10 7&3+12 的值是 15。(y )11一个函数利用return 不可能同时返回多个值。(y)12、 51 单片机只能做控制用,不能完成算术运算。(n)13、 mcs-51的中断源全部编程为同级时,优先级最高的是int1 。(n)14、 mcs 51 单片机的cpu能同时处理8 位二进制数据。 (y)15、单片机的主频越高,其运算速度越快。(n)16、为了消除按键的抖动,常用的方法有硬件和软件两种方法。(y) 三、填空(每空 1 分,共 20 分。在空白处填上正确的内容)1. keil c51 软件中,工程文件的扩展名是展名是 hex 。_ _uv2 ,编译连接后生成可烧写的文件扩2. c51 支持的指针有一般指针和存储器指针。3. c51 中,没有专门的循环语句,我们可以用函数左移,用 irol 完成二个字节的循环左移。4. 是 c 语言的基本单位。 crol 完成一个字节的循环5. c 语言中输入和输出操作是由库函数scanf和printf等函数来完成。6. 若有说明int i,j,k; 则表达式 i=10,j=20,k=30,k*=i+j的值为 900 。7. 数组是一组有固定数目和相同类型成分分量的有序集合。8. 变量的指针就是变量的地址;指针变量的值是指针。9. 在 c 语言中,把多个不同类型的变量结合在一起形成的一个组合型变量,称为结构变量,简称结构。10 c51的数据类型有基本类型、结构类型、指针类型、空类型。11. c51 的基本数据类型有位型、字符型、 整形、 长整形、 浮点型、双精度浮点型。12. c51 的构造数据类型有数组类型、 结构类型、 共用体型、 梅举型。13. c51 的存储类型有data、 bdata、 idata、 pdata、 xdata、 code。14. c51 的存储模式有small、 compact和 large。15. c51 程序与其他语言程序一样,程序结构也分为顺序结构、 选择结构、循环结构三种。16. 数组的一个很重要的用途就是查表。17. 在单片机扩展时,p0口和p2口为地址线,p0口又分时作为数据线。18、在mcs-51 单片机中,如采用6mhz 晶振,一个机器周期为2us。19、消除键盘抖动常用两种方法,一是采用硬件,用基本 rs 触发器构成;二是采用软件,既测试有键输入时需延时10 毫秒后再测试是否有键输入,此方法可判断是否有键抖动。20、在串行通信中三种方式。,根据数据传送方向分为单工、半双工和 全双工四、问答题(共20 分)1. 简述 c51 语言和汇编语言的比较(5 分)使用 c51 语言进行嵌入式系统的开发,有着汇编语言所不可比拟的优势: 编程调试灵活方便; 生成的代码编译效率高; 模块化开发; 可移植性好; 便于项目的维护;2. 简述单片机的c 语言的特点(7 分)单片机的 c 语言的特点主要体现在以下几个方面: 无需了解机器硬件及其指令系统,只需初步了解mcs-51 的存储器结构; c51能方便的管理内部寄存器的分配、不同存储器的寻址和数据类型等细节问题,但对硬件控制有限;而汇编语言可以完全控制硬件资源; c51在小应用程序中,产生的代码量大,执行速度慢;但在较大的程序中代码效率高; c51程序由若干函数组成,具有良好的模块化结构,便于改进和扩充; c51程序具有良好的可读性和可维护性;而汇编语言在大应用程序开发中,开发难度增加,可读性差; c51有丰富的库函数,可大大减少用户的编程量,显著缩短编程与调试时间,大大提高软件开发效率; 使用汇编语言编制的程序,当机型改变时,无法直接移植使用,而c 语言程序是面向用户的程序设计语言,能在不同机型的机器上运行,可移植性好。3. 哪些变量类型是51 单片机直接支持的?(5 分)表1-1 c51的数据类型数据类型bit长度/bit1长度/byte值域0,1unsigned char810 255signed char81-128 127unsigned int1620 65 535signed int162-32 768 32 767unsigned long3240 4 294 967 295signed long324-2 147 483 6482 147483 647float3241176e-383 40e+38 (6 位数字)double6481176e-383 40e+38 (10 位数字)一般指针243存储空间 0 65 535答: c51 编译器支持的数据类型有:位型(bit)、无符号字符型(unsigned char)、有符号字符型(signedchar)、无符号整型(unsignedint)、有符号整型(signedint)、无符号长整型(unsigned long)、有符号长整型(signed long)、浮点型(float)和指针型等。c51 编译器支持的数据类型、长度和值域如表1-1 所示。4. 简述 c51 的数据存储类型(10 分)答:我们都知道,8051 单片机存储区可分为内部数据存储区、外部数据存储区以及程序存储区。 8051 单片机内部的数据存储区是可读写的,8051 派生系列最多可有256 字节的内部数据存储区,其中低128 字节可直接寻址,高128 字节(从 0x80 到0xff )只能间接寻址,从 20h 开始的 16 字节可位寻址。 内部数据区可分为3 个不同的存储类型:data、 idata 和bdata。外部数据区也是可读写的,访问外部数据区比访问内部数据区慢,因为外部数据区是通过数据指针加载地址来间接访问的。c51 提供两种不同的存储类型xdata和 pdata访问外部数据。程序存储区是只能读不能写。程序存储区可能在8051单片机内部或者在外部或者内外都有,这由8051单片机的硬件决定。c51 提供了 code存储类型来访问程序存储区。存储类型长度 /bit长度 /byte值域dataidata88110 2550 255pdata810 255code1620 65 535xdata1620 65 535每个变量可以明确地分配到指定的存储空间,对内部数据存储器的访问比对外部数据存储器的访问快许多,因此应当将频繁使用的变量放在内部存储器中,而把较少使用的变量放在外部存储器中。各存储区的简单描述如表1-2所示。表 1-2 c51存储类型与8051存储空间的对应关系存储区描述data片内 ram的低 128 字节,可在一个周期内直接寻址bdata片内 ram的位寻址区, 16 字节idata片内 ram的 256 字节,必须采用间接寻址xdata外部数据存储区,使用dptr 间接寻址外部存储区的256 个字节,通过p0 口的地址对其寻址。使用movx ri,需pdata要两个指令周期code程序存储区,使用dptr 寻址。以上介绍的是c51 的数据存储类型,c51 存储类型及其大小和值域如表1-3所示。表1-3 c51存储类型及其大小和值域5. 简述 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.为了能直接访问特殊功能寄存器sfr,c51 提供了一种自主形式的定义方法。这种定义方法与标准的 c语言不兼容,只适用于对8051 系列单片机进行c编程。这种定义的方法是引入关键字 “sfr ”,语法如下:sfr特殊功能寄存器名字如:=特殊功能寄存器地址;sfr scon=0x98;sfr tmod=0x89;/* 串口控制寄存器地址98h*/* 定时器 / 计数器方式控制寄存器地址89h*/( 2)通过头文件访问sfr8051系列单片机的寄存器数量与类型是极不相同的,因此对单片机特殊功能寄存器的访问可以通过对头文件的访问来进行。为了用户处理方便,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 之间。6. c51的data、bdata、idata有什么区别?(6 分) 答: data、bdata、idata是表明数据的存储类型,data是指片内 ram的低 128 字节,可在一个周期内直接寻址;bdata是指片内 ram的位寻址区, 16 字节;idata是指片内 ram的256 字节,必须采用间接寻址。7. c51 中的中断函数和一般的函数有什么不同?(6 分)答: c51 编译器允许用c51 创建中断服务函数,中断函数是由中断系统自动调用的。中断函数的定义格式为:函数类型函数名interrupt n using n其中:interrupt和using为关键字;interrupt后面的 n为中断源的编号,即中断号;using后面的 n所选择的寄存器组,取值范围为0 3 。定义中断函数时,using是一个选项,可以省略不用。如果不用using选项,则由编译器选择一个寄存器组作为绝对寄存器组。8051 的中断过程通过使用interrupt关键字和中断号(0 31 )来实现,中断号告诉编译器中断函数的入口地址。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;9. 什么是重入函数?重入函数一般什么情况下使用,使用时有哪些需要注意的地方? 答:多个函数可以同时使用的函数,称为重入函数。( 6 分)通常情况下, c51 函数不能被递归调用,也不能应用导致递归调用的结构。有此限制是由于函数参数和局部变量是存储在固定的地址单元中。重入函数特性允许你声明一个重入函数。即可以被递归调用的函数。重入函数可以被递归调用,也可以同时被两个或更多的进程调用。重入函数在实时应用中及中断服务程序代码和非中断程序代码必须共用一个函数的场合中经常用到。10. 如何消除键盘的抖动?(5 分)答:由于按键是机械开关结构,所以当用手按下其中一个键时,往往会出现所按键在闭合位置和断开位置之间发生跳几下后才会稳定到闭合状态的情况。在释放一个键时, 也会出现类似的情况,这就是键的抖动,抖动的持续时间不一,但通常不会大于10ms。若抖动问题不解决,就会引起对闭合键的多次读入。对于键抖动最方便的解决方法就是当发现有键按下后,不是立即进行扫描,而是延时大约10ms 后再进行。由于一个键按下的时间一般会持续上百毫秒,所以延迟10ms 后再扫描处理并不迟。11. 在使用8051 的定时器 /计数器前,应对它进行初始化,其步骤是什么?(4 分) 课本 p198答:(1) 确定 t/c 的工作方式 编程 tmod寄存器;(2) 计算 t/c 中的计数初值,并装载到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-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 :定时器 t1 ,工作模式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() 函数 */ for(j=0;j11;+j)tmp=(*p)(j);/* 用指针变量p 调用 factorial() 函数 */ printf(%d!=%ldn,j,tmp);for(;);解:输出0 10 的阶乘。六、编程题(30 分)1. 在 8051系统中,已知振荡频率是12mhz ,用定时器 / 计数器 t0 实现从 p1.1产生周期是2s 的方波,试编程。 ( 10 分)解:#include sbit p1_1=p11;/定义位变量unsigned char i;/定时次数void timer0over(void);/函数声明(定时50ms 函数)void main( )/主函数i=0;tmod=0x01;/定时器 t0 定时 50ms ,方式 1 th0=(65536-50000)/256;tl0=(65536-50000)%256;tr0=1;/开 t0for(;)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 的矩形波,试编程。 ( 10 分)解:#include unsigned char i; sbit p1_1=p11;void main( )/主函数i=0;tmod=0x10;th0=(65536-10000)/256;/t1定时方式1 ,定时时间10mstl0=(65536-10000)%256;ea=1;et1=1;tr1=1;while(1);void timer1_int(void) interrupt 3th0=(65536-10000)/256;tl0=(65536-10000)%256;i+;if(i=1) p1_1=0;else if(i=3)i=0;p1_1=1;3 用单片机和内部定时器来产生矩形波,要求频率为100hz ,占空比为2 : 1 ,设单片机的时钟频率为12mhz ,写出有关程序。 ( 10 分)解:#include 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 3th0=(65536-10000)/256; tl0=(65536-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被点亮的二极管00vd1解:(一)程序如下:01vd2#includevoid main()1101vd3vd4char a;a=p1/* 读 p1 口*/a=a&0x03;/* 屏蔽高 6 位*/ if(a=0) p1=0x83;.else if a=1 p1=0x43;else if a=2 p1=0x23; else p1=0x13;(二)程序如下: #include “reg51.h” void 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.h” void main()char a; loop :a=p1;a=a&0x03;/* 屏蔽高 6 位*/ switch (a)case0: p1=0x83 ; break; case1: p1=0x43 ; break; case2: p1=0x23 ; break; case3: p1=0x13 ;goto loop ;(四)程序如下:#include “reg51.h” void main()char a; while (1)a=p1;a=a&0x03;/* 屏蔽高 6 位*/ switch (a)case0: p1=0x83 ; break; case1:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 历史玄学考试题及答案
- 广东广告学2自考试题及答案
- 冷轧酸洗考试题及答案
- 劳动自考试题及答案
- 科技哲学考试题及答案
- 居家客服考试题及答案
- 新能源汽车维修工设备调试考核试卷及答案
- 课件文明玩耍主题banhui
- 铸造碳化钨制管工新员工考核试卷及答案
- 教招考试题及答案
- 第二学期六年级家长会PPT名师优质课获奖市赛课一等奖课件
- 公对私转账借款协议书
- 《思想道德与法治》课件第四章明确价值要求践行价值准则第三节积极践行社会主义核心价值观
- 高等土力学土的本构关系
- GB/T 29494-2013小型垂直轴风力发电机组
- GB/T 19188-2003天然生胶和合成生胶贮存指南
- 2023年化工检修钳工题库及答案
- 酒店文化全套教学课件
- 基于位置的服务LBS课件
- 9.软件质量保证计划
- 收益权投资协议书范本
评论
0/150
提交评论