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