您的位置 首页 被动

C51—运算量(要点:特别功用寄存器变量、位变量

C51就是c语言for51单片机,这里边还是有很多不同的,在c语言里运算量相信都知道那叫一个简单,直接int,float就哦了,当然这里也可以直

C51便是c言语for 51单片机,这儿边仍是有许多不同的,在c言语里运算量信任都知道那叫一个简略,直接int, float就哦了,当然这儿也能够直接int, float,可是他们仍是有不同的,这儿就介绍一下运算量中的不同!,相同的我就直接越过~(决断不说了,不同的关于今后c言语开发51单片机仍是适当有用的,渐渐的就会领会到了~~~~~,尤其是特别功用寄存器变量、位变量、还有肯定地址的拜访!

C51的运算量(只说要点~):

C51中的运算量主要是常量和变量。

1、常量

常量是指在程序履行过程中不能改动的量。在C51中支撑整型常量、浮点型常量、字符型常量和字符串型常量。

1)整型常量

2)浮点型常量

3)字符型常量

4)字符串型常量

2、变量

变量便是在程序运转过程中能够改动的量呗。

一个变量有两部分组成:变量名和变量值。每个变量都有一个变量名,在存储器中占用必定的存储单元,变量的数据类型不同,占用的存储单元数就不同。在存储单元中寄存的内容便是变量值。

1)数据类型说明符

在界说变量时有必要经过数据类型说明符来指明变量的数据类型,指明变量在存储器中占用的字节数。能够使根本数据类型说明符,也能够是组合数据类型说明符,还能够是typedef或许#define界说的类型别号(这儿必定要留意typedef一般用来界说别号!尽量不要用#define啊~~我就不解说了,太专业了~~不过用宏界说就必定要用#define)

例如:

typedef unsigned char uchar; //这个是有;的

typedef unsigned int uint;

或许:

#define uchar unsigned char //这个就没有; 并且它们两个界说相反

#define uint unsigned int

2)变量名

变量名有两种:一般变量和指针变量。他们的区别是指针变量名前面带“*”号。

3)存储品种

存储品种是指变量在程序履行过程中的效果规模。C51变量的存储品种有4种,分别是:主动(auto)、外部(extern)、静态(static)和存储器(register)。

a、auto

当界说它的函数体或许复合句子履行时,C51才为该变量分配内存空间,结束时占用的内存空间开释。主动变量一般分配在内存的仓库空间中。界说变量时,假如缺省存储品种,则默许为此。

b、extern

被定今后分配固定的内存空间,在程序整个履行时间内都有用,知道程序结束时才开释。

c、static

运用static界说的变量成为外部变量,可分为内部静态变量和外部静态变量。在函数体内部界说的静态变量为内部静态变量,它在对应的函数体内有用,一向存在,但在函数体外不行见。这样不只使变量在界说它的函数体外能够被维护,还能够完成当脱离函数体时值不被改动。外部静态变量是在函数体外界说的静态变量,它在程序中一向存在,但在界说的规模之外是不行见的。如在多文件或许多模块处理中(这点很重要,今后会用到许多,尤其是多模块,写大程序有必要具有的),外部静态变量只在文件内部或许模块内部有用。

d、register

它界说的变量寄存在CPU内部的寄存器中,处理速度快,可是数目有限。

4)存储器类型

存储器类型用来指明变量所在的单片机的存储区域状况。类型如下:

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

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

idata:直接寻址拜访的片内RAM,答应拜访悉数片内RAM

pdata:用Ri简练拜访的片外RAM低256B

xdata:用DPTR直接拜访的片外RAM,答应拜访悉数64KB片外RAM

code:程序存储器ROM64KB

留意:界说变量时能够省掉“存储类型”,省掉时C51编译器将按存储形式默许存储器类型。详细的存储状况啊~~一会你就知道了,持续往下看~~哈

例如:

char data var1; //在片内RAM低128B界说用直接寻址方法拜访的自足型变量var1

unsigned char bdata var2; //在片内RAM位寻址区(20H~2FH)单元界说可字节处理和位处理的无符号字符型变量var2

5)特别功用寄存器变量

在51单片机中有许多特别功用寄存器(不过这些有些东西仍是不需求咱们来关怀的~~~由于在调用#include”reg52.h”的时分里边都给你整好了),经过这些特别功用寄存器能够操控51单片机的定时器、计数器、串口、I/0及其他功用部件(这儿很重要的~~~~~~),没一个特别功用寄存器再片内RAM中都对应一个字节单元或许两个字节单元。

在C51中,答应用户对这些特别功用寄存器进行拜访,可是拜访时需求经过sfr或许sfr16类型说明符进行界说,界说是需求指明他们所对应的片内RAM单元的地址。(你过关不必忧虑,直接调用#include”reg52.h”就哦了~)

例如:

sfr PSW=0xd0;

sfr SCON=0x98;

sfr16 DPTR=0x82;

6)位变量

在C51中,答应用户经过位类型符界说位变量。

位类型符有两个:bit和sbit。能够界说两种位变量。

a、bit型位变量

在格局中能够加上各种润饰,可是要留意存储器类型只能是bdata、data、idata,只能是片内RAM的可位寻址区,严格来说只能是bdata。

例如:

bit bdata a1;

b、sbit型位变量

sbit位类型符用于界说在可位寻址字节或许特别功用寄存器中的位,界说时需求指明其位地址,能够使位直接地址,能够是可位寻址变量带位号,也能够是特别功用寄存器名带位号。

例如(这些东西都在#include”reg52.h”中):

sbit OV=0xd2;

sbit CY=0xd7;

unsigned char bdata flag;

sbit flag_0=flag^0; //字节地址与位号之间、特别功用寄存器与位号之间一般用“^”作距离

sfr P1=x090;

sbit P1_1=P1^1;

3、存储形式(个人感觉真的用不到这些东东了,由于你丫的要是嫌小能够换个大的,并且还适当的廉价~~~~,我曾经试过扩展一个RAM和ROM,擦不成啊~~)

C51编译器支撑3种存储形式:SMALL形式、COMPACT形式和LARGE形式。不同的存储形式对变量默许的存储器类型不一样。

1)SMALL形式

SMALL形式成为小编译形式,在SMALL形式下,编译时函数参数以及变量被默许在片内RAM中,存储类型为data。

2)COMPACT形式

COMPACT形式称为紧凑编译形式,在COMPACT形式下,编译时函数参数和变量被默许在片外RAM的低256B空间,存储类型为pdata。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/259675.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部