- 打卡等级:以坛为家I
- 打卡总天数:312
- 最近打卡:2025-03-11 13:20:13
荣誉版主
- 积分
- 5505
|
发表于 2024-4-20 03:22:48
|
显示全部楼层
原以为受技术限制, DMAIR 寄存器写入指令码,只能使用立即数寻址方式的指令“MOV DMAIR,#N”,
现在看来不存在这个问题.
那就有一个问题值得思考.
MDU32C, 状态寄存器 和 控制寄存器, 地址的连续性问题.
注: 在 纯 51 环境下, 因只能执行写 8位数据, 不存在这个问题(地址是否连续性).
但在 C251 环境下, 因能执行写 16位数据, 地址是否连续性 ,决定了是否能用一条指令写16位数据,
完全代替原先只能用2条指令写8位数据(非原子操作带来的函数不可重入问题,
在软件上, 一般用短暂关中断解决, 但需额外增加多条指令).
如把 MDU32C, 状态寄存器 和 控制寄存器, 地址连在一起(注意偶地址在先),
则以一条16位数据写指令(原子操作), 装载和触发 状态寄存器 和 控制寄存器,
此时的函数是可重入的, 在软件上, 不用关中断, 不会额外增加多条指令.
|
|