fpga中设计的寄存器组,可使CPU进行访问,但是如何改写寄存器的值呢?编译地址如何设定?超感谢

fpga中设计的寄存器组,可使CPU进行访问,但是如何改写寄存器的值呢?编译地址如何设定?超感谢,第1张

arm这边的外部总线使用addr,data,wr,rd或者oe,cs,然后addr和cs与得片选地址,在与wr得写所存信号,然后就可以直接用所存信号写你的data到寄存器了,如果读,就用rd或者oe与片选地址,然后输出寄存器的值到data上,注意3向缓冲器的问题,也就是双向端口的 *** 作问题。

PSW 的地址为 0D0H, 更改 工作 可以改 PSW4 PSW3
PSW4 PSW3
0 0 R0 - R7 为 0 区 地址为 00H - 07H
0 1 R0 - R7 为 1 区 地址为 08H - 0FH
1 0 R0 - R7 为 2 区 地址为 10H - 17H
1 1 R0 - R7 为 3 区 地址为 18H - 1FH
可以 用的 指令 有
SETB PSW3 ; SETB PSW4 ; CLR PSW3 ; CLR PSW4 ;
ANL PSW, #0E7H & ORL PSW, #18H ( 选择不同寄存器组 有所不同)

局部静态变量无法定义成寄存器变量。
局部变量的存储类static/auto/register中只能选择一个。static定义的对象具有静态存储期,在进入代码块首次初始化;auto/register定义的对象具有自动存储期,在每次进入代码块首次初始化。两者在逻辑上是互相矛盾的,因此规定不能同时使用。此外,同C++的inline一样,关键字register只是请求而不是命令,生成的目标代码中未必符合register的语义。很多平台上的编译器直接把register当作auto处理。
====
[原创回答团]


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10541283.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存