2015-10-26 18 views

回答

1

如果你有足够的引脚,我不明白为什么用简单的方式是行不通的......

对于寄存器的ň位转变,则需要ň +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

+0

可能是一个额外的锁存输入 –