习题C51语言答案_第1页
习题C51语言答案_第2页
习题C51语言答案_第3页
习题C51语言答案_第4页
习题C51语言答案_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、填空1KeiL C51软件中,工程文件的扩展名是_UV2_,编译连接后生成可烧写的文件扩展名是_HEX_。2C51支持的指针有 一般指针 和 存储器指针 。3C51中,没有专门的循环语句,我们可以用函数_ crol _完成一个字节的循环左移,用_ _irol_ _完成二个字节的循环左移。4C51的基本数据类型有 位型、 字符型 、 整型 、 长整型 、 浮点型 、 双精度浮点型 。5C51的存储类型有 data 、 bdata 、 idata 、 pdata 、 xdata 、 code 。6C51的存储模式有 SMALL 、 COMPACT 和 LARGE 。7C51程序与其他语言程序一

2、样,程序结构也分为 顺序结构、选择结构、循环结构 三种。8C51中int型变量的长度为4位 ,其值域为 065535 。9C51中关键字sfr的作用定义8位特殊功能寄存器,sbit的作用 定义可位寻址对象,用于位寻址,从位寻址字节中定义位变量 。10函数定义由函数首部和 函数体 两部分组成。11C51中“!”运算符的作用是 逻辑运算结果值取反 。12若函数无返回值,用 void 关键字指定。13若局部变量未初始化,其初值为 0 。二、单项选择题:1.89S51的内部程序存储器与数据存储器容量各为多少?( C )(A)64KB、 128B ( B)4KB、64KB (C)4KB、128B (D)

3、8KB、256B2在8x51芯片里,哪个引脚用于控制使用内部程序存储器还是外部程序存储器?( B) P17 (A)XTAL1 (B)/EA (C)/PSEN (D)ALE3.下列哪个不是KeilC的预处理命令?(C) (A)#include(B)#define(C)#exit(D)#if4.下列哪个不是KeilC的数据类型?( B) (A)void(B)string(C)char(D)float5在KeilC的程序里,若要指定P0口的bit3,如何编写?(C )(A)P0.3 (B)Port0.3 (C)P03 (D)Port36.在8x51里,若要扩展外部存储器时,数据总线连接哪个输入/输出

4、端口?(A )(A)P0 (B)P1 (C)P2 (D)P37.在KeilC里,判读开关状态时,使用if_else if语句与使用switch语句有何差异?(B )(A)if-else if 语句较快 (B)if-else if语句有优先级 (C)switch语句可判读较多开关状态 (D)switch语句有优先级8.在KeilC里,中断子程序与函数有何不同?(A )(A)中断子程序不必声明(B)函数不必声明(C)中断子程序必须有形式参数 (D)中断子程序一定会有返回值9利用下列(A )关键字可以改变工作寄存器组A、interrupt B、sfr C、while D、using10C51中一般指

5、针变量占用(C )字节存储。A、一个B、两个C、三个D、四个11使用宏来访问绝对地址时,一般需包含的库文件是(B)A、reg51.h B、absacc.h C、intrins.h D、startup.h12执行#define PA8255 XBYTE0x3FFC;PA8255=0x7e;后存储单元0x3FFC的值是(A )A、Ox7e B、8255H C、未定D、7e三、判断题:(每小题1分,共10分。正确的在括号内打“”,错误的打“”。判对得分,不判、判错均不得分。)1若一个函数的返回类型为void,则表示其没有返回值。( )2特殊功能寄存器的名字,在C51程序中,全部大写。()3“sfr”

6、后面的地址可以用带有运算的表达式来表示。()4#include 与#include “reg51.h”是等价的。()5sbit不可以用于定义内部RAM的可位寻址区,只能用在可位寻址的SFR上。()6一个函数利用return不可能同时返回多个值。()四、问答题1哪些变量类型是51单片机直接支持的?答:C51编译器支持的数据类型有:位型(bit)、无符号字符型(unsigned char)、有符号字符型(signed char)、无符号整型(unsigned int)、有符号整型(signed int)、无符号长整型(unsigned long)、有符号长整型(signed long)、浮点型(f

7、loat)和指针型等。2简述C51的数据存储类型答:我们都知道,8051单片机存储区可分为内部数据存储区、外部数据存储区以及程序存储区。8051单片机内部的数据存储区是可读写的,8051派生系列最多可有256字节的内部数据存储区,其中低128字节可直接寻址,高128字节(从0x80到0xFF)只能间接寻址,从20H开始的16字节可位寻址。内部数据区可分为3个不同的存储类型:data、idata和bdata。外部数据区也是可读写的,访问外部数据区比访问内部数据区慢,因为外部数据区是通过数据指针加载地址来间接访问的。C51提供两种不同的存储类型xdata和pdata访问外部数据。程序存储区是只能读

8、不能写。程序存储区可能在8051单片机内部或者在外部或者内外都有,这由8051单片机的硬件决定。C51提供了code存储类型来访问程序存储区。每个变量可以明确地分配到指定的存储空间,对内部数据存储器的访问比对外部数据存储器的访问快许多,因此应当将频繁使用的变量放在内部存储器中,而把较少使用的变量放在外部存储器中。各存储区的简单描述如表2-2所示。表2-2 C51存储类型与8051存储空间的对应关系存储区描述DATA片内RAM的低128字节,可在一个周期内直接寻址BDATA片内RAM的位寻址区,16字节IDATA片内RAM的256字节,必须采用间接寻址XDATA外部数据存储区,使用DPTR间接寻

9、址PDATA外部存储区的256个字节,通过P0口的地址对其寻址。使用MOVX Ri,需要两个指令周期CODE程序存储区,使用DPTR寻址。以上介绍的是C51的数据存储类型,C51存储类型及其大小和值域如表2-3所示。表2-3 C51存储类型及其大小和值域存储类型长度/bit长度/byte值域data810255idata810255pdata810255code162065 535xdata162065 5353简述C51对51单片机特殊功能寄存器的定义方法答:MCS-51通过其特殊功能寄存器(SFR)实现对其内部主要资源的控制。MCS-51单片机有21个SFR,有的单片机还有更多的SFR,它

10、们分布在片内RAM的高128字节中,其地址能够被8整除的SFR一般可以进行位寻址。关于MCS-51单片机的特殊功能寄存器参看附录A。对SFR只能用直接寻址方式访问。C51允许通过使用关键字sfr、sbit或直接引用编译器提供的头文件来实现对SFR的访问。4简述C51对51单片机片内I/O口和外部扩展的I/O口的定义方法答:C51对51单片机片内I/O口的定义方法是将片内I/O口看成SFR。C51对51单片机片外I/O的访问有两种比较常用的访问方法:(1)绝对宏C51编译器提供了一组宏定义来对51系列单片机的code、data、pdata和xdata空间进行绝对寻址。在程序中,用“#includ

11、e”即可使用其中声明的宏来访问绝对地址,包括CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD,具体使用方法参考absacc.h头文件。其中:CBYTE以字节形式对code区寻址;CWORD以字形式对code区寻址;DBYTE以字节形式对data区寻址;DWORD以字形式对data区寻址;XBYTE以字节形式对xdata区寻址;XWORD以字形式对xdata区寻址;PBYTE以字节形式对pdata区寻址;PWORD以字形式对pdata区寻址;(2)_at_关键字可以使用关键字_at_对指定的存储器空间的绝对地址进行访问,一般格式如下:存储器类型 数据

12、类型说明符 变量名 _at_地址常数;其中,存储器类型为C51能识别的数据类型,如省略则按存储器模式规定的默认存储器类型确定变量的存储器区域;数据类型为C51支持的数据类型;地址常数用于指定变量的绝对地址,必须位于有效的存储器空间之内;使用_at_定义的变量必须为全局变量。5C51中的中断函数和一般的函数有什么不同?答:C51编译器允许用C51创建中断服务函数,中断函数是由中断系统自动调用的。中断函数的定义格式为:函数类型 函数名 interrupt n using n其中:interrupt和using为关键字;interrupt后面的n 为中断源的编号,即中断号;using后面的n所选择的

13、寄存器组,取值范围为03。定义中断函数时,using是一个选项,可以省略不用。如果不用using选项,则由编译器选择一个寄存器组作为绝对寄存器组。8051的中断过程通过使用interrupt关键字和中断号(031)来实现,中断号告诉编译器中断函数的入口地址.6C51采用什么形式对绝对地址进行访问?答:绝对地址的访问包括片内RAM、片外RAM及I/O的访问。C51提供了两种比较常用的访问绝对地址的方法。(1)绝对宏C51编译器提供了一组宏定义来对51系列单片机的code、data、pdata和xdata空间进行绝对寻址。在程序中,用“#include”即可使用其中声明的宏来访问绝对地址,包括CB

14、YTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD,具体使用方法参考absacc.h头文件。其中:CBYTE以字节形式对code区寻址;CWORD以字形式对code区寻址;DBYTE以字节形式对data区寻址;DWORD以字形式对data区寻址;XBYTE以字节形式对xdata区寻址;XWORD以字形式对xdata区寻址;PBYTE以字节形式对pdata区寻址;PWORD以字形式对pdata区寻址;如:#include#define PORTA XBYTE0xFFC0/*将PORT定义为外部I/O口,地址为0xFFC0,长度为8位*/#define NR

15、AM DBYTE0x40/*将NRAM定义为片内RAM,地址为40H,长度为8位*/(2)_at_关键字可以使用关键字_at_对指定的存储器空间的绝对地址进行访问,一般格式如下:存储器类型 数据类型说明符 变量名 _at_地址常数;其中,存储器类型为C51能识别的数据类型,如省略则按存储器模式规定的默认存储器类型确定变量的存储器区域;数据类型为C51支持的数据类型;地址常数用于指定变量的绝对地址,必须位于有效的存储器空间之内;使用_at_定义的变量必须为全局变量。7按照给定的数据类型和存储类型,写出下列变量的说明形式(1)在data区定义字符变量val1(2)在idata区定义整型变量val2

16、(3)在xdata区定义无符号字符型数组val34。(4)在xdata区定义一个指向char类型的指针px。(5)定义可位寻址变量flag。(6)定义特殊功能寄存器变量P3。答:(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=0

17、xB0;五、程序设计题设在存储区,有10个数据:99,15,30,13,27,28,7,0,33,67。编写程序,将其按照从大到小的次序排列。并按次序在数码管上显示。为了简化硬件电路,选用译码、显示一体化显示模块。仿真电路如图3-8所示。8.在使用8051的定时器/计数器前,应对它进行初始化,其步骤是什么?答: (1)确定T/C的工作方式编程TMOD寄存器; (2)计算T/C中的计数初值,并装载到TH和TL; (3)T/C在中断方式工作时,须开CPU中断和源中断编程IE寄存器; (4)启动定时器/计数器编程TCON中TR1或TR0位。9.外部中断源初始化步骤是什么?外部中断源初始化2个外部中断源:/INT0中断,外部中断0请求,占用P3.2引脚,其中断请求号为0。/INT1中断,外部中断1请求,占用P3.3引脚,其中断请求号为2。(1)TCO寄存器中的IT0、IT1位(2)IP寄存器中的PX0、PX1位(3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论