用AVR微控制器实现串行输入并行输出移位寄存器

时间:2015-10-26 12:57:44

标签: avr bit-shift

在互联网上有很多关于如何用微控制器控制移位寄存器的教程,但实际上是否可以只用微控制器实现移位寄存器功能?

1 个答案:

答案 0 :(得分:1)

如果你有足够的针脚,我不明白为什么天真的方法不起作用......

对于寄存器中的 n 位移位,您需要 n +2个引脚:

  • 一个时钟输入
  • 一个数据输入
  • n 数据输出

实现的伪代码是:

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的引脚来触发中断。