- 打卡等级:以坛为家I
- 打卡总天数:312
- 最近打卡:2025-03-11 13:20:13
荣誉版主
- 积分
- 5395
|
发表于 2024-5-17 05:18:43
|
显示全部楼层
对老姚提点建议, 请考虑一下:
STC51 经历了几代升级, 反观过去, 最大的创新就是把 SFR寄存器移到外面 XFR,
但由于 51指令集设计的早, 对片外RAM(XFR)的指令支持, 比较单调功能有局限.
这次有客户网上反映, CAN模块的读写速度慢的问题, 一开始我也不相信, 后来跟踪讨论,
客户结论是对的, 这个客户所用 波特率并不高, 经程序优化后, 能用, 但几乎就用到了
STC32G 的极限(天花板)了, 要是客户再提高点通讯波特率, 就彻底不能用了(用汇编优化也达不到).
这次 STC 的 CAN模块 设计, 地址采用 间接寻址, 对外寄存器只有 2个, 极大地节省了
专用寄存器资源,但由于 251 没有片外RAM(XFR) 加/减1 指令, 造成了指令效率低下.
但 51/251 对片内RAM(SFR) 有 加/减1 指令, 效率高, 前段时间 USB模块, 已抢占了部分
已用 SFR 寄存器, 这次 CAN模块 没有继续抢占 SFR 寄存器, 就反映出一系列问题.
今后 STC 还要继续增加 网络 等摸块, SFR 专用寄存器资源问题, 会越来越严重(影响读写速度).
因此, 建议老姚长痛不如短痛, 好好考虑一下, 把不常用的一些 SFR寄存器(比如 I/O端囗
模式的设置寄存器), 一次性全部回收, 按照目前 CAN模块 的间接寻址方式, 重新排列一下,
这样, 所有专用寄存器 都可以放在 SFR中, 空出不少 SFR寄存器, 供今后发展增加模块使用,
XFR寄存器尽量不用或少用.
|
|