社区
单片机/工控
帖子详情
地址怎么得到?
qxb
2007-03-27 02:35:05
#define U1RBR (*((volatile unsigned char *) 0xE0010000))
volatile unsigned char *ptr;
ptr =&U1RBR;
指针得到的不是0xE0010000
怎么才能得到 0xE0010000 这个地址呢?
...全文
576
21
打赏
收藏
地址怎么得到?
#define U1RBR (*((volatile unsigned char *) 0xE0010000)) volatile unsigned char *ptr; ptr =&U1RBR; 指针得到的不是0xE0010000 怎么才能得到 0xE0010000 这个地址呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
somosky
2007-04-01
打赏
举报
回复
使用强制类型转换就可以得到指针了。
#define U1RBR (*((volatile unsigned char *) 0xE0010000))
volatile unsigned char *ptr;
ptr =&U1RBR;
LZ的这段程序貌似有错。。。
改成:
#define U1RBR ((volatile unsigned char *)0xE0010000))
volatile unsigned char *ptr;
ptr = U1RBR;
或者:
#define U1RBR (*((volatile unsigned char *) 0xE0010000))
volatile unsigned char *ptr;
ptr =*U1RBR;
试试看!
tyj_3
2007-03-30
打赏
举报
回复
楼上,你再仔细分析一下,如果U1RBR 的值就是0xE0010000,还能对U1RBR赋值吗!
darkrainbow
2007-03-30
打赏
举报
回复
怎么才能得到 0xE0010000 这个地址呢?
U1RBR 的值就是 0xE0010000 了 直接 ptr =U1RBR; 就行了....
tyj_3
2007-03-30
打赏
举报
回复
ptr =&U1RBR;
U1RBR=0x07;
然后看看*ptr的值是什么吧
tyj_3
2007-03-30
打赏
举报
回复
#define U1RBR (*((volatile unsigned char *) 0xE0010000))
volatile unsigned char *ptr;
ptr =&U1RBR;
ptr = U1RBR;为什么报错,因为U1RBR是一个volatile unsigned char类型的数据,而ptr为一指针变量,把一个字符型数据赋给指针类型不匹配,所以报错.你可以改为ptr =(volatile unsigned char *)U1RBR;当然这就与你使用它的目的就不同了.在ADS1.2下,ptr =&U1RBR;使用是没有错的
lbing7
2007-03-28
打赏
举报
回复
LZ这个就用宏来做..
#define INITURLT(ARG)\
{\
ARG = 0x07;\
}
试试这种技巧.呵呵
梅名智
2007-03-28
打赏
举报
回复
在
Keil里好这句好像必须加
#define U1RBR (*((volatile unsigned char *) 0xE0010000))
属于那个区域
Xdata,data,pdata,
wantieee
2007-03-28
打赏
举报
回复
丢!没仔细看!
弹片机的指针比较麻烦,和PC不一样
不同“类型“有不同的字节存储!
========================================================
lbing7(楼主,别再给我非专家分!谢谢合作)
通用指针为三个字节:
第一个字节为:指向的区域类型.00为IDATA 01为XDATA,FF为CODE
后面两个为地址
在我没有确定PTR的类型的时候,默认来处理是错误的!!
PTR得不到E001,只得到了00
指针相同的类型后,就OK了!!
============================================================
正解!
wantieee
2007-03-28
打赏
举报
回复
有必要这么麻烦吗???????????????
volatile unsigned char *ptr = (volatile unsigned char *) 0xE0010000;
不就可以了!
qxb
2007-03-28
打赏
举报
回复
谢谢大家回答 我就是 想的到 U0IIR 的地址 0xE000C008 但是 我的ads1.2 得不到值 得到的是个@ 就是 (0x40)
例如 已经定义好了
#define U0IIR (*((volatile unsigned char *) 0xE000C008))
和
#define U1IIR (*((volatile unsigned char *) 0xE0010008))
等等
如何写一个函数 让多个串口初始化都调用一个函数呢?
init()
{
U0IIR = 0x07;
U1IIR = 0x07;
}这样可行但是
我想实现写成
init( 传递地址 )
{
传递地址 = 0x07;
}
在多串口时 不用重复的都写出来.
我问过见
http://community.csdn.net/Expert/topic/5414/5414691.xml?temp=2.965945E-02
lbing7
2007-03-27
打赏
举报
回复
我和楼主的平台不一样哈...
所以,我刚刚说让LZ关注一下他的平台,而且再看看编译器的文档..
yzx1983
2007-03-27
打赏
举报
回复
能不能解释得再详细一点……
比如“第一个字节”,是从低位地址开始数还是从高位地址开始数
“通用指针是3字节”,那对于一个32位指针变量赋值,高8位总是为0 ?
如何确定PTR的类型?确定后可以得到E0010000?这不是4字节么?
lbing7
2007-03-27
打赏
举报
回复
yzx1983(捕风捉影) ( ) 信誉:100 Blog 2007-03-27 17:15:54 得分: 0
顺便问一下,什么叫“必须指定指针指向区域方能正确得到地址”?
这个就跟具体的环境有在KEIL C51中,
通用指针为三个字节:
第一个字节为:指向的区域类型.00为IDATA 01为XDATA,FF为CODE
后面两个为地址
在我没有确定PTR的类型的时候,默认来处理是错误的!!
PTR得不到E001,只得到了00
指针相同的类型后,就OK了!!
yzx1983
2007-03-27
打赏
举报
回复
顺便问一下,什么叫“必须指定指针指向区域方能正确得到地址”?
如果楼主没有得到0xe0010000,也许跟这个有点关系。
yzx1983
2007-03-27
打赏
举报
回复
这个还是可以解释的嘛
注意这个定义
#define U1RBR (*((volatile unsigned char *) 0xE0010000))
它定义的U1RBR并不是一个强制类型转换的指针,而是表示 一个强制类型转换指针所指向的地址的值 的表达式(注意那个星号哦),那么对这个表达式取地址,取出来的结果是0xE0010000,也是可以理解的……
lbing7
2007-03-27
打赏
举报
回复
ADS1.2是什么单片机的开发平台?
那试试看直接初始化看看?
volatile unsigned char *ptr = 0xE0010000;
要不你再看看你编译器的文档...
qxb
2007-03-27
打赏
举报
回复
我是ads1.2 不行
lbing7
2007-03-27
打赏
举报
回复
#define U1RBR (*((volatile unsigned char xdata *) 0xE001))
void main()
{
volatile unsigned char xdata* ptr = NULL;
ptr = &U1RBR;
(*ptr)++;
*ptr = U1RBR + 1;
while(1)
{
;
}
}
晕哈,在KEIL下,必须指定指针指向区域方能正确得到地址.
qxb
2007-03-27
打赏
举报
回复
我是ads1.2
如果
ptr =U1RBR;
提示
implicit cast of non-0 int to pointer
如果
ptr =&U1RBR
不报错 地址不对
lbing7
2007-03-27
打赏
举报
回复
ptr =&U1RBR
在KEIL 里这个是可以取到地址的...
加载更多回复(1)
网页
地址
栏?和&的意义
一般来说,只有form 表单中的get请求方式才会显示参数在
地址
栏上.而post就不会显示,相对安全. 来解释一下?和&的含义: ? : 前面表示
地址
,后面表示参数 & : 用来分隔多个参数. 其中: ?也相当于起...
有了MAC
地址
,为什么还要IP
地址
?
随着网络设备的增多,路由选择变得困难(路径多,计算量大)。因此将网络划分为多个子网。在路由选择的过程中,将一个子网看作一个整体, 路由器只需要选择到达这个子网的路径,到达之后的事情就交给子网内部了。...
ipv4
地址
是ip
地址
吗?
比如,IPv6转换可将IPv6
地址
映射到IPv4
地址
,实现IPv6和IPv4网络
地址
协议转换。说起ipv4,我们经常在软件或者app上面看到ipv4的字样,这是就会有很多人疑问ipv4,ipv4到底是什么?
网络编程之通俗讲解,有了IP
地址
,为何还要用MAC
地址
?
网络编程之通俗讲解,有了IP
地址
,为何还要用MAC
地址
?前言书上说的基本概念:什么是MAC
地址
?什么是IP
地址
?为什么要用到MAC
地址
?IP
地址
与MAC
地址
的区别是什么?MAC
地址
涉及到的安全问题:小知识:ARP原理:最通俗的...
电子邮件
地址
怎么写?
电子邮件
地址
怎么写?什么样的邮件
地址
能吸引收件人注意,不同场合用什么电子邮件
地址
合适?电子邮件格式要怎么写,才能让人轻松get到你的点,今天这篇文章为你分享了全部攻略。 电子邮件
地址
通用格式是邮箱名字@...
单片机/工控
27,375
社区成员
28,770
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章