在互联网上有很多关于如何用微控制器控制移位寄存器的教程,但实际上是否可以只用微控制器实现移位寄存器功能?
答案 0 :(得分:1)
如果你有足够的针脚,我不明白为什么天真的方法不起作用......
对于寄存器中的 n 位移位,您需要 n +2个引脚:
实现的伪代码是:
var byte r := 0 // Assuming n=8, so 8 bits fit into a single byte
var byte i := 0
forever:
wait for clock-in = low
wait for clock-in = high
r := r << 0 | data-in
i := i + 1
if i = n:
data-out<1..n> := r
i = 0
如果要确保同步更新data-out
,请确保使用单个端口的引脚:然后data-out<1..n> := r
语句实际上可以是单端口寄存器分配。
如果你想与其他代码同时运行它,你应该可以使用clock-in
的引脚来触发中断。