完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
近来我也投入了学习STM32的战斗。我采用的方案是先熟悉寄存器,至于库函数,我认为就是对代码的整理、美观化、直观化和形象化,再就是封装——这些工作可以慢慢来,寄存器的操作熟悉了、库函数是理所当然!
我突发奇想地要把STM32操作寄存器的方式应用于51单片机上。比如:要点亮P1^0一个LED小灯。已知P1的地址为90H,头文件“Reg52.h”中有:sfr P1=0x90。我想不加头文件,也不加这句sfr P1=0x90,也跟STM32一样来个#define P1 (*(volatile u8 *)0x90) 1=0xfe。 结果不如我所愿。百思后终于得其解。 结论:访问51系列单片机的特殊功能寄存器SFR,必须采用直接寻址;访问52单片机RAM区的高128字节(51只有低128B),必须采用间接寻址。 上面用到指针,也就是间接寻址,访问到的是属于RAM区的高128字节。也就是KeilC51 中idata类型。 |
|
相关推荐
5个回答
|
|
|
51内部地址特殊功能寄存器的地址跟高字节128是重复的,51就是通过指令读取方式区分。
|
|
|
|
|
|
我也这样想过但51的寄存器不多啊 直接操作比较方便
|
|
|
|
|
|
这个结论我不是很信服,建议LZ反汇编出来看看
|
|
|
|
|
|
不知道您用过51单片机没。
也不知道您试过没。 51内部地址特殊功能寄存器的地址跟RAM高字节128是重复的,通过不同的寻址方式加以区分——访问51系列单片机的特殊功能寄存器SFR,必须采用直接寻址;访问52单片机RAM区的高128字节(51只有低128B),必须采用间接寻址。 一般介绍51单片机的资料会提到这个,尤其是汇编教材更是必然。 其实这是51单片机芯片本身的规则,而不是某某个人下的论断。 |
|
|
|
|
|
原来是这样,学习了,对51了解不是很深,我都是用合泰的~
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1599 浏览 0 评论
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
4738 浏览 0 评论
4229 浏览 9 评论
3822 浏览 16 评论
4398 浏览 1 评论
4212浏览 3评论
2381浏览 0评论
3394浏览 0评论
1159浏览 0评论
2844浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 09:10 , Processed in 1.149740 second(s), Total 52, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2957