keil C51 指针总结】的更多相关文章

变量就是一种在程序执行过程中其值能不断变化的量.要在程序中使用变量必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间.定义一个变量的格式如下: [存储种类] 数据类型 [存储器类型] 变量名表 在定义格式中除了数据类型和变量名表是必要的,其它都是可选项.存储种类有四种:自动(auto).外部(extern).静态(static)和寄存器(register),缺省类型为自动(auto).这些存储种类的具体含义和使用方法,将在第七课<变量的存储>中进…
深入理解并应用C51对标准ANSIC的扩展是学习C51的关键之一.因为大多数扩展功能都是直接针对8051系列CPU硬件的.大致有以下8类: 8051存储类型及存储区域 存储模式 存储器类型声明 变量类型声明 位变量与位寻址 特殊功能寄存器(SFR) C51指针 函数属性 具体说明如下   第一节 Keil C51扩展关键字 C51 V4.0版本有以下扩展关键字(共19个): _at_ idata sfr16 alien interrupt small bdata large _task_ Cod…
第一章 Keil C51开发系统基本知识 第一节 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上.结构性.可读性.可维护性上有明显的优势,因而易学易用.用过汇编语言后再使用C来开发,体会更加深刻.Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面.另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑…
函数指针是C语言中几个难点之一.由于8051的C编译器的独特要求,函数指针和再入函数有更多的挑战需要克服.主要由于函数变量的传递.典型的(绝大部分8051芯片)函数变量通过堆栈的入栈和出栈命令来传递.因为8051只有有限的堆栈空间(128字节或更少的64字节),函数变量必须通过不同的方式进行传递.8051的PL/M-51编译器,介绍在固定的存储空间存储变量的方式.当使用连接器时,程序建立一个调用树,计算出函数变量的互斥空间,然后覆盖它们.这就是连接器的“OVERLAY”指令.因为PL/M-51不…
函数指针在C语言中应用较为灵活.在单片机系统中,嵌入式操作系统.文件系统和网络协议栈等一些较为复杂的应用都大量地使用了函数指针.Keil公司推出的C51编译器是事实上80C51 C编程的工业标准,它针对8051系列CPU硬件在标准ANSI C的基础上进行了扩展:但由于编译器及8051体系结构的限制,造成了在使用函数指针时有很多与ANSI C不同的地方.下面举例说明在不同的情形下函数指针的使用.以下代码均在Keil μVision3.v8.08 C51.默认优化等级的开发环境下验证通过. 1.指向…
Keil C是非常优秀的C51编译器,可能是最好的C51编译器,提供各种优化模式,对变量的优化和地址安排做得非常好.这是用C语言写代码的好处之一,如果用汇编写,得费一大番功夫给各个变量安排内存物理地址,还得时刻记住哪些地址的内存单元是已经分配了,新增加的变量就不能占用那些已经分配了的单元,以免产生内存交叠冲突和溢出.我一直非常信赖Keil C51的编译结果,在我的印象里,它对内存的分配是完美的,只要代码用它编译时没有报告任何warning和error,代码运行时不可能内存冲突或溢出的现象. 但,…
指针是C语言中比较难的一个内容,Keil C51在指针方面有和标准C不一样的地方,今天看了一些资料学习了一下Keil C51 中指针的使用. keil51的指针,包含两种指针:普通指针,兼容标准C:内存特殊指针 1 普通指针 char * ptr; //指针占3字节,第一字节是标识存储类型,第二字节是存储地址高位字节,第三字节是低位字节 char * xdate ptr; //指针存储在片外,xdate 是修饰ptr的 char * idate ptr; //指针存储在片内,指针指向的数据可以是…
摘要:散列(hash)是一种重要的存储方法,也是一种常见的查找方法.它是指在记录的存储位置和它的关键字之间建立一个确定的对应关系.本文以射频卡门禁控制器为例,说明用射频卡卡号作为关键字,用Hash查找法确定此卡能否开门,并给出对应的Keil C51程序. 单片机应用系统中,经常要涉及到数据的存储和查找.以射频卡门禁系统为例,见图1.系统由51系列单片机.射频卡(RF卡)读卡电路.存储单元24C256.继电器等部分组成.其基本原理为:用户刷卡后,RF卡读卡电路读出卡号,通过I/O口线送入单片机.单…
第一节 绝对地址访问C51提供了三种访问绝对地址的方法: 1. 绝对宏:在程序中,用“#include”即可使用其中定义的宏来访问绝对地址,包括:CBYTE.XBYTE.PWORD.DBYTE.CWORD.XWORD.PBYTE.DWORD,具体使用可看一看absacc.h便知. 例如: rval=CBYTE[0x0002]; //指向程序存贮器的0002h地址 rval=XWORD[0x0002]; //指向外RAM的0004h地址  2. _at_关键字直接在数据定义后加上_at_ cons…
引言 8051内核单片机是一种通用单片机,在国内占有较大的市场份额.在将C语言用于51内核单片机的研究方面,Keil公司做得最为成功.由于51内核单片机的存储结构的特殊性,Keil C51中变量的使用与标准C有所不同.正确地使用变量,有利于获得高效的目标代码.下面详细介绍Keil C51中变量的使用方法. 1 CPU存储结构与变量的关系 变量都需要有存储空间,存储空间的不同使得变量使用时的工作效率也不同. 标准C的典型运行环境是8086(含IA-32系列)内核,其存储结构是CPU内部有寄存器,外…