从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器。片内程序存储器还分为直接寻址区和间接寻址区。
data:将数据存储在0x00 - 0x7f的128B的RAM空间,可以用acc直接读写,速度最快,生成的代码也最少。
idata:将数据存储在0x00 - 0xff的256B的RAM空间,与data的区别在于访问方式不同,idata数据需要通过间接方式访问。
xdata:将数据存储在外部0x0000 - 0xffff RAM空间,用DPTR访问。
pdata:将数据存储在外部扩展RAM的低256字节空间。
code:将数据存储在ROM区域。
bdata:C51自定义语句,非标准C关键字。主要用于定义8位或以上的位访问。
例如:
1 char bdata MODE;
2
3 sbit MODE_7 = MODE^7;
4 sbit MODE_6 = MODE^6;
5 sbit MODE_5 = MODE^5;
6 sbit MODE_4 = MODE^4;
7 sbit MODE_3 = MODE^3;
8 sbit MODE_2 = MODE^2;
9 sbit MODE_1 = MODE^1;
10 sbit MODE_0 = MODE^0;
关键字:C51 data idata xdata pdata
引用地址:
C51 中data, idata, xdata, pdata, code的作用
推荐阅读最新更新时间:2024-11-13 01:53
C51---2.2 LED闪烁
原理图 mian函数 #include REGX52.H #include INTRINS.H void Delay500ms() //@12.000MHz { unsigned char i, j, k; _nop_(); i = 4; j = 205; k = 187; do { do { while (--k); } while (--j); } while (--i); } void main() { while(1) { P2=0XFE;//1111 1110 Delay500ms(); P2=0XFF;//
[单片机]
基于C51单片机Pl口的矩阵式键盘控制
矩阵式键盘又叫行列式键盘。就是用I/O口线组成行、列结构,按键设置在行列的交点上。在按键较多时多用矩阵式键盘,可以节省I/O口线。例如:占用8个I/O口线的4×4矩阵式结构可以构成16个键的键盘。当有键按下时,要逐行或逐列扫描来判断是哪个按键按下。通常的扫描方式有扫描法和反转法。 1、硬件设计 单片机的Pl口的低4位接矩阵键盘的行线,高4位接矩阵键盘的列线,如下图所示。 2.程序设计 扫描函数的返回值为按键特征码,若无键被按下,返回值为0。程序清单如下:
[单片机]
ARM编译中的RO、RW和ZI DATA区段
ARM程序(指在ARM系统中正在执行的程序,而非保存在ROM中的bin文件)的组成 一个ARM程序包含3部分:RO段,RW段和ZI段 RO是程序中的指令和常量 RW是程序中的已初始化变量 ZI是程序中的未初始化的变量 由以上3点说明可以理解为: RO就是readonly, RW就是read/write, ZI就是zero ARM映像文件的组成 所谓ARM映像文件就是指烧录到ROM中的bin文件,也成为image文件。以下用Image文件来称呼它。 Image文件包含了RO和RW数据。 之所以Image文件不包含ZI数据,是因为ZI数据都是0,没必要包含,只要程序运行之前将ZI数据所在的区域一律清零即可。包含进去反而浪费存储空间。 Q
[单片机]
KEIL编译器C51.EXE的问题
出现如此错误:FATAL ERROR L210: I/O ERROR ON INPUT FILE: EXCEPTION 0021H: PATH OR FILE NOT FOUND. 后来查了查说是MCU内存不够用,辗转之后,发现自己的KEIL没有破解,不能编译大于2K的程序. 重新破译了KEIL 2后,加载它的编译器C51.EXE到新华龙的IDE中就好了. 程序算是编译过去了,发现调试器连不上. 出现提示:The serial adapter must be re-programmed in order to function 意思是串行适配器必须重新改编为适应IDE的函数. 因为调试器能读出来序列号.所以
[单片机]
【C51自学笔记】串口通信+RS-232C接口+ RS-422A/RS-485接口
简介: 计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。 并行通信 串行通信 串行通信的异步通信 异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。 串行通信的传输方向 单工是指数据传输仅能沿一个方向,不能实现反向传输。 半双工是指数据传输可以沿两个方向,但需要分时进行。 全双工是指数据可以同时进行双向传输。 串行
[单片机]
单片机汇编伪指令DATA和EQU的区别
1、EQU 指令用于将一个数值或寄存器名赋给一个指定的符号名。 格式: 符号名 EQU 表达式 符号名 EQU 寄存器名 表达式必须是一个简单再定位表达式。 用 EQU 指令赋值以后的字符名,可以用作数据地址、代码地址、位地址或者直接当做一个立即数使用。 比如: s equ bx+si mov cx, 那么上面两句代码相当于如下指令: mov cx, 2、DATA 指令用于将一个内部 RAM 的地址赋给指定的符号名。 格式: 符号名 DATA 表达式 数值表达式的值在 0-255 之间,表达式必须是一个简单再定位表达式。 比如: TEM DATA 50H tem即是一个地址 DATA(数据地址赋值命
[单片机]
C51全局初始化及精确延时程序
/********************************************************************************************************* * Initialization Program * QiZhao,2007 * All Rights Reserved * File : initial.h * By : QiZhao * Contact : zq1987731@163.com * * Version : V2.
[单片机]