找回密码
 立即注册
楼主: wuzhengmin

跟着何宾老师学习STC32位8051单片机原理及应用-STC32G12K128

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2025-11-21 10:48:41 | 显示全部楼层
程序状态字寄存器:
截图202511211048382115.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2025-11-21 10:50:33 | 显示全部楼层
其实地址空间不全编满,对指令编码有利,否则会复杂很多,例如常用的30个寄存器的地址:
最巧妙是折中一下,30个寄存器我按照你需要提供:

截图202511211050247409.jpg
截图202511211050319273.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2025-11-21 10:52:00 | 显示全部楼层
再接着看程序状态字:
截图202511211051479797.jpg
截图202511211051587217.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2025-11-21 10:53:59 | 显示全部楼层
其实51的基本存储空间,很多同学都晕晕的:

51内部有256个字节基本存储空间,分为低128和高128字节。高128字节是数据区的SRAM区域,而和这128字节相邻的FF触发器和锁存器构成的特殊寄存器SFR:这2部分物理构成是不同的,这2块巧妙的共享了地址空间:
截图202511211053448749.jpg
截图202511211053583710.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2025-11-21 10:54:47 | 显示全部楼层
CPU要访问外设,一定要通过SFR,要写外设,也是通过SFR传递。CPU要读取外设的内容,也是先把外设的内容放到寄存器里去,再从寄存器读取。
这块区域集成了大量的外设的状态寄存器和控制寄存器,对特殊功能寄存器SFR:
看下图:
截图202511211054453548.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2025-11-21 10:55:26 | 显示全部楼层
观察0x80—0xF8,实际上128个字节还空了很多,STC32就重新定义,使得没用完的地方被充分利用,同时保证了兼容性。但是始终有用完的时候,那么STC的创新就来了:
截图202511211055247578.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2025-11-21 10:56:33 | 显示全部楼层
其实对Keil50μVision编译器来讲,它约定了片内数据区和扩展数据区,它不知道扩展数据RAM存储器是在片内还是在片外,它也不知道这块区域我接的是存储器还是寄存器?编译器只能通过地址判断出这是个扩展区域。STC把片内扩展区域里头没有用到的地址空间拿来存放将来要扩展的寄存器。所以STC的C语言实例程序里,原来放在SFR里现在又放不下的,是用指针的形式来表示的。比较难懂,画个图:
截图202511211056046607.jpg
截图202511211056157910.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2025-11-21 10:58:27 | 显示全部楼层
其实和SFR类似,STC是把XDATA的一部分地址,拿来扩展为XSFR,用指针的形式来表示。地址空间也是和XDATA共用,和SFR跟那128字节的SARM的关系一样,这是很巧妙的创新。

Keil50μVision编译器肯定是不知道的,它只是根据你的声明和所访问的16位地址指针,去访问,它不知道访问的是寄存器还是存储器。这样就解决了SFR空间有限,限制了新增加的片内外设数量的难题。

重要的图再好好看看!
截图202511211058233883.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2025-11-21 10:59:44 | 显示全部楼层
姚总补充:
  这个方法是姚总本人提出来点,本来方法有2种,一种是切换整个寄存器的页,要增加一个位,可以切换到新增页去。第二个方法就是扩展RAM,它有64K,我们放在最后基本不冲突,一般扩展是从前面开始,正常扩到32K就够了。

截图202511211059393417.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2025-11-21 11:01:22 | 显示全部楼层
访问的是寄存器还是存储器,就由端口配置寄存器P SW2的EAXSFR位决定:
当EAXSFR位设置为"0”时,处理器访问的是扩展数据RAM区域;当EAXSFR位设置为"1"时,处理器访问的是XSFR,这一点要特别注意。

我觉得姚总补充讲的很清楚,好了,辛苦的学习今天就到这里!第十一集到此结束!
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-4-1 02:43 , Processed in 0.111103 second(s), 75 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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