---------------------------------------------------------------------------- void entprell(void) { status = ((status<<1) | (!bit_is_clear(PIND,PIND0)) | 0xe000); 5c: 80 91 63 00 lds r24, 0x0063 60: 90 91 64 00 lds r25, 0x0064 64: 88 0f add r24, r24 66: 99 1f adc r25, r25 68: 20 b3 in r18, 0x10 ; 16 6a: 33 27 eor r19, r19 6c: 21 70 andi r18, 0x01 ; 1 6e: 30 70 andi r19, 0x00 ; 0 70: 82 2b or r24, r18 72: 93 2b or r25, r19 74: 90 6e ori r25, 0xE0 ; 224 76: 90 93 64 00 sts 0x0064, r25 7a: 80 93 63 00 sts 0x0063, r24 if (status==0xf000) taste0=0; 7e: 80 50 subi r24, 0x00 ; 0 80: 90 4f sbci r25, 0xF0 ; 240 82: 19 f4 brne .+6 ; 0x8a 84: 10 92 62 00 sts 0x0062, r1 else taste0=1; } 88: 08 95 ret 8a: 81 e0 ldi r24, 0x01 ; 1 8c: 80 93 62 00 sts 0x0062, r24 90: 08 95 ret 92: 08 95 ret ---------------------------------------------------------------------------- 0000009e : { static char ct0, ct1; char i; i = key_state ^ ~KEY_INPUT; // key changed ? 9e: 23 b3 in r18, 0x13 ; 19 a0: 20 95 com r18 a2: 30 91 66 00 lds r19, 0x0066 a6: 23 27 eor r18, r19 ct0 = ~( ct0 & i ); // reset or count ct0 a8: 90 91 60 00 lds r25, 0x0060 ac: 92 23 and r25, r18 ae: 90 95 com r25 b0: 90 93 60 00 sts 0x0060, r25 ct1 = ct0 ^ ct1 & i; // reset or count ct1 b4: 80 91 61 00 lds r24, 0x0061 b8: 82 23 and r24, r18 ba: 89 27 eor r24, r25 bc: 80 93 61 00 sts 0x0061, r24 i &= ct0 & ct1; // count until roll over ? c0: 98 23 and r25, r24 c2: 29 23 and r18, r25 key_state ^= i; // then toggle debounced state c4: 32 27 eor r19, r18 c6: 30 93 66 00 sts 0x0066, r19 // key_press |= key_state & i; // 0->1: key press detect } ca: 08 95 ret ----------------------------------------------------------------------------