对于C51的变量,我们强调3个概念:变量名、变量值和变量所在的地址。变量值是一个变量的内容,如C51指令“ch1=0x12;”就是将数值0x12赋值给变量ch1,该指令执行后,变量ch1的变量值就是0x12。对MCS-51系列单片机,以单片机的片内RAM单元为例,我们强调了3个概念:片内RAM单元的内容、片内RAM单元的名字和片内RAM单元的地址。指针变量的值是指针(地址)。......
2023-11-17
Keil公司的C51编译器提供通用指针和指定存储区指针两个类型的指针。
1.通用指针
通用指针也称为一般指针。通用指针变量的定义方式和标准C指针变量的定义方式相同。通用指针变量保存在RAM中,占用3个字节:第一个字节是指针变量的存储类型(空间位置),第二个字节是指针(地址)的高字节,第三个字节是指针(地址)低字节,即:
存储类型编码如下:
通用指针可访问MCS-51系列单片机片内RAM空间、片外RAM空间、ROM空间内的任何一个变量。因此,C51库函数多使用通用指针类型。通过这些通用指针,C51库函数可访问片内外RAM空间、ROM空间中的所有数据。定义通用指针变量的语法如下:
数据类型标识符*存储类型标识符指针变量名;
其中,存储类型标识符指的是指针自身的存储位置。若没有说明指针变量的存储类型,则是由C51的存储模式决定,具体可参考5.2.3节的内容。
通用指针的定义举例如下:
(www.chuimin.cn)
2.指定存储区指针
指定存储区指针又称为指定存储类型指针,也称为基于内存的指针。指定存储区指针在指针的定义(声明)中包含一个存储类型标识符,指向一个确定的存储空间。存储类型标识符有data、bdata、idata、pdata、cdata和code;存储空间有片内RAM、片外RAM和ROM,详见表5-2。定义指定存储区指针变量的语法如下:
数据类型标识符存储类型标识符*存储类型标识符指针变量名;
注意:前面的存储类型标识符是说明指针指向的存储空间,后面的存储类型标识符是说明指针自身的存储位置。若没有说明指针变量的存储类型,则由C51的存储模式决定,具体可参考5.2.3节的内容。
指定存储区指针和通用指针的对比如下:
指定存储区指针的定义举例如下:
注意:使用通用指针编译后产生的代码比使用指定存储区指针编译后产生的代码要多得多,执行起来要慢得多。如果优先考虑执行速度,应尽可能使用指定存储区指针,尽可能不用通用指针;如果优先考虑函数的通用性,则应尽可能使用通用指针,不用指定存储区指针。
有关单片机基础及应用的文章
对于C51的变量,我们强调3个概念:变量名、变量值和变量所在的地址。变量值是一个变量的内容,如C51指令“ch1=0x12;”就是将数值0x12赋值给变量ch1,该指令执行后,变量ch1的变量值就是0x12。对MCS-51系列单片机,以单片机的片内RAM单元为例,我们强调了3个概念:片内RAM单元的内容、片内RAM单元的名字和片内RAM单元的地址。指针变量的值是指针(地址)。......
2023-11-17
C51支持的数据类型分为基本数据类型、构造数据类型和指针类型。C51的基本数据类型如表5-1所示,表中下面的5种数据类型是C51有的而标准C没有的。在MCS-51系列单片机中选择合适的数据类型,对提高运行效率具有特殊的意义。如果在编写C51程序时使用大量的、不必要的数据类型变量,就会导致C51编译器相应地增加了所调用的库函数的数量,以处理大量增加的数据类型变量,会使编译后的程序变得过于庞大。......
2023-11-17
2)片外程序存储空间,简称片外ROM。C51的6种存储类型与存储空间的对应关系如表5-2所示。表5-2C51的存储类型与存储空间的对应关系表5-3C51的存储类型及其数据长度和值域当使用存储类型data、bdata定义常量和变量时,C51编译器会将它们定位在片内数据存储空间中,这个存储区根据单片机的型号不同,其长度也不同。整型变量var的存储类型是pdata,C51编译器将该变量定位在片外RAM中,并用指令MOVX@Ri访问。......
2023-11-17
8051单片机的内部结构由运算器、控制器、存储器、数据总线和I/O接口组成。7)中断控制系统 8051单片机拥有5个中断源,两个中断优先级的中断控制系统,以满足控制应用的需要。图3-2 单片机内部振荡图3-3 HMOS8051单片机外部时钟图3-4 CHMOS80C51单片机9)时序定时51单片机共有4个,分别为振荡周期、状态周期、机器周期和指令周期。......
2023-11-04
图8-23电压抖动图图8-24独立式未编码键盘图1.独立式键盘接口及处理程序独立式键盘是各按键相互独立地接通一条输入数据线,如图8-24所示。图8-25行列式键盘的结构及键盘扫描示意图如果把列线接到单片机的输入口,行线接到单片机的输出口,则在单片机的控制下,先使行线D0为低电平,其余7根行线都为高电平,读列线的状态,如果D0、D1、D2、D3都为高电平,则D0这一行没有键闭合。......
2023-11-17
1.门电路、触发器、单稳电路的杭干扰措施1)对信号整形。图10-6不同输入端的处理方法3)触发器的抗干扰措施。同时,触发器输出端引出板外时,必须通过缓冲器隔离,而且以“非”信号传输的抗干扰能力较强。4)单稳电路的抗干扰措施。图10-7晶闸管感性负载开关电路图3.机械触点及交、直流电路的噪声抑制机械触点的抗干扰措施开关、按钮、继电器触点等在操作时,经常会发生抖动,如果不采取措施会造成误动作。......
2023-11-17
1.操作数类型在众多指令中,大多数指令执行时都需要使用操作数,因此就存在怎样寻找操作数的问题。单片机指令系统中的操作数的类型有立即数、寄存器操作数和存储器操作数3种。通常在指令中给出寄存器的名称。存储器操作数存储器操作数是把操作数存放在存储器中,因此在汇编指令中给出的是存储器的地址。2.指令描述约定为便于学习寻址方式和指令,在此先对指令中使用到的一些符号的约定予以说明。用于SJMP和所有条件转移指令。......
2023-11-17
变量的生存期取决于它的存储类型。所谓“存储类型”,是指系统为变量分配的具有某种特性的存储区域。生存期表示了变量存在的时间。一个变量究竟属于哪一种存储方式,并不能仅从其作用域来判断,还应有明确的存储类型说明。在C语言中,函数内部凡未说明存储类型的变量均视为自动变量。静态局部变量始终存在着,也就是说它的生存期为整个源程序生存期。静态局部变量的使用举例。......
2023-10-21
相关推荐