A gray->bináris átalakítás után akár lehetne simán hozzáadni és kivonni az előzőt is, nem? És akkor az még eggyel kevesebb utasítás lenne talán. Sajnos maszkolni is kell, de ha a 0-1 lábakon jön az AB jel, akkor működik. Úgy meg az UART nem esik kézre.
Szerk.: rájöttem, hogy nem jó az összeadás levonás, mert ahhoz a két bit előjeles extendelése is kellene, az meg plusz idő.
Szerk.2: esetleg így:
in r17, PINB
andi r17, 0b00000011 //hasznos bitek
sbrc r17, 1
eor r17, r20(0b11111101) // grey-> bin + negatív extend
add r22, r17 // ezt hozzáadjuk
sub r22, r16 // előzőt levonjuk