code里关于xdata的一些理解及如何看寄存器

本文介绍了51单片机中xdata存储类型的理解,通过实例解析了如何通过xdata访问外部RAM,并详细阐述了MStar芯片寄存器的查看方法。同时,讲解了如何向寄存器特定位进行写操作,涉及内存型态如code、data、xdata等。
摘要由CSDN通过智能技术生成

最近都是翻旧案子,所以不太忙,花时间把以前的问题做下回顾,不懂的地方做下实验,关于xdata做下记录吧!

1.code里关于xdata的理解
在code里,经常看到这样的写法(scRegs[(u16Addr)&0xFF]),如图:
在这里插入图片描述
在这里插入图片描述
现在就scRegs这个写法做下分析:
xdata是large存储类型,volatile是通过硬件来改变指针指向的内容。

如:#define scRegs ((unsigned char volatile xdata ) 0x2F00)
说明:定义 msRegs为指向xdata地址空间unsigned char数据类型指针(注意是指针!!),指针值为0x2F00。这样就可以直接用scRegs[Addr]或
(scRegs+Addr)访问外部RAM了。至于 volatile的作用就是让编译器不至于优化掉它的操作,但是scRegs[Addr]的具体内容就要看0x2F00+Addr这个寄存器的位置里放的内容,这个要查芯片手册了。

eg.如:MEM_SCREAD_BYTE(SC0_CE)的解释
原型为:#define MEM_SCREAD_BYTE(u16Addr) (scRegs[(u16Addr)&0xFF]),
已知:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值