搜索
bottom↓
回复: 12

求助:GCC指定SRAM地址读写数据

[复制链接]

出0入0汤圆

发表于 2015-8-11 10:51:52 | 显示全部楼层 |阅读模式
最近用AVR STUDIO6.0做一个项目,需要把数据写入SRAM指定地址,还有从SRAM指定地址读出。无法实现,希望高人们给出代码实例帮忙解决一下。
在SRAM的0X6A地址读写数据。ATMEGA8芯片

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出10入23汤圆

发表于 2015-8-11 11:16:25 来自手机 | 显示全部楼层
用指针,直接给指针p赋值0x6a,然后*p=data

出0入0汤圆

 楼主| 发表于 2015-8-11 11:18:40 | 显示全部楼层
zouzhichao 发表于 2015-8-11 11:16
用指针,直接给指针p赋值0x6a,然后*p=data

你的方法试过了,不行,没有那么简单。感谢你的回复!

出10入23汤圆

发表于 2015-8-11 11:30:28 来自手机 | 显示全部楼层
大金刚 发表于 2015-8-11 11:18
你的方法试过了,不行,没有那么简单。感谢你的回复!

char*p;
p=0x006a;
*p=0x65;
汇编出来为
ldi r24,0x65
sts 0x006a,r24
哪里不对了?

出0入0汤圆

 楼主| 发表于 2015-8-11 11:40:07 | 显示全部楼层
zouzhichao 发表于 2015-8-11 11:30
char*p;
p=0x006a;
*p=0x65;

我写的是:
char *p;
p = 0x006A;
*p = 0x01;

Usart_Transmit(&p);
Usart_Transmit(*p);
结果是:0x5A、0x01。p的地址换成0x007A,通过串口发出来看到的还是0x5A,数据是对的。是否跟AVR STUDIO编译器有关?琢磨不通,还望相助

出10入23汤圆

发表于 2015-8-11 11:48:38 来自手机 | 显示全部楼层
uart(p),uart(*p)

出0入0汤圆

 楼主| 发表于 2015-8-11 13:51:58 | 显示全部楼层

虽然得到了地址0x6A,可是不得不说这个答案很忽悠人啊,&p才是取地址好吗?

出10入23汤圆

发表于 2015-8-11 14:30:42 来自手机 | 显示全部楼层
大金刚 发表于 2015-8-11 13:51
虽然得到了地址0x6A,可是不得不说这个答案很忽悠人啊,&p才是取地址好吗?  ...

回炉重补c基础吧,指针没整明白

出0入0汤圆

发表于 2015-8-11 14:42:56 | 显示全部楼层
大金刚 发表于 2015-8-11 13:51
虽然得到了地址0x6A,可是不得不说这个答案很忽悠人啊,&p才是取地址好吗?  ...

指针变量里存的就是个地址。p就是那个地址

但是存储地址也得要个变量,&p就是那个变量的地址。

只有p是数组的时候p和&p才是等价的。

出0入0汤圆

发表于 2015-8-11 14:48:20 | 显示全部楼层
大金刚 发表于 2015-8-11 13:51
虽然得到了地址0x6A,可是不得不说这个答案很忽悠人啊,&p才是取地址好吗?  ...

&p取得是p这个指针的地址呀

出0入0汤圆

 楼主| 发表于 2015-8-12 08:55:30 | 显示全部楼层
zouzhichao 发表于 2015-8-11 11:16
用指针,直接给指针p赋值0x6a,然后*p=data

感谢帮我解决了问题!

出10入23汤圆

发表于 2015-8-12 10:44:06 来自手机 | 显示全部楼层
大金刚 发表于 2015-8-12 08:55
感谢帮我解决了问题!

Avrstudio6编译后,会在目标文件夹下会生成一个.lss文件,这个就是对应的汇编代码,跟c同步比对,很清晰易懂,多看看有好处

出0入0汤圆

发表于 2015-9-6 16:35:26 | 显示全部楼层
本帖最后由 哈士奇的语言 于 2015-9-6 16:36 编辑

unsigned char data=0;
读取:data=*(unsigned char *)0x006A;
写入:*(unsigned char *)0x006A=data;
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 12:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表