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