Поскольку я не смог найти весь порт в своем дизайне, но я хочу, чтобы моя программа стала единообразной (когда я меняю контакты, мне нужно только изменить этот массив), поэтому я хочу создать виртуальный порт, определив их в массив. При работе я хочу установить каждый из этих виртуальных контактов в цикле. Это точно так же, как приведенные ниже коды макросов (конечно, я могу определить 2 массива отдельно для портов и контактов). Длина массива (контактов) является переменной (возможно, 2/3/4 контакта) перед компиляцией, но это не важно.
unsigned char bitorder[]={PORTC,6,PORTD,2};
foreach i,j in (bitorder){
asm SBI i,j
// some delay or operation here
asm CBI i,j
}
Если это возможно? использовать функцию или макрос? или указатель на операцию указателя?