关于define directive参数的简单代码混淆

时间:2011-09-19 00:49:40

标签: c msp430

我正在尝试学习C来在德州仪器MSP430上编程这个小程序。你能帮我理解((unsigned char *) 0x0023)部分吗?

我在理解这个Define指令的这个中间部分时遇到了问题。我试过这个,但在((unsigned char *) 0x0023)部分没有发现任何内容。这看起来像一个类型转换,但它没有任何东西。

我主要担心的是0x0023(十进制35)。这只是一个35位的无符号字符指针吗?

代码:

#define P1IFG_ptr ((unsigned char *) 0x0023) unsigned char result;

非常感谢任何帮助,并提前感谢您。

1 个答案:

答案 0 :(得分:3)

((unsigned char *) 0x0023)

指向地址0x23

的指针

我认为代码示例中缺少换行符......

在MSP430上,这是端口P1中断标志寄存器:

  

每个PxIFGx位是其相应I / O引脚的中断标志   当所选输入信号边沿出现在引脚上时置位。所有   PxIFGx中断标志在它们对应时请求中断   PxIE位和GIE位置1。必须重置每个PxIFG标志   软件。软件还可以设置每个PxIFG标志,提供一种方法   生成软件启动的中断。位= 0:无中断   挂起位= 1:中断挂起只有转换,而不是静态   水平,导致中断。如果在Px期间设置了任何PxIFGx标志   中断服务程序,或在a的RETI指令后设置   执行Px中断服务程序,设置PxIFGx标志   产生另一个中断。这确保了每次转换   确认。

您可以从此注册表中读取,例如:

unsigned char result;
result = *P1IFG_ptr;

或写信给它,例如:

*P1IFG_ptr = 1;