c - 将数据上传至 MAX 7219

标签 c

我有以下代码在 MAX7219 上写入数据以点亮 8x8 LED 矩阵:

for (i = 0; i < 8; i++)  {          
    CLK = LOW;      
    DIN = temp & MSBIT >> i;
    CLK = HIGH;
}

遗憾的是,我只知道代码行 (DIN = temp & MSBIT >> i;) 必须与此完全相同,否则 LED 将不会显示符合预期,但我不明白它是如何工作的......

拜托,我真的需要解释,因为我被困住了......

注意:变量“temp”始终是十六进制数,例如 0x20,并且“MSBIT”= 0x80。

最佳答案

您的示例不完整,因此无法给出详细答案。请提供完整的最小运行示例,并告诉我们有关您正在使用的平台的信息。例如,变量“temp”尚未在代码片段中声明或定义。 首先你必须了解一些关于运算符优先级的知识。看看这里:https://en.cppreference.com/w/c/language/operator_precedence

您可以使用此在线 gcc 编译器来运行和调试小型测试应用程序,以测试代码行的行为。 http://pythontutor.com/c.html

所以我猜DIN是外设的寄存器。您向该寄存器分配一个值。该值是变量 temp 和 MSBIT(“可能是常量”)右移 i 位的按位“AND”运算结果。 因此,为了使表达式更清晰,您还可以编写:DIN = temp & (MSBIT >> i)。

有关 MAX7210 工作原理的更详细信息,请查看此处。 https://howtomechatronics.com/tutorials/arduino/8x8-led-matrix-max7219-tutorial-scrolling-text-android-control-via-bluetooth/

关于c - 将数据上传至 MAX 7219,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54102235/

相关文章:

c - 显示收到的号码

c - 共享库中的段错误。如何调试?

C程序段错误(核心转储)

c - fgets 有更多的字符,它应该有

在实模式下结合 NASM、BCC 和 Ld86 : has bad magic number

C - '{' token 之前的预期表达式

C 字符串和指针

c - 解释 getaddrinfo( ) 的参数

c - 有没有办法在 C 中进行柯里化(Currying)?

c - 数字猜测用户的想法 C