gpt4 book ai didi

mplab - xc8 : please detailed the (((unsigned)&(REGISTER_NAME))*8) + BIT_NUM

转载 作者:行者123 更新时间:2023-12-01 11:16:03 24 4
gpt4 key购买 nike

我想为设置引脚方向和电平定义宏。它们的参数必须是端口名称和引脚编号。我不想使用 TRIS 寄存器或 LAT 寄存器名称,只使用端口名称(例如 PORTA)。我使用指针和位来执行此操作面具像:

设置引脚目录:

#define SET_PIN_DIR_IN(port,pin)   *(&port+0x80)|=1<<pin

设置引脚电平:

#define SET_PIN_HIGH(port,pin)      port|=1<<pin

读取引脚状态:

#define READ_PIN_LEVEL(port,pin)   (((*(&port+0x100)>>pin)&0x01)==0x01)

但我知道上面的代码不是最佳的。Q1:我可以用“(((unsigned)&(REGISTER_NAME))*8) + BIT_NUM”来写我的宏吗?Q2:对于所有的PIC单片机,I\O寄存器的顺序都是一样的吗?

最佳答案

如果您使用的是 xc8,则您可能使用的是 8 位 PIC处理器 :)。一个更正常的方法是先设置方向通过设置管脚的三态属性例如:

TRISA1 = 0; // tri-state OFF so this pin is an output
TRISA2 = 1; // tri-state ON so this pin is an input

您可以通过 R 值读取输入引脚值:

pin2_state = RA2;

要使用 LATCH 设置输出,所以要将 A1 设置为 1,请使用

LATA1 = 1;

对于端口 AN,您有时还必须禁用模拟输入使用 ANSEL 寄存器(即引脚无法正常工作和 DIGITAL(如果它们被指定为模拟输入)。查看您设备的数据表和 ANSEL 寄存器默认值。

关于mplab - xc8 : please detailed the (((unsigned)&(REGISTER_NAME))*8) + BIT_NUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45050784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com