使用C语言访问51单片机中存储器的核心代码怎么写

使用C语言访问51单片机中存储器的核心代码怎么写

使用C语言访问51单片机中存储器的核心代码怎么写,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

使用C语言访问51单片机中存储器的核心代码怎么写

C语言是什么

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译、处理低级存储器。

使用C语言访问51单片机中存储器

1.头文件

在Keil C51工程中 #include <absacc.h> ,可以直接使用CBYTE, XBYTE, DBYTE, PBYTE

absacc.h 的部分内容如下:

#ifndef__ABSACC_H__#define__ABSACC_H__#defineCBYTE((unsignedcharvolatilecode*)0)#defineDBYTE((unsignedcharvolatiledata*)0)#if!defined(__CX2__)#definePBYTE((unsignedcharvolatilepdata*)0)#endif#defineXBYTE((unsignedcharvolatilexdata*)0)#defineCWORD((unsignedintvolatilecode*)0)#defineDWORD((unsignedintvolatiledata*)0)#if!defined(__CX2__)#definePWORD((unsignedintvolatilepdata*)0)#endif#defineXWORD((unsignedintvolatilexdata*)0)

code data pdata xdata 均为存储器类型,下节将详叙,此处用T替代:

unsigned char volatile T * 为指向存储器T中无符号整型数的指针类型
((unsigned char volatile T * ) 0) 对0做强制类型转换

2.code data pdata xdata

code data pdata xdata均为存储器类型

  • code:用于存储常数和函数,使用16位地址访问,可位于片内或片外

  • ROMdata:用于存储变量,使用8位地址,位于片内RAMp

  • data:用于存储变量,使用8位地址,位于片外RAMx

  • data:用于存储变量,使用16位地址,位于片外RAM

3.CBYTE、DBYTE、PBYTE和XBYTE的区别

注意:以下存储地址范围均指理论上可访问的最大范围,具体操作时需根据存储器大小调整
从存储器类型的区别中可以得出本节四者的区别:

CBYTE

CBYTE 是用于访问代码存储器的,即ROM部分。

rval=CBYTE[adress];//访问到代码存储器中的内容

其中代码存储器地址(adress)范围是 0X0000--0xFFFF ,大小为16K。

DBYTE

DBYTE 是用于访问片内数据存储器的,即片内RAM部分,

DBYTE[adress]=0XFB;//写数据rval=DBYTE[adress];//读数据

其中片内存储器地址(adress)范围是 0x00--0xFF ,大小为256byte。

XBYTE

XBYTE 是用于访问片外数据存储器的,即片外RAM部分,但是XBYTE只能读数据不能写数据到片外RAM。

rval=XBYTE[adress];//读数据

片外数据存储器的写可以使用下面这条语句:

charxdatax1_at_0x30;//x1为char型全局变量,地址位于xdata区地址0x30x1=0x01;//给片外存储器地址赋值

地址范围为 0x0000--0xFFFF,大小为16K。

PBYTE

PBYTE也用来访问扩展ram,但只能访问开始的256字节。

4.CWORD、XWORD、DWORD和PWORD

上节所述四者为单字节访问,对应双字节访问使用CWORD、DWORD、XWORD和PWORD。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注恰卡编程网行业资讯频道,感谢您对恰卡编程网的支持。

发布于 2022-01-17 22:03:48
收藏
分享
海报
0 条评论
23
上一篇:如何分析Javascript类型转换 下一篇:C语言的基本编写规范是什么
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码