《单片机C语言试卷.doc》由会员分享,可在线阅读,更多相关《单片机C语言试卷.doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、因为个人使用旧版(第4版),页码统一也旧版页码为准,望见谅。个人纯手打,若有错漏,望多多包含。祝大家考试顺利!07-08 A卷一、问答题1、用单片机C语言针对外部扩展接口芯片编程时,为什么需要absacc.h头文件?答:(详见课本P342即附录B 6.头文件的内容)该头文件中包含的宏定义允许用户直接访问8051单片机的不同存储区。包括:(具体区别见P335-337)(可省略)CBYTE:允许用户访问程序存储器中某一字节;XBYTE:允许用户访问8051外部数据存储器中某一字节;DBYTE:允许用户访问8051单片机内部数据存储器中某一字节;PBYTE:允许用户访问按页访问8051外部数据存储器
2、中某一字节;CWORD:允许用户访问程序存储器中某一字节;XWORD:允许用户访问8051外部数据存储器中某一字节;DWORD:允许用户访问8051单片机内部数据存储器中某一字节;PWORD:允许用户按页访问8051外部数据存储器中某一字节;当51单片机通过8255(8155)和锁存器74LS273等来扩展IO时,需要用到外部数据存储器,常使用宏XBYTE。2、单片机C语言Cx51对单片机内部资源和外部资源变量和地址的定义是否与普通C语言兼容,为什么?答:详见章节3.4 P64-67不兼容。8051单片机片内有21个特殊功能寄存器(SFR),分散在片内RAM区的高128字节中,地址为80H0F
3、FH,对SFR的操作,只能用直接寻址方式。为了直接访问这些特殊功能寄存器,KEIL Cx51提供了一种自主形式的定义方法。这种定义方法与标准C语言不兼容,只适用于对8051系列单片机进行C编程。这种定义的方法是引入关键字“sfr”,语法为:sfr sfr_name =int constant ;3、单片机C语言编程定义变量时,为什么通常需要定义变量的存储类型?答:详见章节3.3 P59-63因为KEIL Cx51 是面向8051系列单片机及其硬件控制系统的开发工具,它定义的任何数据类型必须以一定的存储类型的方式定位在8051的某一存储区中,否则便没有任何的实际意义。二、简述题1、以走马灯的实验
4、为例,简述用单片机C语言编程、上机、实验调试的过程。解:详见附录A P308-3222、简述单片机C语言取代单片机汇编语言的发展趋势。解:详见章节2.1 P41-42三、电路图绘制略四、编程题1、对于P1口步进电机控制电路,P1.0:A相;P1.1:B相;P1.2:C相。当P3.3为低电平时,步进电机停转,当P3.3为高电平时,步进电机运转。单向三拍正转顺序ABCA;单向三拍反转顺序ACBA。应用定时器定时(定时17ms)中断方式编制单向三拍正、反转控制程序(用一个程序编制完成),单片机的fosc=12MHz。解:可以参考P235-238 章节10.3 例1、2单向三拍正转脉冲顺序为ABCA,
5、数字控制字为01H02H04H01H;单向三拍反转脉冲顺序为ACBA,数字控制字为01H04H02H01H。2、设80051单片机的fosc=12MHz,编程实现在P1.7端口输出100Hz的方波,在P1.6端口输出50Hz的方波。解:可以参考P188 例2 程序如下:3、应用定时器定时20ms,每20ms从8255的A口(地址参见绘制的电路图)读入8位新数据(new),并和上一次输入值(old)相与,其结果存入rel变量中,单片机的fosc=12MHz解:可参考章节9.2 P210-214 11-12 B卷一、简答题1、单片机C语言编程定义数组变量时,为什么通常需要定义数组变量的存储类型?答
6、:见A卷。2、单片机串行通信时,为什么通常选择11.059MHz晶振?答:详见章节8.3 P193-197一般选用11.0592MHz或其倍数。因为对其整数分频后可以得到4800、9600、57600等常用波特率。而12MHz或6MHz晶振数值看上去很美,分频后总是无法精确得到以上常用波特率。3、头文件REG51.H主要的功能是什么?单片机C语言编程是否必须使用该头文件?答:1)关于单片机的一些符号的定义,即规定符号名与地址的对应关系。特别是4个并行口(P0、P1、P2、P3)、特殊功能寄存器(IE、 IP 、TMOD、 TR0、 EA、 TH0 、TL0等)、第二功能等。2)若编程并不需要头
7、文件REG51.H里所定义的,可不使用该头文件。但编程所面对的硬件为8051系列单片机,一般还是需要的。当然在自己非常熟悉8051的结构时,也可以自行定义需要使用的符号,就不必使用该头文件。二、简述题1、以A/D数据采集的实验为例,简述用单片机C语言编程、上机、实验调试的具体过程和步骤。解:详见附录A P308-3222、简述单片机C语言程序结构。解:详见章节2.5 P53-54三、电路图绘制1、2、3、略4、设绘制电路图中P1.3P1.7连接5个发光二极管,设单片机晶振为12MHz,按照P1.7(亮200ms之后灭)P1.6(亮200ms后灭)P1.5(亮200ms后灭)P1.4(亮200m
8、s后灭)P1.3(亮200ms后灭)P1.7(亮200ms后灭)的顺序发光,编制程序实现上述功能。要求:应用定时器中断方式编程;写出对题目的分析。解:其实,这是一个走马灯,时间间隔200ms。如果间隔不同,可以参照P192 例5。要产生200ms的定时,可以20ms循环10次得到。(或者通过计数器计数10次)四、编程与绘制程序流程图编程用单片机和定时器来产生矩形波。要求频率为50kHz,占空比2:1(高电平的时间长)。设单片机的fosc=6MHz(1)绘制程序流程图(2)编程解:可以参考P190例4(1)流程图我就不在word里编辑了,很是麻烦。(2)编程个人认为,6MHz的晶振并不能产生占空比2:1的50kHz矩形波。单片机一般执行单周期指令或双周期指令(可能会是4周期指令)。一条语句就可以达到2或4us,低电平时间也只是7us不到。误差会非常大,完全否决了题目。看来只能用作考查,无实际意义。