第3章C51程序设计基础.ppt

第3章C51程序设计基础

内容提要 C51程序层次分析 标示符+运算符------------------------字+词 表达式-----------------------------------短语 语句------------------------------------一句话 函数--------------------------------------段落 文件---------------------------------------文章 系统----------------------------------------书 * 非本征库函数 C51提供了丰富的非本征库函数资源,包括大量的关于I/O操作、内存分配、字符串操作、数据类型转换、数学计算等函数库。它们是以执行代码的形式出现,供用户在连接定位时用。在用预处理器命令#include包含相应的头文件后,就可以在程序中使用这些函数。 * 非本征库函数 1. 专用寄存器包含文件 REG51.h 2. 绝对地址包含文件 absacc.h 3. 动态内存分配函数位于stdlib.h中 4. 缓冲区处理函数位于“string.h”中 5. 输入输出流函数位于“stdio.h”中 6. 算数运算函数位于math.h * 绝对地址包含文件absacc.h 用预处理器伪指令#define为各空间的绝对地址定义宏数组名如下: #define CBYTE((unsigned char*)0x500000L) #define DBYTE((unsigned char*)0x400000L) #define PBYTE((unsigned char*)0x300000L) #define XBYTE((unsigned char*)0x200000L) /*code空间*/ /*data空间*/ /*pdata空间*/ /*xdata空间*/ 以上存取对象是char类型字节 * 绝对地址包含文件absacc.h #define CWORD((unsigned char*)0x500000L) #define DWORD ((unsigned char*)0x400000L) #define PWORD ((unsigned char*)0x300000L) #define XWORD ((unsigned char*)0x200000L) 存取对象是int类型字 * 绝对地址包含文件absacc.h 因此对于绝对地址空间的存储器存取可以用指定下标的抽象数组来实现。 char类型: CBYTE[i]、DBYTE[i]、PBYTE[i]、XBYTE[i] int类型: CWORD[i]、DWORD [i]、PWORD [i]、XWORD [i] * 绝对地址包含文件absacc.h XBYTE[0x8700]表示xdata空间绝对地址8700H处的字节对象。 DBYTE[0x10] 表示data空间绝对地址10H处的字节对象 a= DBYTE[0x10] b= XBYTE[0x8700] XWORD [0x0000]=0xAABB; XBYTE [0x0002]=0xAA; * 2.4 存储器和并行I/O绝对地址的访问 包括:片内RAM、片外RAM及I/O口 可以有三种方式: 1、通过宏定义 2、通过指针 3、_at_ * 端口地址8700H * 1、通过宏定义 用#includeabsacc.h头文件可使用其中声明的宏来访问绝对地址。 DBYTE 以字节形式对data区寻址; ? DWORD 以字形式对data区寻址; ? XBYTE 以字节形式对xdata区寻址; ? XWORD 以字形式对xdata区寻址; ? CBYTE 以字节形式对code区寻址; ? CWORD 以字形式对code区寻址; ? PBYTE 以字节形式对pdata区寻址; ? PWORD 以字形式对pdata区寻址。 * #includeabsacc.h #define PORTA XBYTE[0x1000] #include absacc.h #define PORTA XBYTE[0x1000] #define NRAM DBYTE[0x40] void main( ) { NRAM=PORTA; while(1); } /*将PORTA定义为外部I/O口,地址为0x1000,8位*/ #define NRAM DBYTE[0x40] /*将NRAM定义为片内RAM,

文档评论(0)

1亿VIP精品文档

相关文档