正如我的问题说的,要访问端口的地址,我们能写成"&PORTA"吗?
在我的问题中,我想使用Modbus协议从HMI读取/写入端口值。
我有一系列的结构:
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系列)
发布于 2017-02-11 09:27:21
PORTx已经映射到PORTx寄存器的内容,您不需要它的地址。若要从端口读取,请使用PORTx寄存器。要编写,请使用LATx寄存器。
因此,如果希望将值rwCoil_000x反映在端口(A)上,只需编写:
LATA = rwCoil_000x; 如果要从端口读取相同的变量,请写入:
rwCoil_000x = PORTA;当然,这假设PORTA是一个通用输出。
发布于 2017-02-11 15:49:30
如果您想在许多不同的端口上进行泛化,可以构建一个对*PORT的易失性引用的数组。
我只为另一种方式做了一次,输出,LAT寄存器,参见使用一个LATs数组来切换输出。指向lat的(字节)指针类型
https://stackoverflow.com/questions/42132406
复制相似问题