()、将寄存器的地址写到 - 端口;
()、从 端口读写寄存器中的数据;
、读、写寄存器
其实,>2.? 端口和 端口的就是由芯片上的 - 引脚来区分的。低电平为
>2.? 端口,高电平为 端口。所以,要想实现读写寄存器,就必须先控制好 -
引脚。
若使用总线接口连接 的话,假设总线连接后芯片的基地址为 6(4
根地址总线),只需如下方法:
@7ABAA(+#(:#BC6CC
@7-ABAA(+#(:#BC64CC
%%向 寄存器写数据
&:#A:1"+::1"++#+C
D
(+EACF%%之前定义的微妙级延时函数,这里延时
G:F%%将寄存器地址写到 >2.? 端口
(+EACF
-G+#+F%%将数据写到 端口,即写进寄存器
H
%%从 寄存器读数据
:#&:+A:1"+:C
D
(+EACF
G:F
(+EACF
#-F%%将数据从寄存器中读出
H
只得注意的是前面的两个宏定义 和 -,定义的内容表示指向无符号
整形变量的指针,在这里 6 是 命令端口的地址,对它的赋值操作就相
当于把数据写到该地址中,即把数据写到 的命令端口中。读的道理也一样。这
是一种很常见的宏定义,一般在处理器中定义通用寄存器也是这样定义的。
若没有总线接口的话,可以使用 >< 口模拟总线时序的方法实现寄存器的读写。这里只
说明实现步骤。首先将处理器的 >%< 端口与 的 >< 等引脚直接相连(电平匹配
的情况下),又假设已经有宏定义“><I>%< 端口控制 的 >< 引脚,其它端口控
制 引脚的命名相同,“/><I(根据处理器情况,可以是 位、3 位或 6 位的
>%< 端口组成)控制数据端口。这样宏命名更直观些。写寄存器的函数如下:
&:#A:1"+::1"++#+C
D
/><G:F
.2GF
-GF
><GF
><,GF
(+EACF
.2GF