Конкатенация между данными двух портов - PullRequest
0 голосов
/ 24 декабря 2011

Я использую pic18f4550, в котором размер его порта составляет 6 бит

Я хочу читать и записывать данные 8 бит.то, что я сделал, это запись данных (скажем, на порт A и порт C

), что я хочу сейчас сделать, это прочитать все 6-битные данные из порта A и объединить их с первыми двумя битами C вчтобы сохранить результат в символе, который содержит 8 бит Как я могу сделать такое объединение?

другими словами я хочу сделать это char a = PortA from (0-5) + portc from (0: 1)

1 Ответ

0 голосов
/ 24 декабря 2011

Просто сдвиньте, маскируйте и OR биты вместе, например

uint8_t a, b;

// ... read data from ports A and B into a, b ...

uint8_t c = (a << 2) | (b & 0x03); // shift a left by 2 bits and
                                   // OR with LS 2 bits of b
...