首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微芯片XC16 :我们能用它的地址访问端口吗?前男友:&PortA?

微芯片XC16 :我们能用它的地址访问端口吗?前男友:&PortA?
EN

Stack Overflow用户
提问于 2017-02-09 09:11:48
回答 2查看 299关注 0票数 0

正如我的问题说的,要访问端口的地址,我们能写成"&PORTA"吗?

在我的问题中,我想使用Modbus协议HMI读取/写入端口值。

我有一系列的结构:

代码语言:javascript
复制
typedef struct func_code_reg {
    volatile uint16_t addr;
    volatile uint16_t *data;
}RW_REG_DATA;

// described as
RW_REG_DATA rwCoilStatusTbl[] = {
    //      Addr        Data_Register
    {       0,           &rwCoil_0000      },
    {       1,           &rwCoil_0001      },
};

每当HMI读取数据时,它就读取寄存器&rwCoil_000x的当前值。

每当人机界面写入数据时,寄存器&rwCoil_000x就会被更新。

相反,我想使用&PORTA来读取端口状态或更新端口状态。

它有可能吗?&如果可能的话,它是否是更新端口状态的正确方式??

或者其他更好的方法,请引导我。

(我使用的是dsPic33E系列)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-11 09:27:21

PORTx已经映射到PORTx寄存器的内容,您不需要它的地址。若要从端口读取,请使用PORTx寄存器。要编写,请使用LATx寄存器。

因此,如果希望将值rwCoil_000x反映在端口(A)上,只需编写:

代码语言:javascript
复制
LATA = rwCoil_000x; 

如果要从端口读取相同的变量,请写入:

代码语言:javascript
复制
rwCoil_000x = PORTA;

当然,这假设PORTA是一个通用输出。

票数 1
EN

Stack Overflow用户

发布于 2017-02-11 15:49:30

如果您想在许多不同的端口上进行泛化,可以构建一个对*PORT的易失性引用的数组。

我只为另一种方式做了一次,输出,LAT寄存器,参见使用一个LATs数组来切换输出。指向lat的(字节)指针类型

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42132406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档