Microchip XC16:我们可以使用它的地址访问端口吗??例如:&PortA?
Microchip XC16 : Can we access Port using its address ?? for ex : &PortA?
正如我的问题所说,要通过其地址访问端口,我们可以将其写为 "&PORTA" ??
在我的问题中,我想 read/write 端口值 from/to HMI,使用 Modbus 协议。
我有一个结构数组:
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
每当 HMI 写入数据时,寄存器 &rwCoil_000x 都会更新。
相反,我想使用 &PORTA 来读取端口状态或更新端口状态。
可以吗?? &如果可能的话,这是更新端口状态的正确方法吗??
或者有什么更好的方法,请指导。
(我用的是dsPic33E系列)
PORTx
已经映射到 PORTx 寄存器的内容,您不需要它的地址。要从端口读取,请使用 PORTx 寄存器。要写入,请使用 LATx 寄存器。
因此,如果您希望值 rwCoil_000x
反映在端口 (A) 上,只需编写:
LATA = rwCoil_000x;
如果你想从端口读入同一个变量,写:
rwCoil_000x = PORTA;
当然,这是假设 PORTA 设置为通用输出。
如果您想概括许多不同的端口,您可以构建一个指向 *PORT 的可变引用数组。
我用另一种方式做了一次,输出,LAT 寄存器,见Using an array of LATs to toggle outputs. type of (byte) pointer to lat
正如我的问题所说,要通过其地址访问端口,我们可以将其写为 "&PORTA" ??
在我的问题中,我想 read/write 端口值 from/to HMI,使用 Modbus 协议。
我有一个结构数组:
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
每当 HMI 写入数据时,寄存器 &rwCoil_000x 都会更新。
相反,我想使用 &PORTA 来读取端口状态或更新端口状态。
可以吗?? &如果可能的话,这是更新端口状态的正确方法吗??
或者有什么更好的方法,请指导。
(我用的是dsPic33E系列)
PORTx
已经映射到 PORTx 寄存器的内容,您不需要它的地址。要从端口读取,请使用 PORTx 寄存器。要写入,请使用 LATx 寄存器。
因此,如果您希望值 rwCoil_000x
反映在端口 (A) 上,只需编写:
LATA = rwCoil_000x;
如果你想从端口读入同一个变量,写:
rwCoil_000x = PORTA;
当然,这是假设 PORTA 设置为通用输出。
如果您想概括许多不同的端口,您可以构建一个指向 *PORT 的可变引用数组。
我用另一种方式做了一次,输出,LAT 寄存器,见Using an array of LATs to toggle outputs. type of (byte) pointer to lat