gpt4 book ai didi

c - 声明/寻址微芯片上的输出端口

转载 作者:太空宇宙 更新时间:2023-11-04 07:21:56 25 4
gpt4 key购买 nike

我是 C 语言的新手,正在尝试编写一些具有七段显示的基本应用程序。声明绝对地址时,对于 8 位端口,我可以这样写:

typedef char *port8ptr;
#define OUT_ADR 0x400
#define OUT *((port8ptr) OUT_ADR)

然后简单地向变量写入类似的东西

OUT = 0x80;

获取十六进制80到端口。但上面的代码到底是什么意思呢?也就是说,为什么要定义一个指针(第一行)然后将地址转换为指向指针的指针(?!)?它显然有效,但我真的不喜欢使用我无法理解的示例中的代码。

他们进行类型转换的另一种方法是使用行

((unsigned char *) 0x400)

但老实说,我也不明白。

非常感谢!

阿克塞尔

最佳答案

当您完成所有预处理后,您会看到这一行:

*((char*)0x400) = 0x80;

让我们剖析一下。 (char *)0x400 表示获取数字 0x400 并将其转换为“指向字符的指针”。基本上它在这里说:让我们创建一个指向地址 0x400 的指针。

然后,我们将前面的 * 表示“取消引用”,这样您就可以在指针指向的内存位置实际写入一些内容,在本例中为地址 0x400。然后在其中写入 0x80

关于c - 声明/寻址微芯片上的输出端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20979039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com