搜索
热门关键词:
NFC
ST
瑞萨
Intersil
吉时利
手机版
官方微博
微信公众号
登录
|
免费注册
首页
新闻
新品
文章
下载
电路
问答
视频
职场
杂谈
会展
工具
博客
论坛
在线研讨会
技术频道:
单片机/处理器
FPGA
软件/编程
电源技术
模拟电子
PCB设计
测试测量
MEMS
系统设计
无源/分立器件
音频/视频/显示
应用频道:
消费电子
工业/测控
汽车电子
通信/网络
医疗电子
机器人
当前位置:
EEChina首页
›
论坛
›
单片机/处理器
返回列表
查看:
11356
|
回复:
8
[提问]
KEIL中关于DBYTE
[复制链接]
左左
左左
当前离线
积分
9301
发表于 2010-10-28 01:32:16
|
显示全部楼层
|
阅读模式
贸泽电子有奖问答视频,回答正确发放10元微信红包
关键词:
DBYTE
,
Keil
10
积分
这是KEIL C中一个绝对地址宏指令DBYTE的讲解:
DBYTE[address]
说明:在8051内部数据存储器里,读取一个字节的内容
自变量:内部数据存储器的地址(0~0xff)
定义:#define DBYTE((unsigned char volatile data *)0)
例子代码:
#include "absacc.h"
void IRamSet (unsigned char value);
void Main(void)
{
char val = 0
IRamSet (0xaa);
val = DBYTE [0x0032];
DBYTE [0x0032]—0x1b;
}
unsigned char idata address _at_ 0x20; // 这句定义是什么意思呢?
void IRamSet (unsigned char value)
{
unsigned char idata *index = &address;
unsigned char i;
for (i = 0;i < (0x7f —0x20+0x01);i++) // 这个循环的限制条件是什么意思呢?
{
*index = value;
index ++;
}
}
想请教下,这个程序的大概意思是什么?以及帮我解答下程序中的两个问题(已经注释出来了)
最佳答案
xyj
查看完整内容
没看明白。。 看看你包含的头文件和处理器的说明吧。
相关文章
•
如何快速、简单地迁移Keil MDK工程项目到其他开发工具
•
【教程9】疯壳·人形街舞机器人-整机代码
•
MDK-ARM Version 5.26下载地址
•
最新版Keil MDK下载
•
keil 中常见的几种警告,你遇到过几个?
•
有关Keil软件仿真的51单片机串口调试技巧
•
keil 中常见的几种警告
•
【Proteus学习之路】序列之2:keil和proteus约会了,你还在等什么?
•
【Proteus学习之路】序列之5:单灯闪烁
•
Keil uVision5、RealView MDK、Keil C51之间的关系
回复
举报
xyj
xyj
当前离线
积分
22712
发表于 2010-10-28 01:32:17
|
显示全部楼层
没看明白。。
看看你包含的头文件和处理器的说明吧。
评分
参与人数
1
积分
+4
收起
理由
左左
+ 4
查看全部评分
回复
举报
老郭
老郭
当前离线
积分
867442
发表于 2010-11-1 22:50:53
|
显示全部楼层
解决了吗?
回复
举报
左左
左左
当前离线
积分
9301
楼主
|
发表于 2010-11-2 10:02:22
|
显示全部楼层
没有 没人回答呀 正纠结着呢……
回复
举报
suecollege
suecollege
当前离线
积分
750
发表于 2010-11-2 19:25:07
|
显示全部楼层
长定义地址吧,怎么for里面会有那样的语句啊
评分
参与人数
1
积分
+4
收起
理由
左左
+ 4
查看全部评分
回复
举报
左左
左左
当前离线
积分
9301
楼主
|
发表于 2010-11-2 21:28:57
|
显示全部楼层
恩 是呀 我看的时候也不懂 ……
回复
5楼
suecollege
:
回复
举报
左左
左左
当前离线
积分
9301
楼主
|
发表于 2010-11-2 21:30:56
|
显示全部楼层
在Keil C51标准库ABSACC.H中定义了一些宏,利用这些宏我们以绝对地址方式访问51的存储器。这几个宏分别是:
#define CBYTE ((unsigned char volatile code *) 0)
#define DBYTE ((unsigned char volatile data *) 0)
#define PBYTE ((unsigned char volatile pdata *) 0)
#define XBYTE ((unsigned char volatile xdata *) 0)
#define CWORD ((unsigned int volatile code *) 0)
#define DWORD ((unsigned int volatile data *) 0)
#define PWORD ((unsigned int volatile pdata *) 0)
#define XWORD ((unsigned int volatile xdata *) 0)
以DBYTE为例,((unsigned char volatile data *) 0)定义了一个值为零的指针,该指针指向data内部RAM存储区的一个易变无符号单字节变量。
当我们以DBYTE[0x20]这样类似于数组的方式使用它时,根据C语言中对指针索引的解释方式,它访问的是*(((unsigned char volatile data *) 0) + 0x20),简化为*(0 + 0x20),即*(0x20),就是data内部RAM存储区0x20地址处的单字节变量。
?WORD宏和?BYTE的区别在于起始地址。以DWORD为例,如果我们访问DWORD[0x20],由于unsigned int在C51中为两字节长,因此DWORD[0x20]其实访问的是data存储区0x40地址开始的两字节无符号整形变量。
code/data/pdata/xdata在C51中分别代表代码区/内部RAM/按页访问的外部RAM/外部RAM四种存储区访问方式。
这是另一个论坛中对我的解答
回复
举报
wyoh
wyoh
当前离线
积分
11
发表于 2010-12-23 18:06:57
|
显示全部楼层
谢谢分享
回复
举报
孤独小行星
孤独小行星
当前离线
积分
19
发表于 2011-3-26 16:10:50
|
显示全部楼层
没看明白!
回复
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
电工杂谈
MEMS
工业/测控
会展活动
汽车电子
职业发展
电源技术
测试测量
FPGA/CPLD
关于我们
-
服务条款
-
使用指南
-
站点地图
-
友情链接
-
联系我们
电子工程网
© 版权所有
京ICP备16069177号
| 京公网安备11010502021702
快速回复
返回顶部
返回列表