Микроконтроллеры PIC имеют 3 основных регистра для установки состояния выводов GPIO (общего назначения ввода / вывода).Это: TRIS (Три-статус, регистр направления. Устанавливает вывод как на вход, так и на выход). PORT (Входной буфер) LAT (Latch, выходной буфер).
Порты могут быть A, B, C... и т. д. Таким образом, регистр TRIS для порта A - это TRISA.
Тогда, наконец, есть номер пина.Например, TRISA1.
TRISA1 определяется как:
// TRISA<TRISA1>
extern volatile __bit TRISA1 __at(0x461); // @ (0x8C * 8 + 1)
#define TRISA1_bit BANKMASK(TRISA), 1
Я хотел бы определить макрос, чтобы легко называть контакты как:
#define _DATA_OUTPUT A2
Так что яможет сделать код, подобный:
LAT_DATA_OUTPUT = 1;
PORT_DATA_OUTPUT = 0;
и преобразовать его препроцессором в:
LATA2 = 1;
PORTA2 = 0;
, чтобы впоследствии я мог расширить его на другие регистры выводов, такие как ANSEL, WPU и т. д., безпереписать макросы или добавить специальные случаи.
Возможно ли это?Или что самое близкое, что я могу сделать, чтобы подражать этому?