




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、单项选择题1.利用下列(D)关键字可以改变工作寄存器组A、interruptB、sfrC、whileD、using2。C51中一般指针变量占用(C)字节存储。A、一个B、两个C、三个D、四个3.使用宏来访问绝对地址时,一般需包含得库文件就是(B)A、reg51、hB、absacc、hC、intrins、hD、startup、h4。执行#definePA8255XBYTE0x3FFC;PA8255=0x7e;后存储单元033FFC得值就是(A)A、Ox7eB、8255HC、未定D、7e5 o设有inti;则表达式i=1,+i,+i|+i,i得值为(C)A、1B、2C、3D、46 .设有int
2、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 .设有inti;则表达式i=1,+i,i|+i,i得值为(B)A、1B、2C、3D、48、单片机8051得XTAL1与乂工人L2引脚就是(D)引脚.A、外接定时器B、外接串行口C、外接中断D、外接晶振9、单片机得定时器/计数器设定为工作方式1时,就是(D)。A、8位计数器结构B、2个8位计数器结构C、13位计数器结构D、16位计数器结构10、串行口每一次传送(C)字符。A、1个字节B、IbitC、1帧D、
3、1串11、计算机能直接识别得语言就是(C)。A、汇编语言B、自然语言C、机器语言D、C语言12、 MCS51单片机得CPU主要得组成部分为(A)。A、运算器、控制器B、加法器、寄存器C、运算器、加法器D、运算器、译码器13、 MCS-51系列单片机芯片就是双列直插式封装得,有(C)个引脚。A、24B、30C、40D、5014、MCS-51得中断允许触发器内容为83H,CPU将响应得中断请求就是(A).A、TOB、INT1C、串行接口D、INT015、P0口作数据线与低8位地址线时(C)。A、应外接上拉电阻B、不能作I/O口C、能作I/O口D、应外接高电平二、判断题:(每小题1分,共10分。正确
4、得在括号内打“,错误得打“X:判对得分,不判、判错均不得分。)1。若一个函数得返回类型为void,则表示其没有返回值。(Y)2 .特殊功能寄存器得名字,在C51程序中,全部大写。(Y)3 。“sf”后面得地址可以用带有运算得表达式来表示.(N)4 .#ineludereg51、h>与#include"r51、h”就是等价得。(Y)5。sbit不可以用于定义内部RAM得可位寻址区,只能用在可位寻址得SFR上。(N)6.Continue与break都可用来实现循环体得中止。(N)7。若一个函数得返回类型为void,则表示其没有返回值.(Y)8.所有定义在主函数之前得函数无需进行声明
5、。(N)9。inti,*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分。在空白处填上正确得内容)1oKeiLC51软件中,工程文件得扩展名就是UV2,编译连接后生成可烧
6、写得文件扩展名就是hex。2。C51支持得指针有一般指针与存储器指针。3。C51中,没有专门得循环语句,我们可以用函数cr。l完成一个字节得循环左移,用irol完成二个字节得循环左移。4。就是C语言得基本单位.5。C语言中输入与输出操作就是由库函数scanf与printf等函数来完成。6。若有说明inti,j,k;则表达式i=10,i=20,k=30,k*=i+j得值为一900_7o数组就是一组有固定数目与相同类型成分分量得有序集合8.变量得指针就就是变量得地址.:指针变量得值就是指针。9。在C语言中,把多个不同类型得变量结合在一起形成得一个组合型变量,称为li构变量,简称结构。10.C51得
7、数据类型有基本类型、结构类型、指针类型空类型.11.C51得基本数据类型有位型一字符型、整形_、长整形、上点型_、双精度浮点型O12。C51得构造数据类型有数组类型、结构类型、共用体型、梅举g。1 3。C51得存储类型有data、bdata、idata、pdata、xdata、code.14。C51得存储模式有sma1l、pact与large.15。C51程序与其她语言程序一样,程序结构也分为顺序结构、诜择结构、循环结构三种.16。数组得一个很重要得用途就就是杳表17。在单片机扩展时,P0口与P2口为地址线,P0口又分时作为数据线。18、在MCS-51单片机中,如采用6MHZ晶振,一个机器周期
8、为2us。19、消除键盘抖动常用两种方法,一就是采用硬件,用基本RS触发器构成二就是采用软件,既测试有键输入时需延时10毫秒后再测试就是否有键输入,此方法可判断就是否有键抖动。20、在串行通信中,根据数据传送方向分为单工、半双工与双工三种方式。四、问答题(共20分)1。简述C51语言与汇编语言得比较(5分)使用C51语言进行嵌入式系统得开发,有着汇编语言所不可比拟得优势编程调试灵活方便;生成得代码编译效率高;模块化开发;可移植性好;便于项目得维护;2。简述单片机得C语言得特点(7分)单片机得C语言得特点主要体现在以下几个方面:无需了解机器硬件及其指令系统,只需初步了解MCS-51得存储器结构;
9、C51能方便得管理内部寄存器得分配、不同存储器得寻址与数据类型等细节问题,但对硬件控制有限;而汇编语言可以完全控制硬件资源;C51在小应用程序中,产生得代码量大,执行速度慢;但在较大得程序中代码效率高;C51程序由若干函数组成,具有良好得模块化结构,便于改进与扩充;C51程序具有良好得可读性与可维护性;而汇编语言在大应用程序开发中,开发难度增加可读性差;C51有丰富得库函数,可大大减少用户得编程量,显著缩短编程与调试时间,大大提高软件开发效率;使用汇编语言编制得程序,当机型改变时,无法直接移植使用,而C语言程序就是面向用户得程序设计语言,能在不同机型得机器上运行,可移植性好.3 .哪些变量类型
10、就是51单片机直接支持得?(5分)答:C51编译器支持得数据类型有:位型(bit)、无符号字符型(unsignedchar)、有符号字符型(signedchar)、无符号整型(unsignedint)、有符号整型(signedint)、无符号长整型(unsignedlong)、有符号长整型(signedlong)、浮点型(float)与指针型等.C51编译器支持得数据类型、长度与值域如表1-1所示。表1-1C51得数据类型数据类型长度/bit长度/byte值域bit10,1unsignedchar810255signedchar81T28127unsignedint162065535signe
11、dint1623276832767unsigned1ong32404294967295signedlong324-21474836482147483647float324±1.176E-38±3.40E+38(6位数字)double648±1.176EV8±3。40E+38(10位数字)一般指针243存储空间0655354 .简述C51得数据存储类型(10分)答:我们都知道,8051单片机存储区可分为内部数据存储区、外部数据存储区以及程序存储区.8051单片机内部得数据存储区就是可读写得,8051派生系列最多可有256字节得内部数据存储区,其中低128字
12、节可直接寻址,高128字节(从0x8。到0xFF)只能间接寻址,从20H开始得16字节可位寻址.内部数据区可分为3个不同得存储类型:data、idata与bdata。外部数据区也就是可读写得,访问外部数据区比访问内部数据区慢,因为外部数据区就是通过数据指针加载地址来间接访问得。C51提供两种不同得存储类型xdata与pdata访问外部数据。程序存储区就是只能读不能写。程序存储区可能在805 1单片机内部或者在外部或者内外都有,这由8051单片机得硬件决定。C51提供了code存储类型来访问程序存储区。每个变量可以明确地分配到指定得存储空间,对内部数据存储器得访问比对外部数据存储器得访问快许多,
13、因此应当将频繁使用得变量放在内部存储器中,而把较少使用得变量放在外部存储器中。各存储区得简单描述如表1-2所示.表1-2C51存储类型与8051存储空间得对应关系存储区描述DATA片内RAM得低128字节,可在一个周期内直接寻址BDATA片内RAM得位寻址区,16字节IDATA片内RAM得256字节,必须采用间接寻址XDATA外部数据存储区,使用DPTR间接寻址PDATA外部存储区得256个字节,通过P0口得地址对其寻址.使用MOVXRi,需要两个指令周期CODE程序存储区,使用DPTR寻址。以上介绍得就是C51得数据存储类型,C51存储类型及其大小与值域如表1-3所示。表1-3C51存储类型
14、及其大小与值域存储类型长度/bit长度/byte值域data810-255idata810-255pdata810255code162065535xdata1620655355。简述C5151单片机特殊功能寄存器得定义方法(5分)答:MCS51通过其特殊功能寄存器(SFR)实现对其内部主要资源得控制。MCS-51单片机有21个SFR,有得单片机还有更多得SFR,它们分布在片内RAM导高128字节中,其地址能够被8整除得SFR一般可以进行位寻址。关于MCSa1单片机得特殊功能寄存器参瞧附录A。又SFR只能用直接寻址方式访问.C51允许通过使用关键字sfr、sbit或直接引用编译器提供得头文件来实
15、现对SFR得访问。(1)使用关键字定义sfr为了能直接访问特殊功能寄存器SFR,C51提供了一种自主形式得定义方法.这种定义方法与标准得C语言不兼容,只适用于对8051系列单片机进行C编程。这种定义得方法就是引入关键字“sfr”,语法如下:sfr特殊功能寄存器名字=特殊功能寄存器地址;如:sfrSCON=0x98;?/*串口控制寄存器地址98H*/sfrTMOD=0X89;?/*定时器/计数器方式控制寄存器地址89H*/(2)通过头文件访问SFR8051系列单片机得寄存器数量与类型就是极不相同得,因此对单片机特殊功能寄存器得访问可以通过对头文件得访问来进行。为了用户处理方便,C51编译器把MC
16、S-51单片机得常用得特殊功能寄存器与特殊位进行了定义,放在一个“reg51、h”或“reg52、h”得头文件中。当用户要使用时,只需要在使用之前用一条预处理命令”#includereg51、h>”把这个头文件包含到程序中,然后就可以使用特殊功能寄存器名与特殊位名称了用户可以通过文本编辑器对头文件进行增减。(3)SFR中位定义在8051单片机得应用问题中,经常需要单独访问SFR中得位,C51得扩充功能使之成为可能,使用关键字"sb1t”可以访问位寻址对象。特殊位(sbit)得定义,像SFR一样不与标准C兼容.与SFR定义一样,用关键字“sb1t”定义某些特殊位,并接受任何符号名
17、,="号后将绝对地址赋给变量名。这种地址分配有三种方法:第一种方法:sbit位名=特殊功能寄存器名人位置;当特殊功能寄存器得地址为字节(8位)时,可使用这种方法.特殊功能寄存器名必须就是已定义得SFR得名字.“人”后得位置”语句定义了基地址上得特殊位得位置。该位置必须就是07得数。如:第二种方法:sbit位名=字节地址人位置;这种方法就是以一个整常数为基地址,该值必须在0x800xFF之间,并能被8整除,确定位置得方法同上第三种方法:sbit位名=位地址;这种方法将位得绝对地址赋给变量,地址必须在0x800xFF之间。6。C51得data、bdata、idata有什么区别?(6分)答
18、:data、bdata、idata就是表明数据得存储类型,data就是指片内RAM导低128字节,可在一个周期内直接寻址;bdata就是指片内RAM导位寻址区,16字节;idata就是指片内RAM#256字节,必须采用间接寻址。7。C51中得中断函数与一般得函数有什么不同?(6分)答:C51编译器允许用C51创建中断服务函数,中断函数就是由中断系统自动调用得。中断函数得定义格式为:?函数类型函数名interruptnusingn其中:interrupt与using为关键字;interrupt后面得n为中断源得编号,即中断号;using后面得n所选择得寄存器组,取值范围为03。定义中断函数时,u
19、sing就是一个选项,可以省略不用。如果不用us1ng选项,则由编译器选择一个寄存器组作为绝对寄存器组。8051得中断过程通过使用interrupt关键字与中断号(031)来实现,中断号告诉编译器中断函数得入口地址。8.按照给定得数据类型与存储类型,写出下列变量得说明形式(6分)(1)在data区定义字符变量val1答:chardatavall;(2)在idata区定义整型变量val2答:intidataval2;(3)在xdata区定义无符号字符型数组val34。答:unsignedxdataval34;(4)在xdata区定义一个指向char类型得指针px.答:charxdata*px;(
20、5)定义可位寻址变量flag.答:bitflag;(6)定义特殊功能寄存器变量P3。答:SfrP3=0xB0;9.什么就是重入函数?重入函数一般什么情况下使用,使用时有哪些需要注意得地方?答:多个函数可以同时使用得函数,称为重入函数。(6分)通常情况下,C51函数不能被递归调用,也不能应用导致递归调用得结构。有此限制就是由于函数参数与局部变量就是存储在固定得地址单元中.重入函数特性允许您声明一个重入函数.即可以被递归调用得函数。重入函数可以被递归调用,也可以同时被两个或更多得进程调用.重入函数在实时应用中及中断服务程序代码与非中断程序代码必须共用一个函数得场合中经常用到10。如何消除键盘得抖动
21、?(5分)答:由于按键就是机械开关结构,所以当用手按下其中一个键时,往往会出现所按键在闭合位置与断开位置之间发生跳几下后才会稳定到闭合状态得情况.在释放一个键时,也会出现类似得情况,这就就是键得抖动,抖动得持续时间不一,但通常不会大于10ms。若抖动问题不解决,就会引起对闭合键得多次读入。对于键抖动最方便得解决方法就就是当发现有键按下后,不就是立即进行扫描,而就是延时大约10ms后再进行.由于一个键按下得时间一般会持续上百毫秒,所以延迟10ms后再扫描处理并不迟.11.在使用8051得定日器/计数器前,应对它进行初始化,其步骤就是什么?(4分)课本P198答:(1)确定T/C得工作方式一一编程
22、TMOD寄存器;(2)计算T/C中得计数初值,并装载到TH与TL;(3)T/C在中断方式工作时,须开CPU中断与源中断一一编程IE寄存器;(4)启动定时器/计数器编程TCON中TR1或TR0位。12、什么叫中断敬置中断有什么优点?五、程序分析题(10分)1.设单片机时钟频率为6MHz,分析下面程序实现什么功能?#include"reg51、h”sbitP10=P1A0;voidmain()TMOD=0x01;TH0=(65536-12500)/256;TL0=(6553612500)%256;ET0=1;EA=1;TR0=1;while11);voidTOsrv(void)inter
23、rupt1using1TH0=(65536-12500)/256;TL0=(6553612500)%256;P10=!P10;解:P1、0引脚输出50ms周期得方波。2.分析下面程序实现什么功能?# include"reg51、h"# include“stdioh”voidinit_ser)SCON=0x50;/*SCON:工作模式1,8bitUART,允许接收*/TMOD|=0x20;/*TMOD:定时器T1,工作模式2,8位自动重载方式*/?TH1=0xf3;/*当波特率为2400时,定时器初值*/?TR1=1;/*定时器T1开始运行*/?TI=1;/*允许发送数据*/
24、longfactorial(intn)reentrant?ongresult;if(n=0)?csult=1;else?result=n*factorial(n1);?returnresu1t;voidmain()?ntj;?ongtmp;long(*p)(intn);/*函数指针变量定义*/init_ser();p=(void*)factorial;?/*函数指针变量p指向factoria1()函数*/?for(j=0;j<11;+j)五?tmp=(*p)(j);?*用指针变量p调用factorial()函数*/printf("%d!=%1n”,j,tmp);for(;);解
25、:输出01。得阶乘。六、编程题(30分)1。在8051系统中,已知振荡频率就是12MHz,用定时器/计数器T0实现从P1、1产生周期就是2s得方波,试编程。(10分)解:#includereg51 、h >s bi t P1_1= P1A1;? / 定义位变量unsignedchari;?/定时次数voidtimerOover(void);/函数声明(定时50ms函数)voidmain()/主函数i=0;TMOD=0x01;?/定时器TO定时50ms,方式1?TH0=(65536-50000)/256;TL0=(65536-50000)%256;?TR0=1;?开T0?for(;)?if
26、(TF0)?timer0over();voidtimer0over(void)?TH0=(65536-50000)/256;TL0=(6553650000)%256;TF0=0;?i+;?if(i=20)?/20次到了吗??i=0;?P11=!P11;2。在8051系统中,已知振荡频率就是12MHz,用定时器/计数器T1实现从P1、1产生高电平宽度就是10ms,低电平宽度就是20ms得矩形波,试编程。(10分)解:#include<reg51、h>unsignedchari;sbitP1_1=P1A1;voidmain()?/主函数1 =0;TMOD=0x10;?/T1定时方式1,
27、定时时间10msTH0=(65536-10000)/256;?TL0=(65536T0000)%256;?EA=1;?ET1=1;TR1=1;?while(1);voidtimer1_int(void)interrupt3?TH0=(65536-10000)/256;TL0=(65536T0000)%256;i+;?if(i=1)P1_1=0;?elseif(i=3)?i=0;P1_1=1;3 .用单片机与内部定时器来产生矩形波,要求频率为100Hz,占空比为2:1,设单片机得时钟频率为12MHz,写出有关程序。(10分)解:#include<reg51、h>unsignedcha
28、ri;sbitP1_1=P1A1;voidmain()i=0;?TMOD=0x10;TH0=(6553610000)/256;TL0=(6553610000)%256;?EA=1;?ET1=1;?TR1=1;?whi1e(1);voidtimer1_int(void)interrupt3?TH0=(65536-10000)/256;?TL0=(65536T0000)%256;i+;?if(i=2)P11=0;?elseif(i=3)?i=0;P1_1=1;4 .如图11所示,单片机P1口得P1、0与P1、1各接一个开关S1、S2,P1、4、P1、5、P1、6与P1、7各接一只发光二极管。由S1
29、与S2得不同状态来确定哪个发光二极管被点亮,如表14所示。(10分)表1-4S1、S2与二极管得关系解:(一)程序如下:S2S1被点亮得二极管#inc1ude<r(:g1、h力VD1voidmain()01VD210VD3chara;11VD4a=P1?读P1口*/a=a&0x03;?/*屏蔽高6位*/if(a=0)P1=0x83;elseifa=1P1=0x43;elseifa=2P1=0x23;?elseP1=0x13;(二)程序如下:?#includer"eg51、h”voidmain()?chara;?3=P1;?/*读Pl口*/a=a&0x03;?/*
30、屏蔽高6位*/?switch(a)caseO:P1=0x83;break;case1:Pl=0x43;break;?case2:P1=0x23;break;£asc3:P1=0x13;(三)程序如下:# inc1udefeg51、h”?voidmain()&chara;?loop:?a=P1;&=a&0x03;?*屏蔽高6位*/?%witch(a)?case0:P1=0x83;break;case1:P1=0x43;break;?Case2:P1=0x23;break;?case3:P1=0x13;?gotoloop;(四)程序如下:# includereg51、h”voidmain()?shara;whi1e(1)?a=Pl;a=a0x03;?/*屏蔽高6位*/?switch(a)case。:P1=0x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论