网站底部有很多图标个体工商户查询
- 作者: 五速梦信息网
- 时间: 2026年04月20日 08:11
当前位置: 首页 > news >正文
网站底部有很多图标,个体工商户查询,在什么网站上做自媒体,青岛做网站公司排名C51语言 本文主要涉及C51语言的一些基本知识#xff0c;比如C51语言的数据类型以及存储类型以及一些基本运算。 文章目录 C51语言一、 C51与标准C的比较二、 C51语言中的数据类型与存储类型2.1、C51的扩展数据类型2.2、数据存储类型 三、 C51的基本运算3.1 算术运算符3.2 逻辑…C51语言 本文主要涉及C51语言的一些基本知识比如C51语言的数据类型以及存储类型以及一些基本运算。 文章目录 C51语言一、 C51与标准C的比较二、 C51语言中的数据类型与存储类型2.1、C51的扩展数据类型2.2、数据存储类型 三、 C51的基本运算3.1 算术运算符3.2 逻辑运算符3.3 关系运算符3.4 位运算3.5 指针和取地址运算符 一、 C51与标准C的比较
C51的基本语法与标准C相同C51在标准C的基础上进行了适合于51系列单片机硬件的扩展。 深入理解Keil C51对标准C的扩展部分以及不同之处是掌握C51语言的关键之一。
C51与标准C的主要区别如下 1库函数的不同。 2数据类型有一定的区别。 3C51的变量存储模式与标准C中的变量存储模式数据不一样。 4数据存储类型的不同。 5标准C语言没有处理单片机中断的定义。 6C51语言与标准C语言的输入/输出处理不一样。 7头文件的不同。 8程序结构的差异。
但是从数据运算操作、程序控制语句以及函数的使用上来说Keil C51与标准C几乎没有什么明显的差别。
二、 C51语言中的数据类型与存储类型
Keil C51支持的基本数据类型如表3-1所示。针对AT89S51单片机的硬件特点C51在标准C的基础上扩展了4种数据类型表3-1中最后4行。
注意扩展的4种数据类型不能使用指针对它们存取。
2.1、C51的扩展数据类型
对扩展的4种数据类型说明 1位变量bit bit的值可以是1true, 也可以是0false
2特殊功能寄存器sfr
特殊功能寄存器分布在片内数据存储区的地址单元80H~FFH之间“sfr” 数据类型占用一个内存单元。利用它可以访问单片机内部的所有特殊功能寄存器。 例如sfr P10x90
3特殊功能寄存器sfr16
“sfr16”数据类型占两个内存单元。它用于操作占两个字节的特殊功能寄存器。 例如 “sfr16 DPTR0x82”语句定义了片内16位数据指针寄存器DPTR其低8位字节地址为82H高8位字节地址为83H。
4特殊功能位 sbit
sbit—片内特殊功能寄存器的可寻址位。
例如 sfr PSW0xd0 /定义PSW寄存器地址为0xd0/ sbit PSW^2 0xd2 /定义OV位为PSW.2/ 符号“”前是特殊功能寄存器的名字“”的后面数字是特殊功能寄存器可寻址位在寄存器中的位置取值必须是0~7。
注意不要把bit与sbit混淆。 bit是定义普通的位变量值只能是二进制的0或1。而sbit定义的是特殊功能寄存器的可寻址位它的值是可进行位寻址的特殊功能寄存器的某位的绝对地址。
2.2、数据存储类型
51单片机有片内、外数据存储区还有程序存储区。51单片机片内的数据存储区是可读写的51单片机的衍生系列最多可有256个字节的内部数据存储区其中低128字节可直接寻址高128字节80HFFH只能间接寻址从20H开始的16字节可位寻址。
程序存储区只能读不能写可能在51单片机内部或者外部或者外部和内部都有由51单片机的硬件决定。
内部数据存储区可分为3个不同的数据存储类型data、idata和bdata。
访问片外数据存储区比访问片内数据存储区慢C51提供两种不同数据存储类型xdata和pdata来访问片外数据存储区。 下面对表3-2中的各种存储区作以说明。
1DATA区。 寻址是最快的应该把经常使用的变量放在DATA区但是DATA区的存储空间是有限的DATA区除了包含程序变量外还包含了堆栈和寄存器组。可直接寻址。
声明举例如下
unsigned char data system_status0;unsigned int data unit_id[8];char data inp_string[20]
另外当内部堆栈溢出的时候程序会莫名其妙地复位。这是因为51单片机没有报错的机制堆栈的溢出只能以这种方式表示因此要留有较大的堆栈空间来防止堆栈溢出。
2BDATA区。 是DATA中的位寻址区在这个区中声明变量就可进行位寻址。BDATA区声明中的存储类型标识符为bdata指的是内部RAM可位寻址的16字节存储区字节地址为20H2FH中的128个位。
下面是在BDATA区中声明的位变量和使用位变量的例子:
unsigned char bdata status_byte;unsigned int bdata status_word;sbit stat_flag status_byte^4;if(status_word^15) { …… } stat_flag1; C51编译器不允许在BDATA区中声明float和double型变量。
3IDATA区。 IDATA区使用寄存器作为指针来进行间接寻址常用来存放使用比较频繁的变量。与外部存储器寻址相比它的指令执行周期和代码长度相对较短。指的是片内RAM的256字节的存储区只能间接寻址速度比直接寻址慢。
声明举例如下
unsigned char idata system_status0;unsigned int idata unit_id[8];char idata inp_string[16]float idata out_value;
4PDATA区和XDATA区。 PDATA区和XDATA区位于片外存储区PDATA区和XDATA区声明中的存储类型标识符分别为pdata和xdata。
PDATA区只有256字节仅指定256字节的外部数据存储区。但XDATA区最多可达64KB对应的xdata存储类型标识符可以指定外部数据区64KB内的任何地址。 对PDATA区的寻址要比对XDATA区寻址快因为对PDATA区寻址只需要装入8位地址而对XDATA区寻址要装入16位地址所以要尽量把外部数据存储在PDATA区中。
对PDATA区和XDATA区的声明举例如下
unsigned char xdata system_status0;unsigned int pdata unit_id[8];char xdata inp_string[16]float pdata out_value;
5程序存储区CODE。 程序存储区CODE声明的标识符为code储存的数据是不可改变的。在C51编译器中可以用存储区类型标识符code来访问程序存储区。 声明举例如下
unsigned char code a[ ] {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}; 三、 C51的基本运算
C51语言的基本运算与标准C类似主要包括算术运算、关系运算、逻辑运算、位运算和赋值运算及其表达式等。
3.1 算术运算符
算术运算的算术运算符及其说明如表3-4所示。
表3-4中的自增和自减运算符是使变量自动加1或减1自增和自减运算符放在变量前和变量之后是不同的。 例如 i–i在使用i之前先使i值加减1。 ii–在使用i之后再使i值加减1。 例如若i4则执行xi时先使i加1再引用结果即x5运算结果为i5x5。 再如若i4则执行xi时先引用i值即x4再使i加1运算结果为i5x4。 3.2 逻辑运算符
逻辑运算符及其说明如表3-5所示。
3.3 关系运算符
关系运算符就是判断两个数之间的关系。关系运算符及其说明如表3-6所示。
3.4 位运算
位运算符及其说明如表3-7所示
3.5 指针和取地址运算符 取内容和取地址的一般形式分别为
变量*指针变量 指针变量目标变量
取内容运算是将指针变量所指向的目标变量的值赋给左边的变量取地址运算是将目标变量的地址赋给左边的变量。 注意指针变量中只能存放地址也就是指针型数据一般情况下不要将非指针类型的数据赋值给一个指针变量。
- 上一篇: 网站底部有很多图标wordpress的开发文档
- 下一篇: 网站底部怎么做淄博外贸网站哪家好
相关文章
-
网站底部有很多图标wordpress的开发文档
网站底部有很多图标wordpress的开发文档
- 技术栈
- 2026年04月20日
-
网站底部悬浮网站前台模块是什么
网站底部悬浮网站前台模块是什么
- 技术栈
- 2026年04月20日
-
网站底部图片代码专业的网站设计公司
网站底部图片代码专业的网站设计公司
- 技术栈
- 2026年04月20日
-
网站底部怎么做淄博外贸网站哪家好
网站底部怎么做淄博外贸网站哪家好
- 技术栈
- 2026年04月20日
-
网站底部制作简述建设网站的基本流程
网站底部制作简述建设网站的基本流程
- 技术栈
- 2026年04月20日
-
网站点击可以做视频推广的网站有哪些
网站点击可以做视频推广的网站有哪些
- 技术栈
- 2026年04月20日






