在结构中使用PIC PORT地址

时间:2014-12-09 06:34:55

标签: pointers struct microcontroller electronics pic18

我试图通过使用函数来通过结构传递PORTs地址,我不知道如何纠正使用指针的工作。这是我的结构和功能的代码:

typedef struct {
read:1;
last_read:1;
changed:1;
unsigned short *port;    //Here the declaration of the pointer that will receive the address
pin:1;
active_state:1;
} Input;

void Setup_input(Input s,char *port, char pin, char active_state){
 s.port = &port;        //HERE I TRY TO PASS THE ADDRESS OF THE PORT TO THE POINTER OBJECT
 s.pin = pin;
 s.active_state = active_state;

事实证明,我没有正确地做到这一点,我无法正确阅读或控制PORT。我正在使用Mikroelectronic PRO编译器。感谢

1 个答案:

答案 0 :(得分:0)

这行代码

s.port = &port;

将参数的地址存储到成员port中。当您取消引用结构中的指针时,您将在调用port时访问参数Setup_input()所在的堆栈内存。这会导致未定义的行为。

你显然想要的是分配参数的值:

s.port = port;