




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、单项选择题:(每小题2分,共10分。在每小题备选答案中选出一个正确答案,并将 正确答案的代码填在题中括号内。选对得分,不选、选错均不得分。1.利用下列(D )关键字可以改变工作寄存器组A、interruptB、sfrC、whileD、using2. C51中一般指针变量占用(C)字节存储。A、一个 B、两个 C、三个 D、四个3.使用宏来访问绝对地址时,一般需包含的库文件是(A、reg51.hB、absacc.h C、intrins.hD、startup.h4.执行 #define PA8255 XBYTE0x3FFC;PA8255=0x7e;后存储单元0x3FFC的值是(A )A、Ox7
2、eB、 8255HC、未定7e5. 设有 int i;则表达式 i=1,+i,+i|+i,i A、1 B、2 C、3 D、46. 设有 int a =10,11,12,*p=&a0次是(C)A、10,11,127. 设有int iA、1 B、的值为(C);则执行完 *p+;*p+=1;后 a0,a1,a2 的值依B、11,12,12 C、10,12,12 D、11,11,12 ;则表达式i=1,+i,i|+i,i的值为(B)2(每小题1分,二、判断题:不判、判错均不得分。)共10分。正确的在括号内打“V”错误的打“X。”判对得分,1.若一个函数的返回类型为.6.7.voi
3、d,则表示其没有返回值。C51程序中,全部大写。((V) (V ) X )特殊功能寄存器的名字,在“ sfr后面的地址可以用带有运算的表达式来表示。#include <reg51.h> 与#include “ reg51.h是等价的。(V )sbit不可以用于定义内部RAM的可位寻址区,只能用在可位寻址的SFR上。(X )Continue 和break都可用来实现循环体的中止。(x )若一个函数的返回类型为void,则表示其没有返回值。(V )所有定义在主函数之前的函数无需进行声明。(X)9.int i,*p=&i;是正确的C说明。(V )10. 7&3+12的值是
4、11 . 一个函数利用15。( X)return不可能同时返回多个值。(V )三、填空(每空1分,共20分。在空白处填上正确的内容)1. KeiL C51软件中,工程文件的扩展名是 扩展名是 HEXUV2,编译连接后生成可烧写的文件2. C51支持的指针有3. C51中,没有专门的循环语句,我们可以用函数左移,用 _iroj_完成二个字节的循环左移。4. 函数 是C语言的基本单位。5. C语言中输入和输出操作是由库函数般指针 和存储器指针scanfcrol完成一个字节的循环和 printf 等函数来完成。6若有说明 int i,j,k;则表达式 i=10,j=20,k=30,k*=i+j 的值
5、为900.7. 数组是一组有固定数目和相同类型成分分量的有序集合。&变量的指针就是变量的地址;指针变量的值是指针 。9在C语言中,把多个不同类型的变量结合在一起形成的一个组合型变量,称为 变量 ,简称 结构 。10. C51的数据类型有基本类型型。11. C51的基本数据类型有双精度浮点型。12. C51的构造数据类型有13. C51的存储类型有 _!14. C51的存储模式有SMALL15. C51程序与其他语言程序一样,程序结构也分为构)、循环结构构造类型结构位型字符型整形指针类型长整形空类浮点型- 数组类型data梅举型 。结构类型、共用体型、.bdata 、 idata 、 p
6、data 、 xdataCOMPACT 和 LARGE 。顺序结构 、选择结构(或分支结code o三种。16数组的一个很重要的用途就是17.查表 o四、问答题(共20 分)1.简述C51语言和汇编语言的比较(5分)使用C51语言进行嵌入式系统的开发,有着汇编语言所不可比拟的优势:编程调试灵活方便;生成的代码编译效率高;模块化开发;可移植性好;便于项目的维护;2.简述单片机的C语言的特点(7分)单片机的C语言的特点主要体现在以下几个方面:无需了解机器硬件及其指令系统,只需初步了解MCS-51的存储器结构;C51能方便的管理内部寄存器的分配、不同存储器的寻址和数据类型等细节问题,但对硬件控制有限
7、;而汇编语言可以完全控制硬件资源;C51在小应用程序中,产生的代码量大,执行速度慢;但在较大的程序中代码效率高;C51程序由若干函数组成,具有良好的模块化结构,便于改进和扩充; C51程序具有良好的可读性和可维护性;而汇编语言在大应用程序开发中,开发难度增 加,可读性差; C51有丰富的库函数,可大大减少用户的编程量,显著缩短编程与调试时间,大大提高 软件开发效率;C语言程序是面向用 使用汇编语言编制的程序,当机型改变时,无法直接移植使用,而 户的程序设计语言,能在不同机型的机器上运行,可移植性好。3.哪些变量类型是51单片机直接支持的? ( 5分)、答:C51编译器支持的数据类型有:位型(
8、bit )、无符号字符型(unsigned char有符号字符型(signedchar )、无符号整型(unsignedint )、有符号整型(signedint )、无符号长整型(unsigned long)、有符号长整型(signed long )、浮点型(float )和指针型等。C51编译器支持的数据类型、长度和值域如表1-1所示。表1-1 C51的数据类型数据类型长度/bit长度/byte值域bit10,1unsigned char810 255signed char81-128 127unsigned int1620 65 535signed int162-32 76832 767
9、unsigned long3240 4 294 967 295signed long324-2 147 483 6482 147483 647float324±1. 176E-38 ±3. 40E+38(6 位数字)double648±1 . 176E-38 ±3. 40E+38(10 位数字)一般指针243存储空间065 5354 .简述C51的数据存储类型(10分)答:我们都知道,8051单片机存储区可分为内部数据存储区、外部数据存储区以及程序存储区。8051单片机内部的数据存储区是可读写的,8051派生系列最多可有256字节的内部数据存储区,其中低
10、 128字节可直接寻址,高128字节(从0x80到OxFF )只能间接寻data 、idata址,从20H开始的16字节可位寻址。内部数据区可分为3个不同的存储类型: 和 bdata 。外部数据区也是可读写的,访问外部数据区比访问内部数据区慢,因为外部数据区是通过数据指针加载地址来间接访问的。C51提供两种不同的存储类型xdata和pdata访问外部数据。程序存储区是只能读不能写。程序存储区可能在 8051单片机内部或者在外部或者内外都有,这由8051单片机的硬件决定。C51提供了 code存储类型来访问程序存储区。每个变量可以明确地分配到指定的存储空间,对内部数据存储器的访问比对外部数据而把
11、较少使用的变量存储器的访问快许多, 因此应当将频繁使用的变量放在内部存储器中,放在外部存储器中。各存储区的简单描述如表1-2所示。表1-2 C51存储类型与8051存储空间的对应关系存储区描述DATA片内RAM的低128字节,可在一个周期内直接寻址BDATA片内RAM的位寻址区,16字节IDATA片内RAM的256字节,必须采用间接寻址XDATA外部数据存储区,使用 DPTR间接寻址P DATA外部存储区的256个字节,通过P0 口的地址对其寻址。使用 MOVX Ri,需 要两个指令周期CODE程序存储区,使用 DPTR寻址。1-3所示。以上介绍的是 C51的数据存储类型,C51存储类型及其大
12、小和值域如表表1-3 C51存储类型及其大小和值域存储类型长度/bit长度/byte值域data810 255idata810 255p data810 255code1620 65 535xdata1620 65 5355.简述C51对51单片机特殊功能寄存器的定义方法(5分)答:MCS-51通过其特殊功能寄存器(SFR)实现对其内部主要资源的控制。MCS-51单片机有21个SFR,有的单片机还有更多的 SFR,它们分布在片内RAM的高128字节中,其地址能够被8整除的SFR一般可以进行位寻址。关于MCS-51单片机的特殊功能寄存器参看附录A。对SFR只能用直接寻址方式访问。C51允许通过使
13、用关键字sfr、sbit或直接引用编译器提供的头文件来实现对 SFR的访问。1 )使用关键字定义 sfr为了能直接访问特殊功能寄存器SFR, C51 提供了一种自主形式的定义方法。这种定义 方法与标准的C语言不兼容,只适用于对 8051系列单片机进行C编程。这种定义的方法是引入关键字 “ sfr ”,语法如下:sfr 特殊功能寄存器名字特殊功能寄存器地址;如:sfr SCON=0x98/* 串口控制寄存器地址 98H*/sfr TMOD=0X89/* 定时器 / 计数器方式控制寄存器地址 89H*/2)通过头文件访问 SFR8051 系列单片机的寄存器数量与类型是极不相同的,因此对单片机特殊功
14、能寄存器的 访问可以通过对头文件的访问来进行。为了用户处理方便, C51 编译器把 MCS-51 单片机的常用的特殊功能寄存器和特殊位进行了定义,放在一个“reg51.h ”或“reg52.h ”的头文件中。当用户要使用时,只需要在使 用之前用一条预处理命令 “#include <reg51.h>” 把这个头文件包含到程序中,然后就可 以使用特殊功能寄存器名和特殊位名称了。用户可以通过文本编辑器对头文件进行增减。(3)SFR中位定义在8051单片机的应用问题中,经常需要单独访问SFR中的位,C51的扩充功能使之成为可能,使用关键字“sbit ”可以访问位寻址对象。特殊位(sbit
15、)的定义,像SFR一样不 与标准C兼容。=”号后将与SFR定义一样,用关键字“sbit ”定义某些特殊位,并接受任何符号名, 绝对地址赋给变量名。这种地址分配有三种方法:第一种方法:sbit 位名=特殊功能寄存器名A位置;当特殊功能寄存器的地址为字节( 8位)时,可使用这种方法。特殊功能寄存器名必须是已定义的SFR的名字。“A”后的 位置”语句定义了基地址上的特殊位的位置。该位置必须 是07的数。如:第二种方法:sbit 位名=字节地址A位置;这种方法是以一个整常数为基地址,该值必须在0x80 0xFF 之间,并能被 8整除,确定位置的方法同上。第三种方法:sbit 位名 = 位地址;这种方法
16、将位的绝对地址赋给变量,地址必须在0x80 0xFF 之间。6C51 的 data 、bdata 、idata 有什么区别?( 6分)答: data 、 bdata 、 idata 是表明数据的存储类型,data是指片内RAM的低128字节,可在一个周期内直接寻址;bdata是指片内RAM的位寻址区,16字节;idata 是指片内RAM的256字节,必须采用间接寻址。7C51 中的中断函数和一般的函数有什么不同?(6分)答: C51 编译器允许用 C51 创建中断服务函数,中断函数是由中断系统自动调用的。中断函数的定义格式为:函数类型函数名 interrupt n using n其中:inte
17、rrupt和 using 为关键字;interrupt后面的 n 为中断源的编号,即中断号;using后面的n所选择的寄存器组,取值范围为03。定义中断函数时, using 是一个选项,可以省略不用。如果不用 using 选项,则由编译 器选择一个寄存器组作为绝对寄存器组。8051 的中断过程通过使用 interrupt 关键字和中断号( 031 )来实现,中断号告诉 编译器中断函数的入口地址。6分)8按照给定的数据类型和存储类型,写出下列变量的说明形式(1)在 data 区定义字符变量 val1答: char data vall;2)在 idata 区定义整型变量 val2答: int id
18、ata 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 函数不能被递归调用, 也不能应用导致递归调用的结构。 有此限制是由于 函数参数和局部变量是存储
19、在固定的地址单元中。重入函数特性允许你声明一个重入函数。 即可以被递归调用的函数。重入函数可以被递归调用, 也可以同时被两个或更多的进程调用。 重入函数在实时应用中及 中断服务程序代码和非中断程序代码必须共用一个函数的场合中经常用到。10如何消除键盘的抖动?( 5 分) 答:由于按键是机械开关结构, 所以当用手按下其中一个键时, 往往会出现所按键在闭合位 置和断开位置之间发生跳几下后才会稳定到闭合状态的情况。 在释放一个键时, 也会出现类 似的情况,这就是键的抖动,抖动的持续时间不一,但通常不会大于10ms。若抖动问题不解决, 就会引起对闭合键的多次读入。 对于键抖动最方便的解决方法就是当发
20、现有键按下后,不是立即进行扫描,而是延时大约 10ms 后再进行。由于一个键按下的时间 一般会持续上百毫秒,所以延迟 10ms 后再扫描处理并不迟。4 分)11在使用 8051 的定时器 /计数器前,应对它进行初始化,其步骤是什么?( 答: (1)确定 T/C 的工作方式 编程 TMOD 寄存器;(2) 计算 T/C 中的计数初值,并装载到 TH 和 TL;(3)T/C 在中断方式工作时,须开 CPU 中断和源中断 编程 IE 寄存器; (4)启动定时器 /计数器 编程 TCON 中 TR1 或 TR0 位。五、程序分析题( 10 分)1.设单片机时钟频率为6MHZ,分析下面程序实现什么功能?
21、#include "reg51.h"sbit P10=PUO;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 "s
22、tdio.h" void init_ser() SCON = 0x50;TMOD |= 0x20;TH1TR1TI= 0xf3; = 1; = 1;/*SCON: 工作模式 1,8-bit UART ,允许接收 */*TMOD :定时器 T1 ,工作模式 2, 8 位自动重载方式 */ /* 当波特率为 2400 时,定时器初值 */*定时器 T1 开始运行 */* 允许发送数据 */long factorial(int n) reentrant long result;if(n=0)result=1;elseresult=n*factorial(n-1); return resul
23、t;void main()int j;long tmP; long (*P)(int n); init_ser(); P=(void*)factorial; for(j=0;j<11;+j) tmP=(*P)(j);/* 函数指针变量定义 */*函数指针变量 P指向factorial。函数*/*用指针变量Printf("%d!=%ldn",j,tmP);for(;);p 调用 factorial() 函数*/解:输出010的阶乘。六、编程题( 30 分)1 在 8051 系统中,已知振荡频率是12MHz ,用定时器 / 计数器 T0 实现从 P1.1 产生周期是 2s
24、 的方波,试编程。 (10 分)解:#include <reg51.h>sbit P1_1=P 1人1;/定义位变量unsigned char i;/定时次数void timer0over(void);/函数声明(定时 50ms 函数)void main( )/主函数i=0;TMOD=0x01;/ 定时器 T0 定时 50ms ,方式 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;/ 开 T0for(;)timer0over( );if(TF0)void timer0over(void)TH0=(65536-50000)/25
25、6;TL0=(65536-50000)%256;TF0=0;i+;EA=1;if(i=20)/20 次到了吗?i=0;P1_1=!P1_1;2在8051系统中,已知振荡频率是12MHz ,用定时器 / 计数器 T1 实现从 P1.1 产生高电平宽度是解:#include <reg51.h>unsigned char i;sbit P 1_1= Pir;void main( )/ 主函数i=0;TMOD=0x10;/T1 定时方式 1 ,定时时间 10msTH0=(65536-10000)/256;TL0=(65536-10000)%256;ET1=1;1 0ms ,低电平宽度是 2
26、0ms 的矩形波,试编程。 (10 分)TR1=1;while(1);void timer1_ in t(void) in terr upt 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分) 解:#in clude <reg51.h>un sig ned char i;sbit P 1_1= Pir;void mai n()i
27、=0;TH0=(65536-10000)/256;TL0=(65536-10000)%256;TMOD=0x10;EA=1;ET1=1;TR1=1;while(1);void timer1_ in t(void) in terr upt 3TH0=(65536-10000)/256;TL0=(65536-10000)%256;i+;if(i=2) P1_1=0;else if(i=3) i=0;P1_1=1;1-1所示,单片机P1口的 P1.0 和 P1.1 各接一个开关 S1、S2, P1.4、P1.5、P1.6 和S1和S2的不同状态来确定哪个发光二极管被点亮,如表1-44.如图P1.7各
28、接一只发光二极管。由 所示。(10分)表1-4 S1、S2与二极管的关系S2S1被点亮的二极管00VD101VD210VD311VD4解:(一)程序如下:#include<reg51.h>void main()char a;a=P1/* 读 P1 口 */* 屏蔽高 6 位 */a=a&0x03; 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;a=a&0x03; swi
29、tch (a)/* 读 P1 口 */* 屏蔽高 6 位 */case0:P 1 =0x83 ;break;case1:P 1 =0x43 ;break;case2:P 1 =0x23 ;break;case3:P1=0x13; 三)程序如下:#include “reg51.h ” void main() char a; loop: a=P1; a=a&0x03; /* 屏蔽高 6 位 */ switch (a) case0: case1: case2:case3: goto loop ; P1=0x83;P1=0x43;P1=0x23;P1=0x13;break; break; break;(四)程序如下:#include “reg51.h ” void main() char a; while (1) a=P1; a=a&0x03; switch (a)case0: case1:/*屏蔽高 6 位*/case2:case3:P1=0x83 ;P1=0x43 ;P1=0x23 ;P1=0x13 ;break; break; break;(五)程序如下:#include “reg51.h ” void mai
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅游客运企业文化建设与团队精神考核试卷
- 生活初二语文满分作文
- 女娲补天初二语文作文
- 妈妈做饭的初三语文作文
- 矿石开采的环境保护与生态建设考核试卷
- 电能表的电网能效提升技术发展策略研究考核试卷
- 市场调查在人力资源行业的应用考核试卷
- 稀土金属压延加工质量成本控制方法考核试卷
- 渔业与食品安全体系的协同管理考核试卷
- 竹材物理性能与加工适应性研究考核试卷
- 铁粉运输合同协议
- 广东省珠海市2024-2025学年七年级下学期期中考试英语试题(无答案)
- 2024年中国南水北调集团水网发展研究有限公司招聘考试真题
- (四调)武汉市2025届高中毕业生四月调研考试 语文试卷(含答案详解)
- 广州广州市天河区华阳小学-毕业在即家校共话未来-六下期中家长会【课件】
- 第4单元 亮火虫(教学设计)-2024-2025学年粤教花城版(2024)音乐一年级下册
- 车间生产材料管理制度
- 2023年郑州铁路职业技术学院单招职业技能考试题库及答案1套
- 2025年融媒体中心招聘考试笔试试题(60题)附答案
- 湖南省2025届高三“一起考”大联考(模拟二)语文试题及参考答案
- 西师大版小学五年级数学(下)期中测试题(含答案)
评论
0/150
提交评论