Код
static unsigned char key_pressed;
778: 80 b3 in r24, 0x10; 16
if (key_pressed != (PIND & 1)) {
77a: 40 91 6a 00 lds r20, 0x006A
77e: 80 b3 in r24, 0x10; 16
780: 24 2f mov r18, r20
782: 30 e0 ldi r19, 0x00; 0
784: 90 e0 ldi r25, 0x00; 0
786: 81 70 andi r24, 0x01; 1
788: 90 70 andi r25, 0x00; 0
78a: 28 17 cp r18, r24
78c: 39 07 cpc r19, r25
78e: 59 f0 breq .+22 ; 0x7a6 <KeyExe+0x2e>
778: 80 b3 in r24, 0x10; 16
if (key_pressed != (PIND & 1)) {
77a: 40 91 6a 00 lds r20, 0x006A
77e: 80 b3 in r24, 0x10; 16
780: 24 2f mov r18, r20
782: 30 e0 ldi r19, 0x00; 0
784: 90 e0 ldi r25, 0x00; 0
786: 81 70 andi r24, 0x01; 1
788: 90 70 andi r25, 0x00; 0
78a: 28 17 cp r18, r24
78c: 39 07 cpc r19, r25
78e: 59 f0 breq .+22 ; 0x7a6 <KeyExe+0x2e>
Отчего расширяемся к int?
Можно, конечно, так:
Код
static unsigned char key_pressed;
unsigned char s = PIND & 1;
778: 80 b3 in r24, 0x10; 16
if (key_pressed != s) {
77a: 90 91 6a 00 lds r25, 0x006A
77e: 81 70 andi r24, 0x01; 1
780: 98 17 cp r25, r24
782: 59 f0 breq .+22 ; 0x79a <KeyExe+0x22>
unsigned char s = PIND & 1;
778: 80 b3 in r24, 0x10; 16
if (key_pressed != s) {
77a: 90 91 6a 00 lds r25, 0x006A
77e: 81 70 andi r24, 0x01; 1
780: 98 17 cp r25, r24
782: 59 f0 breq .+22 ; 0x79a <KeyExe+0x22>
Но, как-то, не аккуратненько...
Какие мысли?