搜档网
当前位置:搜档网 › 单片机原理及应用与C51程序设计(第三版)第4章作业

单片机原理及应用与C51程序设计(第三版)第4章作业

单片机原理及应用与C51程序设计(第三版)第4章作业
单片机原理及应用与C51程序设计(第三版)第4章作业

习题

1. C51特有的数据类型有哪些?

答:C51特有的数据类型有特殊功能寄存器型和位类型。

2. C51中的存储器类型有几种,它们分别表示的存储器区域是什么?

答:C51中的存储器类型有6种,分别如下:

data:直接寻址的片内RAM低128B,访问速度快

bdata:片内RAM的可位寻址区(20H~2FH),允许字节和位混合访问

idata:间接寻址访问的片内RAM,允许访问全部片内RAM

pdata:用Ri间接访问的片外RAM低256B

xdata:用DPTR间接访问的片外RAM,允许访问全部64KB片外RAM

code:程序存储器ROM 64KB空间

3. 在C51中,bit位与sbit位有什么区别?

答:bit位类型符用于定义一般的位变量。存储器类型只能是bdata、data、idata,只能是片内RAM的可位寻址区,严格来说只能是bdata。

sbit位类型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时需指明其位地址,可以是位直接地址,可以是可位寻址变量带位号,也可以是特殊功能寄存器名带位号。

4. 位变量和特殊功能寄存器变量有什么作用?

答:特殊功能寄存器变量是C51中特有的一种变量。通过特殊功能寄存器变量可访问MCS-51系列单片机的特殊功能寄存器。访问时需通过sfr或sfr16类型说明符进行定义,定义时需指明它们所对应的特殊功能寄存器的地址。

位变量也是C51中的一种特有变量。通过位变量可访问MCS-51系列单片机的可位寻址位。使用时需用位类型符进行定义。位类型符有两个:bit和sbit。可以定义两种位变量。

5. 在C51中,通过绝对地址来访问的存储器有几种?

答:通过绝对地址来访问存储器有三种方法:1. 使用C51运行库中预定义宏。2. 通过指针访问。3. 使用C51扩展关键字_at_

6. 什么是存储模式,存储模式和存储器类型有什么关系?

答:C51中有三种存储模式:SMALL模式、COMPACT模式和LARGE模式。不同的存储模式对变量默认的存储器类型不一样。

(1) SMALL模式。SMALL模式称为小编译模式,在SMALL模式下,编译时变量被默认在片内RAM中,存储器类型为data。

(2) COMPACT模式。COMPACT模式称为紧凑编译模式,在COMPACT模式下,编译时变量被默认在片外RAM的低256B空间,存储器类型为pdata。

(3) LARGE模式。LARGE模式称为大编译模式,在LARGE模式下,编译时变量被默认在片外RAM的64B空间,存储器类型为xdata。

在程序中变量存储模式的指定通过#pragma预处理命令来实现。如果没有指定,则系统都隐含为SMALL模式。

错误!使用“开始”选项卡将标题1,部分标题 1 应用于要在此处显示的文字。

2

7. 在C51中,修饰符using n有什么作用?

答:using n修饰符,用于指定本函数内部使用的工作寄存器组,其中n的取值为0~3,表示寄存器组号。

8. 在C51中,中断函数与一般函数有什么不同?

答:中断函数在定义时后面带interrupt m修饰符,m的取值为0~31,对应的中断情况如下:0——外部中断0,1——定时/计数器T0,2——外部中断1,3——定时/计数器T1,4——串行口中断,5——定时/计数器T2,其他值预留。

编写MCS-51中断函数需要注意如下几点。

(1) 中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。

(2) 中断函数没有返回值。

(3) 在任何情况下都不能直接调用中断函数

(4) 如果在中断函数中调用了其他函数,则被调用函数所使用的寄存器必须与中断函数相同,否则会产生不正确的结果。

(5) C51编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容。

(6) C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即interrupt 后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。

(7) 中断函数最好写在文件的尾部,并且禁止使用extern存储类型说明。防止其他程序调用。

9. 按给定的存储类型和数据类型,写出下列变量的说明形式。

(1) 在data区定义字符变量val1。

char data val1;

(2) 在idata区定义整型变量val2。

int idata val2;

(3) 在xdata区定义无符号字符型数组val3[4]。

unsigned char xdata val3[4];

(4) 在xdata区定义一个指向char类型的指针px。

char xdata *px;

(5) 定义可寻址位变量flag。

bit flag;

(6) 定义特殊功能寄存器变量P3。

sfr P3=0xa0;

(7) 定义特殊功能寄存器变量SCON。

sfr SCON=0x98;

(8) 定义16位的特殊功能寄存器T0。

sfr16 T0=0x8a;

相关主题