我对C相当陌生,正试图用七段显示器编写一些基本应用程序。在声明的绝对地址,一个8位端口,我可以写的东西,如:在微芯片上声明/处理输出端口
typedef char *port8ptr;
#define OUT_ADR 0x400
#define OUT *((port8ptr) OUT_ADR)
,然后简单地设置可变出像
OUT = 0x80;
获得十六进制80到端口。但是,上面的代码究竟意味着什么?也就是说,为什么要定义一个指针(第一行),然后将该地址转换为指针(?!)的指针?它显然有效,但我真的不喜欢使用我无法理解的例子中的代码。
另一种方式他们做了类型转换为与线
((unsigned char *) 0x400)
但我真的不明白,要么。
非常感谢提前!这里
阿克塞尔
谢谢,我想我现在得到它!所以基本上,我们对“(port8ptr)OUT_ADR”这行的操作是将地址转换为指针,然后将它解引用,以便在表达式的前面用asterix实际上将某些东西写入端口? – user2950764
是的,就是这样。 –