Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Li-ionTester.elf: file format elf32-avr
- Sections:
- Idx Name Size VMA LMA File off Algn
- 0 .text 00001976 00000000 00000000 000000b4 2**1
- CONTENTS, ALLOC, LOAD, READONLY, CODE
- 1 .data 000002ca 00800060 00001976 00001a2a 2**0
- CONTENTS, ALLOC, LOAD, DATA
- 2 .bss 00000086 0080032a 0080032a 00001cf4 2**0
- ALLOC
- 3 .eeprom 00000019 00810000 00810000 00001cf4 2**0
- CONTENTS, ALLOC, LOAD, DATA
- 4 .stab 00000e88 00000000 00000000 00001d10 2**2
- CONTENTS, READONLY, DEBUGGING
- 5 .stabstr 00000406 00000000 00000000 00002b98 2**0
- CONTENTS, READONLY, DEBUGGING
- 6 .debug_aranges 00000240 00000000 00000000 00002f9e 2**0
- CONTENTS, READONLY, DEBUGGING
- 7 .debug_pubnames 000005ff 00000000 00000000 000031de 2**0
- CONTENTS, READONLY, DEBUGGING
- 8 .debug_info 00001d84 00000000 00000000 000037dd 2**0
- CONTENTS, READONLY, DEBUGGING
- 9 .debug_abbrev 0000093c 00000000 00000000 00005561 2**0
- CONTENTS, READONLY, DEBUGGING
- 10 .debug_line 0000202e 00000000 00000000 00005e9d 2**0
- CONTENTS, READONLY, DEBUGGING
- 11 .debug_frame 000003c0 00000000 00000000 00007ecc 2**2
- CONTENTS, READONLY, DEBUGGING
- 12 .debug_str 000006d0 00000000 00000000 0000828c 2**0
- CONTENTS, READONLY, DEBUGGING
- 13 .debug_loc 000010e7 00000000 00000000 0000895c 2**0
- CONTENTS, READONLY, DEBUGGING
- 14 .debug_pubtypes 0000010f 00000000 00000000 00009a43 2**0
- CONTENTS, READONLY, DEBUGGING
- 15 .debug_ranges 000001f8 00000000 00000000 00009b52 2**0
- CONTENTS, READONLY, DEBUGGING
- Disassembly of section .text:
- 00000000 <__vectors>:
- 0: 1a c0 rjmp .+52 ; 0x36 <__ctors_end>
- 2: 34 c0 rjmp .+104 ; 0x6c <__bad_interrupt>
- 4: 33 c0 rjmp .+102 ; 0x6c <__bad_interrupt>
- 6: 32 c0 rjmp .+100 ; 0x6c <__bad_interrupt>
- 8: 6d c5 rjmp .+2778 ; 0xae4 <__vector_4>
- a: 30 c0 rjmp .+96 ; 0x6c <__bad_interrupt>
- c: 2f c0 rjmp .+94 ; 0x6c <__bad_interrupt>
- e: 2e c0 rjmp .+92 ; 0x6c <__bad_interrupt>
- 10: 2d c0 rjmp .+90 ; 0x6c <__bad_interrupt>
- 12: 2c c0 rjmp .+88 ; 0x6c <__bad_interrupt>
- 14: 2b c0 rjmp .+86 ; 0x6c <__bad_interrupt>
- 16: 93 cb rjmp .-2266 ; 0xfffff73e <__eeprom_end+0xff7ef725>
- 18: 45 cb rjmp .-2422 ; 0xfffff6a4 <__eeprom_end+0xff7ef68b>
- 1a: 28 c0 rjmp .+80 ; 0x6c <__bad_interrupt>
- 1c: 27 c0 rjmp .+78 ; 0x6c <__bad_interrupt>
- 1e: 26 c0 rjmp .+76 ; 0x6c <__bad_interrupt>
- 20: 25 c0 rjmp .+74 ; 0x6c <__bad_interrupt>
- 22: 24 c0 rjmp .+72 ; 0x6c <__bad_interrupt>
- 24: 23 c0 rjmp .+70 ; 0x6c <__bad_interrupt>
- 00000026 <leftArrow>:
- 26: 02 04 08 10 08 04 02 00 ........
- 0000002e <rightArrow>:
- 2e: 08 04 02 01 02 04 08 00 ........
- 00000036 <__ctors_end>:
- 36: 11 24 eor r1, r1
- 38: 1f be out 0x3f, r1 ; 63
- 3a: cf e5 ldi r28, 0x5F ; 95
- 3c: d4 e0 ldi r29, 0x04 ; 4
- 3e: de bf out 0x3e, r29 ; 62
- 40: cd bf out 0x3d, r28 ; 61
- 00000042 <__do_copy_data>:
- 42: 13 e0 ldi r17, 0x03 ; 3
- 44: a0 e6 ldi r26, 0x60 ; 96
- 46: b0 e0 ldi r27, 0x00 ; 0
- 48: e6 e7 ldi r30, 0x76 ; 118
- 4a: f9 e1 ldi r31, 0x19 ; 25
- 4c: 02 c0 rjmp .+4 ; 0x52 <__do_copy_data+0x10>
- 4e: 05 90 lpm r0, Z+
- 50: 0d 92 st X+, r0
- 52: aa 32 cpi r26, 0x2A ; 42
- 54: b1 07 cpc r27, r17
- 56: d9 f7 brne .-10 ; 0x4e <__do_copy_data+0xc>
- 00000058 <__do_clear_bss>:
- 58: 13 e0 ldi r17, 0x03 ; 3
- 5a: aa e2 ldi r26, 0x2A ; 42
- 5c: b3 e0 ldi r27, 0x03 ; 3
- 5e: 01 c0 rjmp .+2 ; 0x62 <.do_clear_bss_start>
- 00000060 <.do_clear_bss_loop>:
- 60: 1d 92 st X+, r1
- 00000062 <.do_clear_bss_start>:
- 62: a0 3b cpi r26, 0xB0 ; 176
- 64: b1 07 cpc r27, r17
- 66: e1 f7 brne .-8 ; 0x60 <.do_clear_bss_loop>
- 68: 65 d5 rcall .+2762 ; 0xb34 <main>
- 6a: 83 cc rjmp .-1786 ; 0xfffff972 <__eeprom_end+0xff7ef959>
- 0000006c <__bad_interrupt>:
- 6c: c9 cf rjmp .-110 ; 0x0 <__vectors>
- 0000006e <ShiftRegisterInit>:
- /*
- Init SPI and I/O pins
- */
- void ShiftRegisterInit(){
- DATA_DDR |= (1<<DATA);
- 6e: b8 9a sbi 0x17, 0 ; 23
- SCK_DDR |= (1<<SCK);
- 70: bb 9a sbi 0x17, 3 ; 23
- LATCH_DDR |= (1<<LATCH);
- 72: bc 9a sbi 0x17, 4 ; 23
- DATA_PORT &=~ (1 << DATA);
- 74: c0 98 cbi 0x18, 0 ; 24
- SCK_PORT &=~ (1 << SCK);
- 76: c3 98 cbi 0x18, 3 ; 24
- LATCH_PORT &=~ (1 << LATCH);
- 78: c4 98 cbi 0x18, 4 ; 24
- #if (USE_HARDWARE_SPI == 1)
- SPCR = ((1<<SPE)|(1<<MSTR)); //SPI config for Atmega8 if you have problems with hardware SPI change this or use soft SPI
- #endif
- }
- 7a: 08 95 ret
- 0000007c <ShiftRegisterSend>:
- for(unsigned int byte = sizeof(ShiftPORT); byte > 0; byte--){
- #else
- for(unsigned int byte = 1; byte <= sizeof(ShiftPORT); byte++){
- #endif
- unsigned char data = ShiftPORT[byte-1];
- 7c: 20 91 2a 03 lds r18, 0x032A
- 80: 88 e0 ldi r24, 0x08 ; 8
- 82: 90 e0 ldi r25, 0x00 ; 0
- for(unsigned int bit = 0; bit < 8; bit++){
- if(data & 0x80){
- 84: 27 ff sbrs r18, 7
- 86: 02 c0 rjmp .+4 ; 0x8c <ShiftRegisterSend+0x10>
- DATA_PORT |= (1 << DATA);
- 88: c0 9a sbi 0x18, 0 ; 24
- 8a: 01 c0 rjmp .+2 ; 0x8e <ShiftRegisterSend+0x12>
- }else{
- DATA_PORT &=~ (1 << DATA);
- 8c: c0 98 cbi 0x18, 0 ; 24
- }
- SCK_PORT |= (1 << SCK);
- 8e: c3 9a sbi 0x18, 3 ; 24
- SCK_PORT &=~ (1 << SCK);
- 90: c3 98 cbi 0x18, 3 ; 24
- 92: 01 97 sbiw r24, 0x01 ; 1
- #else
- for(unsigned int byte = 1; byte <= sizeof(ShiftPORT); byte++){
- #endif
- unsigned char data = ShiftPORT[byte-1];
- for(unsigned int bit = 0; bit < 8; bit++){
- 94: 11 f0 breq .+4 ; 0x9a <ShiftRegisterSend+0x1e>
- }else{
- DATA_PORT &=~ (1 << DATA);
- }
- SCK_PORT |= (1 << SCK);
- SCK_PORT &=~ (1 << SCK);
- data <<= 1;
- 96: 22 0f add r18, r18
- 98: f5 cf rjmp .-22 ; 0x84 <ShiftRegisterSend+0x8>
- }
- }
- #endif
- LATCH_PORT |= (1 << LATCH);
- 9a: c4 9a sbi 0x18, 4 ; 24
- LATCH_PORT &=~ (1 << LATCH);
- 9c: c4 98 cbi 0x18, 4 ; 24
- }
- 9e: 08 95 ret
- 000000a0 <ShiftDigitalWrite>:
- Set one pin of the shift register
- Use example:
- ShiftDigitalWrite(4, HIGH, 2);
- This example set pin 4 of в„–2 shift regisner to HIGH level
- */
- void ShiftDigitalWrite(int pin, int lvl, int number){
- a0: fa 01 movw r30, r20
- a2: e6 5d subi r30, 0xD6 ; 214
- a4: fc 4f sbci r31, 0xFC ; 252
- if(lvl){
- a6: 61 15 cp r22, r1
- a8: 71 05 cpc r23, r1
- aa: 51 f0 breq .+20 ; 0xc0 <ShiftDigitalWrite+0x20>
- ShiftPORT[number] |= (1 << pin);
- ac: 21 e0 ldi r18, 0x01 ; 1
- ae: 30 e0 ldi r19, 0x00 ; 0
- b0: 02 c0 rjmp .+4 ; 0xb6 <ShiftDigitalWrite+0x16>
- b2: 22 0f add r18, r18
- b4: 33 1f adc r19, r19
- b6: 8a 95 dec r24
- b8: e2 f7 brpl .-8 ; 0xb2 <ShiftDigitalWrite+0x12>
- ba: 80 81 ld r24, Z
- bc: 82 2b or r24, r18
- be: 0a c0 rjmp .+20 ; 0xd4 <ShiftDigitalWrite+0x34>
- }else{
- ShiftPORT[number] &= ~(1 << pin);
- c0: 21 e0 ldi r18, 0x01 ; 1
- c2: 30 e0 ldi r19, 0x00 ; 0
- c4: 02 c0 rjmp .+4 ; 0xca <ShiftDigitalWrite+0x2a>
- c6: 22 0f add r18, r18
- c8: 33 1f adc r19, r19
- ca: 8a 95 dec r24
- cc: e2 f7 brpl .-8 ; 0xc6 <ShiftDigitalWrite+0x26>
- ce: 20 95 com r18
- d0: 80 81 ld r24, Z
- d2: 82 23 and r24, r18
- d4: 80 83 st Z, r24
- }
- ShiftRegisterSend();
- d6: d2 df rcall .-92 ; 0x7c <ShiftRegisterSend>
- }
- d8: 08 95 ret
- 000000da <ShiftDigitalWritePort>:
- Use example:
- ShiftDigitalWritePort(0xFF, 1);
- This example set all pins of в„–1 shuft register to HIGH level
- */
- void ShiftDigitalWritePort(int port, int number){
- ShiftPORT[number] = port;
- da: 66 5d subi r22, 0xD6 ; 214
- dc: 7c 4f sbci r23, 0xFC ; 252
- de: fb 01 movw r30, r22
- e0: 80 83 st Z, r24
- ShiftRegisterSend();
- e2: cc df rcall .-104 ; 0x7c <ShiftRegisterSend>
- }
- e4: 08 95 ret
- 000000e6 <ShiftDigitalGetPort>:
- Use example:
- ShiftDigitalGetPort(1);
- This example return actual byte from shift register в„–1
- */
- char ShiftDigitalGetPort(int number){
- return ShiftPORT[number];
- e6: fc 01 movw r30, r24
- e8: e6 5d subi r30, 0xD6 ; 214
- ea: fc 4f sbci r31, 0xFC ; 252
- ec: 80 81 ld r24, Z
- ee: 08 95 ret
- 000000f0 <PARS_Init>:
- uint8_t inc = 0;
- uint8_t flag = 0;
- void PARS_Init(void)
- {
- argc = 0;
- f0: 10 92 9f 03 sts 0x039F, r1
- argv[0] = buf;
- f4: 80 ea ldi r24, 0xA0 ; 160
- f6: 93 e0 ldi r25, 0x03 ; 3
- f8: 90 93 9c 03 sts 0x039C, r25
- fc: 80 93 9b 03 sts 0x039B, r24
- flag = FALSE;
- 100: 10 92 2c 03 sts 0x032C, r1
- inc = 0;
- 104: 10 92 2b 03 sts 0x032B, r1
- }
- 108: 08 95 ret
- 0000010a <PARS_Parser>:
- void PARS_Parser(char sym)
- {
- 10a: 90 91 2b 03 lds r25, 0x032B
- if (sym != '\r'){
- 10e: 8d 30 cpi r24, 0x0D ; 13
- 110: 09 f4 brne .+2 ; 0x114 <PARS_Parser+0xa>
- 112: 4a c0 rjmp .+148 ; 0x1a8 <PARS_Parser+0x9e>
- if (inc < SIZE_RECEIVE_BUF - 1){
- 114: 9f 30 cpi r25, 0x0F ; 15
- 116: 08 f0 brcs .+2 ; 0x11a <PARS_Parser+0x10>
- 118: 40 c0 rjmp .+128 ; 0x19a <PARS_Parser+0x90>
- if (sym != ' '){
- 11a: 80 32 cpi r24, 0x20 ; 32
- 11c: 79 f1 breq .+94 ; 0x17c <PARS_Parser+0x72>
- if (!argc){
- 11e: 20 91 9f 03 lds r18, 0x039F
- 122: 22 23 and r18, r18
- 124: 49 f4 brne .+18 ; 0x138 <PARS_Parser+0x2e>
- argv[0] = buf;
- 126: 20 ea ldi r18, 0xA0 ; 160
- 128: 33 e0 ldi r19, 0x03 ; 3
- 12a: 30 93 9c 03 sts 0x039C, r19
- 12e: 20 93 9b 03 sts 0x039B, r18
- argc++;
- 132: 21 e0 ldi r18, 0x01 ; 1
- 134: 20 93 9f 03 sts 0x039F, r18
- }
- if (flag){
- 138: 20 91 2c 03 lds r18, 0x032C
- 13c: 22 23 and r18, r18
- 13e: a9 f0 breq .+42 ; 0x16a <PARS_Parser+0x60>
- if (argc < AMOUNT_PAR){
- 140: 40 91 9f 03 lds r20, 0x039F
- 144: 42 30 cpi r20, 0x02 ; 2
- 146: 78 f4 brcc .+30 ; 0x166 <PARS_Parser+0x5c>
- argv[argc] = &buf[inc];
- 148: e4 2f mov r30, r20
- 14a: f0 e0 ldi r31, 0x00 ; 0
- 14c: ee 0f add r30, r30
- 14e: ff 1f adc r31, r31
- 150: e5 56 subi r30, 0x65 ; 101
- 152: fc 4f sbci r31, 0xFC ; 252
- 154: 29 2f mov r18, r25
- 156: 30 e0 ldi r19, 0x00 ; 0
- 158: 20 56 subi r18, 0x60 ; 96
- 15a: 3c 4f sbci r19, 0xFC ; 252
- 15c: 31 83 std Z+1, r19 ; 0x01
- 15e: 20 83 st Z, r18
- argc++;
- 160: 4f 5f subi r20, 0xFF ; 255
- 162: 40 93 9f 03 sts 0x039F, r20
- }
- flag = FALSE;
- 166: 10 92 2c 03 sts 0x032C, r1
- }
- buf[inc] = sym;
- 16a: a9 2f mov r26, r25
- 16c: b0 e0 ldi r27, 0x00 ; 0
- 16e: a0 56 subi r26, 0x60 ; 96
- 170: bc 4f sbci r27, 0xFC ; 252
- 172: 8c 93 st X, r24
- inc++;
- 174: 9f 5f subi r25, 0xFF ; 255
- 176: 90 93 2b 03 sts 0x032B, r25
- 17a: 0f c0 rjmp .+30 ; 0x19a <PARS_Parser+0x90>
- }
- else{
- if (!flag){
- 17c: 80 91 2c 03 lds r24, 0x032C
- 180: 88 23 and r24, r24
- 182: 59 f4 brne .+22 ; 0x19a <PARS_Parser+0x90>
- buf[inc] = 0;
- 184: a9 2f mov r26, r25
- 186: b0 e0 ldi r27, 0x00 ; 0
- 188: a0 56 subi r26, 0x60 ; 96
- 18a: bc 4f sbci r27, 0xFC ; 252
- 18c: 1c 92 st X, r1
- inc++;
- 18e: 9f 5f subi r25, 0xFF ; 255
- 190: 90 93 2b 03 sts 0x032B, r25
- flag = TRUE;
- 194: 81 e0 ldi r24, 0x01 ; 1
- 196: 80 93 2c 03 sts 0x032C, r24
- }
- }
- }
- buf[inc] = 0;
- 19a: e0 91 2b 03 lds r30, 0x032B
- 19e: f0 e0 ldi r31, 0x00 ; 0
- 1a0: e0 56 subi r30, 0x60 ; 96
- 1a2: fc 4f sbci r31, 0xFC ; 252
- 1a4: 10 82 st Z, r1
- return;
- 1a6: 08 95 ret
- }
- else{
- buf[inc] = 0;
- 1a8: e9 2f mov r30, r25
- 1aa: f0 e0 ldi r31, 0x00 ; 0
- 1ac: e0 56 subi r30, 0x60 ; 96
- 1ae: fc 4f sbci r31, 0xFC ; 252
- 1b0: 10 82 st Z, r1
- if (argc){
- 1b2: 80 91 9f 03 lds r24, 0x039F
- 1b6: 88 23 and r24, r24
- 1b8: 19 f0 breq .+6 ; 0x1c0 <PARS_Parser+0xb6>
- PARS_Handler(argc, argv);
- 1ba: 6b e9 ldi r22, 0x9B ; 155
- 1bc: 73 e0 ldi r23, 0x03 ; 3
- 1be: 37 d0 rcall .+110 ; 0x22e <PARS_Handler>
- }
- else{
- //сюда можно что-то добавить
- }
- argc = 0;
- 1c0: 10 92 9f 03 sts 0x039F, r1
- flag = FALSE;
- 1c4: 10 92 2c 03 sts 0x032C, r1
- inc = 0;
- 1c8: 10 92 2b 03 sts 0x032B, r1
- 1cc: 08 95 ret
- 000001ce <PARS_StrToUint>:
- uint16_t PARS_StrToUint(char *s)
- {
- uint16_t value = 0;
- while(*s == '0'){
- 1ce: e8 2f mov r30, r24
- 1d0: f9 2f mov r31, r25
- 1d2: 3e 2f mov r19, r30
- 1d4: 2f 2f mov r18, r31
- 1d6: 81 91 ld r24, Z+
- 1d8: 80 33 cpi r24, 0x30 ; 48
- 1da: d9 f3 breq .-10 ; 0x1d2 <PARS_StrToUint+0x4>
- 1dc: c9 01 movw r24, r18
- 1de: e9 2f mov r30, r25
- 1e0: f8 2f mov r31, r24
- 1e2: 20 e0 ldi r18, 0x00 ; 0
- 1e4: 30 e0 ldi r19, 0x00 ; 0
- 1e6: 11 c0 rjmp .+34 ; 0x20a <PARS_StrToUint+0x3c>
- s++;
- }
- while(*s){
- value += (*s - 0x30);
- 1e8: 90 e0 ldi r25, 0x00 ; 0
- 1ea: c0 97 sbiw r24, 0x30 ; 48
- 1ec: 28 0f add r18, r24
- 1ee: 39 1f adc r19, r25
- s++;
- if (*s){
- 1f0: 80 81 ld r24, Z
- 1f2: 88 23 and r24, r24
- 1f4: 51 f0 breq .+20 ; 0x20a <PARS_StrToUint+0x3c>
- value *= 10;
- 1f6: c9 01 movw r24, r18
- 1f8: 88 0f add r24, r24
- 1fa: 99 1f adc r25, r25
- 1fc: 43 e0 ldi r20, 0x03 ; 3
- 1fe: 22 0f add r18, r18
- 200: 33 1f adc r19, r19
- 202: 4a 95 dec r20
- 204: e1 f7 brne .-8 ; 0x1fe <PARS_StrToUint+0x30>
- 206: 28 0f add r18, r24
- 208: 39 1f adc r19, r25
- while(*s == '0'){
- s++;
- }
- while(*s){
- 20a: 81 91 ld r24, Z+
- 20c: 88 23 and r24, r24
- 20e: 61 f7 brne .-40 ; 0x1e8 <PARS_StrToUint+0x1a>
- value *= 10;
- }
- };
- return value;
- 210: c9 01 movw r24, r18
- 212: 08 95 ret
- 00000214 <seconds>:
- 0b00000
- };
- uint32_t seconds() {
- uint32_t m;
- cli();
- 214: f8 94 cli
- m = seconds_timer2;
- 216: 20 91 2d 03 lds r18, 0x032D
- 21a: 30 91 2e 03 lds r19, 0x032E
- 21e: 40 91 2f 03 lds r20, 0x032F
- 222: 50 91 30 03 lds r21, 0x0330
- sei();
- 226: 78 94 sei
- return m;
- }
- 228: b9 01 movw r22, r18
- 22a: ca 01 movw r24, r20
- 22c: 08 95 ret
- 0000022e <PARS_Handler>:
- void PARS_Handler(uint8_t argc, char *argv[])
- {
- 22e: 1f 93 push r17
- int_buffer = PARS_StrToUint(argv[0]);
- 230: fb 01 movw r30, r22
- 232: 80 81 ld r24, Z
- 234: 91 81 ldd r25, Z+1 ; 0x01
- 236: cb df rcall .-106 ; 0x1ce <PARS_StrToUint>
- 238: 90 93 4c 03 sts 0x034C, r25
- 23c: 80 93 4b 03 sts 0x034B, r24
- if(dialog_id == VOLTAGE_DIALOG){
- 240: 10 91 4a 03 lds r17, 0x034A
- 244: 11 30 cpi r17, 0x01 ; 1
- 246: a9 f4 brne .+42 ; 0x272 <PARS_Handler+0x44>
- if (int_buffer <= VOLTAGE_MAX && int_buffer >= VOLTAGE_MIN && int_buffer%VOLTAGE_STEP == 0)
- 248: 9c 01 movw r18, r24
- 24a: 24 5c subi r18, 0xC4 ; 196
- 24c: 39 40 sbci r19, 0x09 ; 9
- 24e: f3 e0 ldi r31, 0x03 ; 3
- 250: 29 3e cpi r18, 0xE9 ; 233
- 252: 3f 07 cpc r19, r31
- 254: 58 f4 brcc .+22 ; 0x26c <PARS_Handler+0x3e>
- 256: 64 e6 ldi r22, 0x64 ; 100
- 258: 70 e0 ldi r23, 0x00 ; 0
- 25a: bd da rcall .-2694 ; 0xfffff7d6 <__eeprom_end+0xff7ef7bd>
- 25c: 00 97 sbiw r24, 0x00 ; 0
- 25e: 31 f4 brne .+12 ; 0x26c <PARS_Handler+0x3e>
- {
- USART_SendStr("OK\r\n");
- 260: 80 e6 ldi r24, 0x60 ; 96
- 262: 90 e0 ldi r25, 0x00 ; 0
- 264: 0c da rcall .-3048 ; 0xfffff67e <__eeprom_end+0xff7ef665>
- value_parsed_success = true;
- 266: 10 93 4e 03 sts 0x034E, r17
- 26a: 03 c0 rjmp .+6 ; 0x272 <PARS_Handler+0x44>
- }else{
- USART_SendStr("Invalid value\r\n");
- 26c: 85 e6 ldi r24, 0x65 ; 101
- 26e: 90 e0 ldi r25, 0x00 ; 0
- 270: 06 da rcall .-3060 ; 0xfffff67e <__eeprom_end+0xff7ef665>
- }
- }
- if(dialog_id == AMPERAGE_DIALOG){
- 272: 80 91 4a 03 lds r24, 0x034A
- 276: 82 30 cpi r24, 0x02 ; 2
- 278: d1 f4 brne .+52 ; 0x2ae <PARS_Handler+0x80>
- if (int_buffer <= AMPERAGE_MAX && int_buffer >= AMPERAGE_MIN && int_buffer%AMPERAGE_STEP == 0)
- 27a: 80 91 4b 03 lds r24, 0x034B
- 27e: 90 91 4c 03 lds r25, 0x034C
- 282: 9c 01 movw r18, r24
- 284: 24 56 subi r18, 0x64 ; 100
- 286: 30 40 sbci r19, 0x00 ; 0
- 288: 47 e0 ldi r20, 0x07 ; 7
- 28a: 2d 36 cpi r18, 0x6D ; 109
- 28c: 34 07 cpc r19, r20
- 28e: 60 f4 brcc .+24 ; 0x2a8 <PARS_Handler+0x7a>
- 290: 64 e6 ldi r22, 0x64 ; 100
- 292: 70 e0 ldi r23, 0x00 ; 0
- 294: a0 da rcall .-2752 ; 0xfffff7d6 <__eeprom_end+0xff7ef7bd>
- 296: 00 97 sbiw r24, 0x00 ; 0
- 298: 39 f4 brne .+14 ; 0x2a8 <PARS_Handler+0x7a>
- {
- USART_SendStr("OK\r\n");
- 29a: 80 e6 ldi r24, 0x60 ; 96
- 29c: 90 e0 ldi r25, 0x00 ; 0
- 29e: ef d9 rcall .-3106 ; 0xfffff67e <__eeprom_end+0xff7ef665>
- value_parsed_success = true;
- 2a0: 81 e0 ldi r24, 0x01 ; 1
- 2a2: 80 93 4e 03 sts 0x034E, r24
- 2a6: 03 c0 rjmp .+6 ; 0x2ae <PARS_Handler+0x80>
- }else{
- USART_SendStr("Invalid value\r\n");
- 2a8: 85 e6 ldi r24, 0x65 ; 101
- 2aa: 90 e0 ldi r25, 0x00 ; 0
- 2ac: e8 d9 rcall .-3120 ; 0xfffff67e <__eeprom_end+0xff7ef665>
- }
- }
- }
- 2ae: 1f 91 pop r17
- 2b0: 08 95 ret
- 000002b2 <t2_init>:
- void t2_init(){
- TIMSK &= ~(1 << OCIE2)|(1 << TOIE2);
- 2b2: 89 b7 in r24, 0x39 ; 57
- 2b4: 8f 77 andi r24, 0x7F ; 127
- 2b6: 89 bf out 0x39, r24 ; 57
- ASSR |= (1 << AS2);
- 2b8: 82 b5 in r24, 0x22 ; 34
- 2ba: 88 60 ori r24, 0x08 ; 8
- 2bc: 82 bd out 0x22, r24 ; 34
- TCNT2 = 0;
- 2be: 14 bc out 0x24, r1 ; 36
- TCCR2 |= (1 << CS22)|(1 << CS20);
- 2c0: 85 b5 in r24, 0x25 ; 37
- 2c2: 85 60 ori r24, 0x05 ; 5
- 2c4: 85 bd out 0x25, r24 ; 37
- }
- 2c6: 08 95 ret
- 000002c8 <read_adc>:
- unsigned int read_adc(unsigned char adc_input)
- {
- uint32_t adc_ = 0;
- ADMUX= adc_input | ADC_VREF_TYPE;
- 2c8: 87 b9 out 0x07, r24 ; 7
- #else
- //round up by default
- __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
- #endif
- __builtin_avr_delay_cycles(__ticks_dc);
- 2ca: 8a e1 ldi r24, 0x1A ; 26
- 2cc: 8a 95 dec r24
- 2ce: f1 f7 brne .-4 ; 0x2cc <read_adc+0x4>
- 2d0: 00 c0 rjmp .+0 ; 0x2d2 <read_adc+0xa>
- 2d2: e4 e6 ldi r30, 0x64 ; 100
- }
- unsigned int read_adc(unsigned char adc_input)
- {
- uint32_t adc_ = 0;
- 2d4: 60 e0 ldi r22, 0x00 ; 0
- 2d6: 70 e0 ldi r23, 0x00 ; 0
- 2d8: cb 01 movw r24, r22
- ADMUX= adc_input | ADC_VREF_TYPE;
- _delay_us(10);
- for (char i = 0; i < ADC_READ_NUM; i++)
- {
- ADCSRA|=(1<<ADSC);
- 2da: 36 9a sbi 0x06, 6 ; 6
- while ((ADCSRA & (1<<ADIF))==0);
- 2dc: 34 9b sbis 0x06, 4 ; 6
- 2de: fe cf rjmp .-4 ; 0x2dc <read_adc+0x14>
- ADCSRA|=(1<<ADIF);
- 2e0: 34 9a sbi 0x06, 4 ; 6
- adc_ += ADCW;
- 2e2: 24 b1 in r18, 0x04 ; 4
- 2e4: 35 b1 in r19, 0x05 ; 5
- 2e6: 40 e0 ldi r20, 0x00 ; 0
- 2e8: 50 e0 ldi r21, 0x00 ; 0
- 2ea: 62 0f add r22, r18
- 2ec: 73 1f adc r23, r19
- 2ee: 84 1f adc r24, r20
- 2f0: 95 1f adc r25, r21
- 2f2: e1 50 subi r30, 0x01 ; 1
- unsigned int read_adc(unsigned char adc_input)
- {
- uint32_t adc_ = 0;
- ADMUX= adc_input | ADC_VREF_TYPE;
- _delay_us(10);
- for (char i = 0; i < ADC_READ_NUM; i++)
- 2f4: 91 f7 brne .-28 ; 0x2da <read_adc+0x12>
- ADCSRA|=(1<<ADSC);
- while ((ADCSRA & (1<<ADIF))==0);
- ADCSRA|=(1<<ADIF);
- adc_ += ADCW;
- }
- return adc_/ADC_READ_NUM;
- 2f6: 24 e6 ldi r18, 0x64 ; 100
- 2f8: 30 e0 ldi r19, 0x00 ; 0
- 2fa: 40 e0 ldi r20, 0x00 ; 0
- 2fc: 50 e0 ldi r21, 0x00 ; 0
- 2fe: 7f da rcall .-2818 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- }
- 300: c9 01 movw r24, r18
- 302: 08 95 ret
- 00000304 <printUL>:
- /*
- Функции для экономии памяти
- */
- void printUL(char i)
- {
- 304: 1f 93 push r17
- LCD_WriteData(0x30+i);
- 306: 18 2f mov r17, r24
- 308: 10 5d subi r17, 0xD0 ; 208
- 30a: 81 2f mov r24, r17
- 30c: fe d7 rcall .+4092 ; 0x130a <LCD_WriteData>
- USART_PutChar(0x30+i);
- 30e: 81 2f mov r24, r17
- 310: 90 d9 rcall .-3296 ; 0xfffff632 <__eeprom_end+0xff7ef619>
- }
- 312: 1f 91 pop r17
- 314: 08 95 ret
- 00000316 <printUARTLCD>:
- void printUARTLCD(char i, bool uart)
- {
- 316: 1f 93 push r17
- 318: df 93 push r29
- 31a: cf 93 push r28
- 31c: 0f 92 push r0
- 31e: cd b7 in r28, 0x3d ; 61
- 320: de b7 in r29, 0x3e ; 62
- LCD_WriteData(0x30+i);
- 322: 18 2f mov r17, r24
- 324: 10 5d subi r17, 0xD0 ; 208
- 326: 81 2f mov r24, r17
- 328: 69 83 std Y+1, r22 ; 0x01
- 32a: ef d7 rcall .+4062 ; 0x130a <LCD_WriteData>
- if(uart){
- 32c: 69 81 ldd r22, Y+1 ; 0x01
- 32e: 66 23 and r22, r22
- 330: 11 f0 breq .+4 ; 0x336 <printUARTLCD+0x20>
- USART_PutChar(0x30+i);
- 332: 81 2f mov r24, r17
- 334: 7e d9 rcall .-3332 ; 0xfffff632 <__eeprom_end+0xff7ef619>
- }
- }
- 336: 0f 90 pop r0
- 338: cf 91 pop r28
- 33a: df 91 pop r29
- 33c: 1f 91 pop r17
- 33e: 08 95 ret
- 00000340 <printITime>:
- void printITime(char a, char b)
- {
- 340: 0f 93 push r16
- 342: 1f 93 push r17
- 344: 16 2f mov r17, r22
- LCD_WriteData(0x30+a);
- 346: 08 2f mov r16, r24
- 348: 00 5d subi r16, 0xD0 ; 208
- 34a: 80 2f mov r24, r16
- 34c: de d7 rcall .+4028 ; 0x130a <LCD_WriteData>
- LCD_WriteData(0x30+b);
- 34e: 10 5d subi r17, 0xD0 ; 208
- 350: 81 2f mov r24, r17
- 352: db d7 rcall .+4022 ; 0x130a <LCD_WriteData>
- USART_PutChar(0x30+a);
- 354: 80 2f mov r24, r16
- 356: 6d d9 rcall .-3366 ; 0xfffff632 <__eeprom_end+0xff7ef619>
- USART_PutChar(0x30+b);
- 358: 81 2f mov r24, r17
- 35a: 6b d9 rcall .-3370 ; 0xfffff632 <__eeprom_end+0xff7ef619>
- }
- 35c: 1f 91 pop r17
- 35e: 0f 91 pop r16
- 360: 08 95 ret
- 00000362 <printVoltage>:
- USART_PutChar('.');
- printUL((val%1000)/100);
- printUL((val%100)/10);
- }*/
- void printVoltage(unsigned long val)
- {
- 362: af 92 push r10
- 364: bf 92 push r11
- 366: cf 92 push r12
- 368: df 92 push r13
- 36a: ef 92 push r14
- 36c: ff 92 push r15
- 36e: 0f 93 push r16
- 370: 1f 93 push r17
- 372: 7b 01 movw r14, r22
- 374: 8c 01 movw r16, r24
- V_ = (val%100000)/10000;
- 376: 20 ea ldi r18, 0xA0 ; 160
- 378: 36 e8 ldi r19, 0x86 ; 134
- 37a: 41 e0 ldi r20, 0x01 ; 1
- 37c: 50 e0 ldi r21, 0x00 ; 0
- 37e: 3f da rcall .-2946 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 380: 20 e1 ldi r18, 0x10 ; 16
- 382: 37 e2 ldi r19, 0x27 ; 39
- 384: 40 e0 ldi r20, 0x00 ; 0
- 386: 50 e0 ldi r21, 0x00 ; 0
- 388: 3a da rcall .-2956 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 38a: 20 93 4d 03 sts 0x034D, r18
- if(V_){printUL(V_);}
- 38e: 22 23 and r18, r18
- 390: 11 f0 breq .+4 ; 0x396 <printVoltage+0x34>
- 392: 82 2f mov r24, r18
- 394: b7 df rcall .-146 ; 0x304 <printUL>
- printUL((val%10000)/1000);
- 396: c8 01 movw r24, r16
- 398: b7 01 movw r22, r14
- 39a: 20 e1 ldi r18, 0x10 ; 16
- 39c: 37 e2 ldi r19, 0x27 ; 39
- 39e: 40 e0 ldi r20, 0x00 ; 0
- 3a0: 50 e0 ldi r21, 0x00 ; 0
- 3a2: 2d da rcall .-2982 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 3a4: 38 ee ldi r19, 0xE8 ; 232
- 3a6: a3 2e mov r10, r19
- 3a8: 33 e0 ldi r19, 0x03 ; 3
- 3aa: b3 2e mov r11, r19
- 3ac: c1 2c mov r12, r1
- 3ae: d1 2c mov r13, r1
- 3b0: a6 01 movw r20, r12
- 3b2: 95 01 movw r18, r10
- 3b4: 24 da rcall .-3000 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 3b6: 82 2f mov r24, r18
- 3b8: a5 df rcall .-182 ; 0x304 <printUL>
- LCD_WriteData('.');
- 3ba: 8e e2 ldi r24, 0x2E ; 46
- 3bc: a6 d7 rcall .+3916 ; 0x130a <LCD_WriteData>
- USART_PutChar('.');
- 3be: 8e e2 ldi r24, 0x2E ; 46
- 3c0: 38 d9 rcall .-3472 ; 0xfffff632 <__eeprom_end+0xff7ef619>
- printUL((val%1000)/100);
- 3c2: c8 01 movw r24, r16
- 3c4: b7 01 movw r22, r14
- 3c6: a6 01 movw r20, r12
- 3c8: 95 01 movw r18, r10
- 3ca: 19 da rcall .-3022 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 3cc: 24 e6 ldi r18, 0x64 ; 100
- 3ce: a2 2e mov r10, r18
- 3d0: b1 2c mov r11, r1
- 3d2: c1 2c mov r12, r1
- 3d4: d1 2c mov r13, r1
- 3d6: a6 01 movw r20, r12
- 3d8: 95 01 movw r18, r10
- 3da: 11 da rcall .-3038 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 3dc: 82 2f mov r24, r18
- 3de: 92 df rcall .-220 ; 0x304 <printUL>
- if(!V_){
- 3e0: 80 91 4d 03 lds r24, 0x034D
- 3e4: 88 23 and r24, r24
- 3e6: 61 f4 brne .+24 ; 0x400 <printVoltage+0x9e>
- printUL((val%100)/10);
- 3e8: c8 01 movw r24, r16
- 3ea: b7 01 movw r22, r14
- 3ec: a6 01 movw r20, r12
- 3ee: 95 01 movw r18, r10
- 3f0: 06 da rcall .-3060 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 3f2: 2a e0 ldi r18, 0x0A ; 10
- 3f4: 30 e0 ldi r19, 0x00 ; 0
- 3f6: 40 e0 ldi r20, 0x00 ; 0
- 3f8: 50 e0 ldi r21, 0x00 ; 0
- 3fa: 01 da rcall .-3070 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 3fc: 82 2f mov r24, r18
- 3fe: 82 df rcall .-252 ; 0x304 <printUL>
- }
- }
- 400: 1f 91 pop r17
- 402: 0f 91 pop r16
- 404: ff 90 pop r15
- 406: ef 90 pop r14
- 408: df 90 pop r13
- 40a: cf 90 pop r12
- 40c: bf 90 pop r11
- 40e: af 90 pop r10
- 410: 08 95 ret
- 00000412 <coolerCalc>:
- long map(long x, long in_min, long in_max, long out_min, long out_max)
- {
- return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
- }
- void coolerCalc(){
- cooler = read_adc(COOLER_TEMP_MUX_CHANNEL);
- 412: 82 e0 ldi r24, 0x02 ; 2
- 414: 59 df rcall .-334 ; 0x2c8 <read_adc>
- 416: 90 93 59 03 sts 0x0359, r25
- 41a: 80 93 58 03 sts 0x0358, r24
- if(cooler >= COOLER_ON_TEMP_VALUE && !start_cool){
- 41e: 21 e0 ldi r18, 0x01 ; 1
- 420: 8b 3d cpi r24, 0xDB ; 219
- 422: 92 07 cpc r25, r18
- 424: 40 f0 brcs .+16 ; 0x436 <coolerCalc+0x24>
- 426: 80 91 5a 03 lds r24, 0x035A
- 42a: 88 23 and r24, r24
- 42c: 81 f4 brne .+32 ; 0x44e <coolerCalc+0x3c>
- start_cool = true;
- 42e: 81 e0 ldi r24, 0x01 ; 1
- 430: 80 93 5a 03 sts 0x035A, r24
- 434: 0c c0 rjmp .+24 ; 0x44e <coolerCalc+0x3c>
- }
- if(cooler <= COOLER_OFF_TEMP_VALUE && start_cool){
- 436: 21 e0 ldi r18, 0x01 ; 1
- 438: 8a 35 cpi r24, 0x5A ; 90
- 43a: 92 07 cpc r25, r18
- 43c: 40 f4 brcc .+16 ; 0x44e <coolerCalc+0x3c>
- 43e: 80 91 5a 03 lds r24, 0x035A
- 442: 88 23 and r24, r24
- 444: 21 f0 breq .+8 ; 0x44e <coolerCalc+0x3c>
- start_cool = false;
- 446: 10 92 5a 03 sts 0x035A, r1
- OCR1B = 0;
- 44a: 19 bc out 0x29, r1 ; 41
- 44c: 18 bc out 0x28, r1 ; 40
- }
- if(start_cool){
- 44e: 80 91 5a 03 lds r24, 0x035A
- 452: 88 23 and r24, r24
- 454: b1 f0 breq .+44 ; 0x482 <__stack+0x23>
- OCR1B = map(cooler, 0, 1023, COOLER_MIN_PWM, 1023);
- 456: 60 91 58 03 lds r22, 0x0358
- 45a: 70 91 59 03 lds r23, 0x0359
- 45e: 80 e0 ldi r24, 0x00 ; 0
- 460: 90 e0 ldi r25, 0x00 ; 0
- }
- }
- /* Конец долбоебизма */
- long map(long x, long in_min, long in_max, long out_min, long out_max)
- {
- return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
- 462: 2f ef ldi r18, 0xFF ; 255
- 464: 31 e0 ldi r19, 0x01 ; 1
- 466: 40 e0 ldi r20, 0x00 ; 0
- 468: 50 e0 ldi r21, 0x00 ; 0
- 46a: 96 d9 rcall .-3284 ; 0xfffff798 <__eeprom_end+0xff7ef77f>
- 46c: 2f ef ldi r18, 0xFF ; 255
- 46e: 33 e0 ldi r19, 0x03 ; 3
- 470: 40 e0 ldi r20, 0x00 ; 0
- 472: 50 e0 ldi r21, 0x00 ; 0
- 474: e6 d9 rcall .-3124 ; 0xfffff842 <__eeprom_end+0xff7ef829>
- 476: 20 50 subi r18, 0x00 ; 0
- 478: 3e 4f sbci r19, 0xFE ; 254
- 47a: 4f 4f sbci r20, 0xFF ; 255
- 47c: 5f 4f sbci r21, 0xFF ; 255
- if(cooler <= COOLER_OFF_TEMP_VALUE && start_cool){
- start_cool = false;
- OCR1B = 0;
- }
- if(start_cool){
- OCR1B = map(cooler, 0, 1023, COOLER_MIN_PWM, 1023);
- 47e: 39 bd out 0x29, r19 ; 41
- 480: 28 bd out 0x28, r18 ; 40
- 482: 08 95 ret
- 00000484 <checkBattery>:
- }
- }
- void checkBattery(bool clear, bool test)
- {
- 484: 0f 93 push r16
- 486: 1f 93 push r17
- 488: 18 2f mov r17, r24
- 48a: 06 2f mov r16, r22
- if(read_adc(VOLTAGE_MUX_CHANNEL) < CALC_ADC_VOLTAGE(NO_BATTERY_VALUE)){
- 48c: 80 e0 ldi r24, 0x00 ; 0
- 48e: 1c df rcall .-456 ; 0x2c8 <read_adc>
- 490: 87 32 cpi r24, 0x27 ; 39
- 492: 91 05 cpc r25, r1
- 494: 08 f0 brcs .+2 ; 0x498 <checkBattery+0x14>
- 496: 4f c0 rjmp .+158 ; 0x536 <checkBattery+0xb2>
- LCD_Clear();
- 498: 81 e0 ldi r24, 0x01 ; 1
- 49a: 26 d7 rcall .+3660 ; 0x12e8 <LCD_WriteCom>
- #else
- //round up by default
- __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
- #endif
- __builtin_avr_delay_cycles(__ticks_dc);
- 49c: 8f e9 ldi r24, 0x9F ; 159
- 49e: 9f e0 ldi r25, 0x0F ; 15
- 4a0: 01 97 sbiw r24, 0x01 ; 1
- 4a2: f1 f7 brne .-4 ; 0x4a0 <checkBattery+0x1c>
- 4a4: 00 c0 rjmp .+0 ; 0x4a6 <checkBattery+0x22>
- 4a6: 00 00 nop
- LCD_Goto(0,0);
- 4a8: 80 e8 ldi r24, 0x80 ; 128
- 4aa: 1e d7 rcall .+3644 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr("Please connect");
- 4ac: 85 e7 ldi r24, 0x75 ; 117
- 4ae: 90 e0 ldi r25, 0x00 ; 0
- 4b0: 60 d7 rcall .+3776 ; 0x1372 <LCD_SendStr>
- LCD_Goto(0,1);
- 4b2: 80 ec ldi r24, 0xC0 ; 192
- 4b4: 19 d7 rcall .+3634 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr("the battery ");
- 4b6: 84 e8 ldi r24, 0x84 ; 132
- 4b8: 90 e0 ldi r25, 0x00 ; 0
- 4ba: 5b d7 rcall .+3766 ; 0x1372 <LCD_SendStr>
- OCR1A = 0;
- 4bc: 1b bc out 0x2b, r1 ; 43
- 4be: 1a bc out 0x2a, r1 ; 42
- if(test){
- 4c0: 00 23 and r16, r16
- 4c2: 61 f0 breq .+24 ; 0x4dc <checkBattery+0x58>
- //Подключение АКБ
- BATTERY_OFF;
- 4c4: 86 e0 ldi r24, 0x06 ; 6
- 4c6: 90 e0 ldi r25, 0x00 ; 0
- 4c8: 60 e0 ldi r22, 0x00 ; 0
- 4ca: 70 e0 ldi r23, 0x00 ; 0
- 4cc: 40 e0 ldi r20, 0x00 ; 0
- 4ce: 50 e0 ldi r21, 0x00 ; 0
- 4d0: e7 dd rcall .-1074 ; 0xa0 <ShiftDigitalWrite>
- //Включение таймера времени
- TIMSK &= ~(1 << TOIE2);
- 4d2: 89 b7 in r24, 0x39 ; 57
- 4d4: 8f 7b andi r24, 0xBF ; 191
- 4d6: 89 bf out 0x39, r24 ; 57
- 4d8: 01 c0 rjmp .+2 ; 0x4dc <checkBattery+0x58>
- }
- while(read_adc(VOLTAGE_MUX_CHANNEL) < CALC_ADC_VOLTAGE(NO_BATTERY_VALUE)){coolerCalc();}
- 4da: 9b df rcall .-202 ; 0x412 <coolerCalc>
- 4dc: 80 e0 ldi r24, 0x00 ; 0
- 4de: f4 de rcall .-536 ; 0x2c8 <read_adc>
- 4e0: 87 32 cpi r24, 0x27 ; 39
- 4e2: 91 05 cpc r25, r1
- 4e4: d0 f3 brcs .-12 ; 0x4da <checkBattery+0x56>
- if(test){
- 4e6: 00 23 and r16, r16
- 4e8: e1 f0 breq .+56 ; 0x522 <checkBattery+0x9e>
- //Подключение АКБ
- BATTERY_ON;
- 4ea: 86 e0 ldi r24, 0x06 ; 6
- 4ec: 90 e0 ldi r25, 0x00 ; 0
- 4ee: 61 e0 ldi r22, 0x01 ; 1
- 4f0: 70 e0 ldi r23, 0x00 ; 0
- 4f2: 40 e0 ldi r20, 0x00 ; 0
- 4f4: 50 e0 ldi r21, 0x00 ; 0
- 4f6: d4 dd rcall .-1112 ; 0xa0 <ShiftDigitalWrite>
- //Включение таймера времени
- TIMSK |= (1 << TOIE2);
- 4f8: 89 b7 in r24, 0x39 ; 57
- 4fa: 80 64 ori r24, 0x40 ; 64
- 4fc: 89 bf out 0x39, r24 ; 57
- //PWM Calc
- OCR1A = AMPERAGE_PWM_COEFFICIENT*(I_set/AMPERAGE_PWM_COEFFICIENT_STEP)+AMPERAGE_PWM_COEFFICIENT_CORRECT*(I_set/AMPERAGE_PWM_COEFFICIENT_STEP);
- 4fe: 80 91 27 03 lds r24, 0x0327
- 502: 90 91 28 03 lds r25, 0x0328
- 506: 64 e6 ldi r22, 0x64 ; 100
- 508: 70 e0 ldi r23, 0x00 ; 0
- 50a: 65 d9 rcall .-3382 ; 0xfffff7d6 <__eeprom_end+0xff7ef7bd>
- 50c: 4c e2 ldi r20, 0x2C ; 44
- 50e: 50 e0 ldi r21, 0x00 ; 0
- 510: 64 9f mul r22, r20
- 512: 90 01 movw r18, r0
- 514: 65 9f mul r22, r21
- 516: 30 0d add r19, r0
- 518: 74 9f mul r23, r20
- 51a: 30 0d add r19, r0
- 51c: 11 24 eor r1, r1
- 51e: 3b bd out 0x2b, r19 ; 43
- 520: 2a bd out 0x2a, r18 ; 42
- }
- if(clear) LCD_Clear();
- 522: 11 23 and r17, r17
- 524: 41 f0 breq .+16 ; 0x536 <checkBattery+0xb2>
- 526: 81 e0 ldi r24, 0x01 ; 1
- 528: df d6 rcall .+3518 ; 0x12e8 <LCD_WriteCom>
- 52a: 8f e9 ldi r24, 0x9F ; 159
- 52c: 9f e0 ldi r25, 0x0F ; 15
- 52e: 01 97 sbiw r24, 0x01 ; 1
- 530: f1 f7 brne .-4 ; 0x52e <checkBattery+0xaa>
- 532: 00 c0 rjmp .+0 ; 0x534 <checkBattery+0xb0>
- 534: 00 00 nop
- }
- }
- 536: 1f 91 pop r17
- 538: 0f 91 pop r16
- 53a: 08 95 ret
- 0000053c <Reset_Button>:
- void Reset_Button(){
- i = 0;
- 53c: 10 92 47 03 sts 0x0347, r1
- button_event = 0;
- 540: 10 92 48 03 sts 0x0348, r1
- while(i != ENTER_BUTTON_ID || button_event != BUT_PRESSED_CODE){
- 544: 08 c0 rjmp .+16 ; 0x556 <Reset_Button+0x1a>
- BUT_Poll();
- 546: 2b d8 rcall .-4010 ; 0xfffff59e <__eeprom_end+0xff7ef585>
- i = BUT_GetBut();
- 548: e0 d7 rcall .+4032 ; 0x150a <BUT_GetBut>
- 54a: 80 93 47 03 sts 0x0347, r24
- button_event = BUT_GetBut();
- 54e: dd d7 rcall .+4026 ; 0x150a <BUT_GetBut>
- 550: 80 93 48 03 sts 0x0348, r24
- coolerCalc();
- 554: 5e df rcall .-324 ; 0x412 <coolerCalc>
- }
- void Reset_Button(){
- i = 0;
- button_event = 0;
- while(i != ENTER_BUTTON_ID || button_event != BUT_PRESSED_CODE){
- 556: 80 91 47 03 lds r24, 0x0347
- 55a: 81 30 cpi r24, 0x01 ; 1
- 55c: a1 f7 brne .-24 ; 0x546 <Reset_Button+0xa>
- 55e: 80 91 48 03 lds r24, 0x0348
- 562: 81 30 cpi r24, 0x01 ; 1
- 564: 81 f7 brne .-32 ; 0x546 <Reset_Button+0xa>
- BUT_Poll();
- i = BUT_GetBut();
- button_event = BUT_GetBut();
- coolerCalc();
- }
- }
- 566: 08 95 ret
- 00000568 <checkTempPotection>:
- void checkTempPotection(){
- if(read_adc(BATTERY_TEMP_MUX_CHANNEL) >= BATTERY_CRITICAL_TEMP_VALUE){
- 568: 85 e0 ldi r24, 0x05 ; 5
- 56a: ae de rcall .-676 ; 0x2c8 <read_adc>
- 56c: 24 e0 ldi r18, 0x04 ; 4
- 56e: 80 30 cpi r24, 0x00 ; 0
- 570: 92 07 cpc r25, r18
- 572: 78 f1 brcs .+94 ; 0x5d2 <checkTempPotection+0x6a>
- LCD_Clear();
- 574: 81 e0 ldi r24, 0x01 ; 1
- 576: b8 d6 rcall .+3440 ; 0x12e8 <LCD_WriteCom>
- 578: 8f e9 ldi r24, 0x9F ; 159
- 57a: 9f e0 ldi r25, 0x0F ; 15
- 57c: 01 97 sbiw r24, 0x01 ; 1
- 57e: f1 f7 brne .-4 ; 0x57c <checkTempPotection+0x14>
- 580: 00 c0 rjmp .+0 ; 0x582 <checkTempPotection+0x1a>
- 582: 00 00 nop
- LCD_Goto(0,0);
- 584: 80 e8 ldi r24, 0x80 ; 128
- 586: b0 d6 rcall .+3424 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr("High temperature");
- 588: 81 e9 ldi r24, 0x91 ; 145
- 58a: 90 e0 ldi r25, 0x00 ; 0
- 58c: f2 d6 rcall .+3556 ; 0x1372 <LCD_SendStr>
- LCD_Goto(1,1);
- 58e: 81 ec ldi r24, 0xC1 ; 193
- 590: ab d6 rcall .+3414 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr("Enter - reboot");
- 592: 82 ea ldi r24, 0xA2 ; 162
- 594: 90 e0 ldi r25, 0x00 ; 0
- 596: ed d6 rcall .+3546 ; 0x1372 <LCD_SendStr>
- USART_SendStr("Critical temperarure!!! Test Stopped\r\n");
- 598: 81 eb ldi r24, 0xB1 ; 177
- 59a: 90 e0 ldi r25, 0x00 ; 0
- 59c: 70 d8 rcall .-3872 ; 0xfffff67e <__eeprom_end+0xff7ef665>
- OCR1A = 0;
- 59e: 1b bc out 0x2b, r1 ; 43
- 5a0: 1a bc out 0x2a, r1 ; 42
- TIMSK &= ~(1 << TOIE2);
- 5a2: 89 b7 in r24, 0x39 ; 57
- 5a4: 8f 7b andi r24, 0xBF ; 191
- 5a6: 89 bf out 0x39, r24 ; 57
- BATTERY_OFF;
- 5a8: 86 e0 ldi r24, 0x06 ; 6
- 5aa: 90 e0 ldi r25, 0x00 ; 0
- 5ac: 60 e0 ldi r22, 0x00 ; 0
- 5ae: 70 e0 ldi r23, 0x00 ; 0
- 5b0: 40 e0 ldi r20, 0x00 ; 0
- 5b2: 50 e0 ldi r21, 0x00 ; 0
- 5b4: 75 dd rcall .-1302 ; 0xa0 <ShiftDigitalWrite>
- Reset_Button();
- 5b6: c2 df rcall .-124 ; 0x53c <Reset_Button>
- USART_SendStr("Rebooting\r\n");
- 5b8: 88 ed ldi r24, 0xD8 ; 216
- 5ba: 90 e0 ldi r25, 0x00 ; 0
- 5bc: 60 d8 rcall .-3904 ; 0xfffff67e <__eeprom_end+0xff7ef665>
- soft_reset();
- 5be: 28 e0 ldi r18, 0x08 ; 8
- 5c0: 88 e1 ldi r24, 0x18 ; 24
- 5c2: 90 e0 ldi r25, 0x00 ; 0
- 5c4: 0f b6 in r0, 0x3f ; 63
- 5c6: f8 94 cli
- 5c8: a8 95 wdr
- 5ca: 81 bd out 0x21, r24 ; 33
- 5cc: 0f be out 0x3f, r0 ; 63
- 5ce: 21 bd out 0x21, r18 ; 33
- 5d0: ff cf rjmp .-2 ; 0x5d0 <checkTempPotection+0x68>
- 5d2: 08 95 ret
- 000005d4 <printCapacity>:
- }
- }
- void printCapacity(unsigned long Capacity, bool mode, bool uart){
- 5d4: 4f 92 push r4
- 5d6: 5f 92 push r5
- 5d8: 6f 92 push r6
- 5da: 7f 92 push r7
- 5dc: 8f 92 push r8
- 5de: 9f 92 push r9
- 5e0: af 92 push r10
- 5e2: bf 92 push r11
- 5e4: cf 92 push r12
- 5e6: df 92 push r13
- 5e8: ef 92 push r14
- 5ea: ff 92 push r15
- 5ec: 0f 93 push r16
- 5ee: 1f 93 push r17
- 5f0: 6b 01 movw r12, r22
- 5f2: 7c 01 movw r14, r24
- 5f4: 04 2f mov r16, r20
- 5f6: 12 2f mov r17, r18
- if(mode){
- 5f8: 44 23 and r20, r20
- 5fa: 39 f0 breq .+14 ; 0x60a <printCapacity+0x36>
- LCD_Goto(4,1);
- 5fc: 84 ec ldi r24, 0xC4 ; 196
- 5fe: 74 d6 rcall .+3304 ; 0x12e8 <LCD_WriteCom>
- if(uart){
- 600: 11 23 and r17, r17
- 602: 19 f0 breq .+6 ; 0x60a <printCapacity+0x36>
- USART_SendStr("Capacity: ");
- 604: 84 ee ldi r24, 0xE4 ; 228
- 606: 90 e0 ldi r25, 0x00 ; 0
- 608: 3a d8 rcall .-3980 ; 0xfffff67e <__eeprom_end+0xff7ef665>
- }
- }
- //Десятки тыс
- printUARTLCD(Capacity/10000, uart);
- 60a: c7 01 movw r24, r14
- 60c: b6 01 movw r22, r12
- 60e: 20 e1 ldi r18, 0x10 ; 16
- 610: 37 e2 ldi r19, 0x27 ; 39
- 612: 40 e0 ldi r20, 0x00 ; 0
- 614: 50 e0 ldi r21, 0x00 ; 0
- 616: f3 d8 rcall .-3610 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 618: 2b 01 movw r4, r22
- 61a: 3c 01 movw r6, r24
- 61c: 82 2f mov r24, r18
- 61e: 61 2f mov r22, r17
- 620: 7a de rcall .-780 ; 0x316 <printUARTLCD>
- //Тысячи
- printUARTLCD((Capacity%10000)/1000, uart);
- 622: 68 ee ldi r22, 0xE8 ; 232
- 624: 86 2e mov r8, r22
- 626: 63 e0 ldi r22, 0x03 ; 3
- 628: 96 2e mov r9, r22
- 62a: a1 2c mov r10, r1
- 62c: b1 2c mov r11, r1
- 62e: c3 01 movw r24, r6
- 630: b2 01 movw r22, r4
- 632: a5 01 movw r20, r10
- 634: 94 01 movw r18, r8
- 636: e3 d8 rcall .-3642 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 638: 82 2f mov r24, r18
- 63a: 61 2f mov r22, r17
- 63c: 6c de rcall .-808 ; 0x316 <printUARTLCD>
- //Сотни
- printUARTLCD((Capacity%1000)/100, uart);
- 63e: c7 01 movw r24, r14
- 640: b6 01 movw r22, r12
- 642: a5 01 movw r20, r10
- 644: 94 01 movw r18, r8
- 646: db d8 rcall .-3658 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 648: 54 e6 ldi r21, 0x64 ; 100
- 64a: 85 2e mov r8, r21
- 64c: 91 2c mov r9, r1
- 64e: a1 2c mov r10, r1
- 650: b1 2c mov r11, r1
- 652: a5 01 movw r20, r10
- 654: 94 01 movw r18, r8
- 656: d3 d8 rcall .-3674 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 658: 82 2f mov r24, r18
- 65a: 61 2f mov r22, r17
- 65c: 5c de rcall .-840 ; 0x316 <printUARTLCD>
- //Десятки
- printUARTLCD((Capacity%100)/10, uart);
- 65e: c7 01 movw r24, r14
- 660: b6 01 movw r22, r12
- 662: a5 01 movw r20, r10
- 664: 94 01 movw r18, r8
- 666: cb d8 rcall .-3690 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 668: 4a e0 ldi r20, 0x0A ; 10
- 66a: 84 2e mov r8, r20
- 66c: 91 2c mov r9, r1
- 66e: a1 2c mov r10, r1
- 670: b1 2c mov r11, r1
- 672: a5 01 movw r20, r10
- 674: 94 01 movw r18, r8
- 676: c3 d8 rcall .-3706 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 678: 82 2f mov r24, r18
- 67a: 61 2f mov r22, r17
- 67c: 4c de rcall .-872 ; 0x316 <printUARTLCD>
- printUARTLCD((Capacity%10), uart);
- 67e: c7 01 movw r24, r14
- 680: b6 01 movw r22, r12
- 682: a5 01 movw r20, r10
- 684: 94 01 movw r18, r8
- 686: bb d8 rcall .-3722 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 688: 86 2f mov r24, r22
- 68a: 61 2f mov r22, r17
- 68c: 44 de rcall .-888 ; 0x316 <printUARTLCD>
- if(mode){
- 68e: 00 23 and r16, r16
- 690: 41 f0 breq .+16 ; 0x6a2 <printCapacity+0xce>
- if(uart){
- 692: 11 23 and r17, r17
- 694: 19 f0 breq .+6 ; 0x69c <printCapacity+0xc8>
- USART_SendStr(" mAh\r\n");
- 696: 8f ee ldi r24, 0xEF ; 239
- 698: 90 e0 ldi r25, 0x00 ; 0
- 69a: f1 d7 rcall .+4066 ; 0x167e <USART_SendStr>
- }
- LCD_SendStr("mAh");
- 69c: 86 ef ldi r24, 0xF6 ; 246
- 69e: 90 e0 ldi r25, 0x00 ; 0
- 6a0: 68 d6 rcall .+3280 ; 0x1372 <LCD_SendStr>
- }
- }
- 6a2: 1f 91 pop r17
- 6a4: 0f 91 pop r16
- 6a6: ff 90 pop r15
- 6a8: ef 90 pop r14
- 6aa: df 90 pop r13
- 6ac: cf 90 pop r12
- 6ae: bf 90 pop r11
- 6b0: af 90 pop r10
- 6b2: 9f 90 pop r9
- 6b4: 8f 90 pop r8
- 6b6: 7f 90 pop r7
- 6b8: 6f 90 pop r6
- 6ba: 5f 90 pop r5
- 6bc: 4f 90 pop r4
- 6be: 08 95 ret
- 000006c0 <Charge_battery>:
- void Charge_battery(bool end)
- {
- 6c0: cf 92 push r12
- 6c2: df 92 push r13
- 6c4: ef 92 push r14
- 6c6: ff 92 push r15
- 6c8: 1f 93 push r17
- 6ca: 18 2f mov r17, r24
- TP4056_ON;
- 6cc: 87 e0 ldi r24, 0x07 ; 7
- 6ce: 90 e0 ldi r25, 0x00 ; 0
- 6d0: 61 e0 ldi r22, 0x01 ; 1
- 6d2: 70 e0 ldi r23, 0x00 ; 0
- 6d4: 40 e0 ldi r20, 0x00 ; 0
- 6d6: 50 e0 ldi r21, 0x00 ; 0
- 6d8: e3 dc rcall .-1594 ; 0xa0 <ShiftDigitalWrite>
- LCD_Goto(4,0);
- 6da: 84 e8 ldi r24, 0x84 ; 132
- 6dc: 05 d6 rcall .+3082 ; 0x12e8 <LCD_WriteCom>
- USART_SendStr("Charging\r\n");
- 6de: 8a ef ldi r24, 0xFA ; 250
- 6e0: 90 e0 ldi r25, 0x00 ; 0
- 6e2: cd d7 rcall .+3994 ; 0x167e <USART_SendStr>
- while(read_adc(VOLTAGE_MUX_CHANNEL) < CALC_ADC_VOLTAGE(CHARGE_TRIGGER_VALUE) && !(PINC & (1 << PC3))){
- LCD_Goto(4,0);
- LCD_SendStr("Charging");
- if(end){
- coolerCalc();
- printCapacity(Capacity/3600, true, false);
- 6e4: 70 e1 ldi r23, 0x10 ; 16
- 6e6: c7 2e mov r12, r23
- 6e8: 7e e0 ldi r23, 0x0E ; 14
- 6ea: d7 2e mov r13, r23
- 6ec: e1 2c mov r14, r1
- 6ee: f1 2c mov r15, r1
- {
- TP4056_ON;
- LCD_Goto(4,0);
- USART_SendStr("Charging\r\n");
- while(read_adc(VOLTAGE_MUX_CHANNEL) < CALC_ADC_VOLTAGE(CHARGE_TRIGGER_VALUE) && !(PINC & (1 << PC3))){
- 6f0: 1c c0 rjmp .+56 ; 0x72a <Charge_battery+0x6a>
- LCD_Goto(4,0);
- 6f2: 84 e8 ldi r24, 0x84 ; 132
- 6f4: f9 d5 rcall .+3058 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr("Charging");
- 6f6: 85 e0 ldi r24, 0x05 ; 5
- 6f8: 91 e0 ldi r25, 0x01 ; 1
- 6fa: 3b d6 rcall .+3190 ; 0x1372 <LCD_SendStr>
- if(end){
- 6fc: 11 23 and r17, r17
- 6fe: 89 f0 breq .+34 ; 0x722 <Charge_battery+0x62>
- coolerCalc();
- 700: 88 de rcall .-752 ; 0x412 <coolerCalc>
- printCapacity(Capacity/3600, true, false);
- 702: 60 91 3b 03 lds r22, 0x033B
- 706: 70 91 3c 03 lds r23, 0x033C
- 70a: 80 91 3d 03 lds r24, 0x033D
- 70e: 90 91 3e 03 lds r25, 0x033E
- 712: a7 01 movw r20, r14
- 714: 96 01 movw r18, r12
- 716: 73 d8 rcall .-3866 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 718: ca 01 movw r24, r20
- 71a: b9 01 movw r22, r18
- 71c: 41 e0 ldi r20, 0x01 ; 1
- 71e: 20 e0 ldi r18, 0x00 ; 0
- 720: 59 df rcall .-334 ; 0x5d4 <printCapacity>
- }
- checkBattery(true, false);
- 722: 81 e0 ldi r24, 0x01 ; 1
- 724: 60 e0 ldi r22, 0x00 ; 0
- 726: ae de rcall .-676 ; 0x484 <checkBattery>
- checkTempPotection();
- 728: 1f df rcall .-450 ; 0x568 <checkTempPotection>
- {
- TP4056_ON;
- LCD_Goto(4,0);
- USART_SendStr("Charging\r\n");
- while(read_adc(VOLTAGE_MUX_CHANNEL) < CALC_ADC_VOLTAGE(CHARGE_TRIGGER_VALUE) && !(PINC & (1 << PC3))){
- 72a: 80 e0 ldi r24, 0x00 ; 0
- 72c: cd dd rcall .-1126 ; 0x2c8 <read_adc>
- 72e: 26 e0 ldi r18, 0x06 ; 6
- 730: 8e 33 cpi r24, 0x3E ; 62
- 732: 92 07 cpc r25, r18
- 734: 10 f4 brcc .+4 ; 0x73a <Charge_battery+0x7a>
- 736: 9b 9b sbis 0x13, 3 ; 19
- 738: dc cf rjmp .-72 ; 0x6f2 <Charge_battery+0x32>
- printCapacity(Capacity/3600, true, false);
- }
- checkBattery(true, false);
- checkTempPotection();
- }
- TP4056_OFF;
- 73a: 87 e0 ldi r24, 0x07 ; 7
- 73c: 90 e0 ldi r25, 0x00 ; 0
- 73e: 60 e0 ldi r22, 0x00 ; 0
- 740: 70 e0 ldi r23, 0x00 ; 0
- 742: 40 e0 ldi r20, 0x00 ; 0
- 744: 50 e0 ldi r21, 0x00 ; 0
- 746: ac dc rcall .-1704 ; 0xa0 <ShiftDigitalWrite>
- if(end){
- 748: 11 23 and r17, r17
- 74a: 41 f1 breq .+80 ; 0x79c <Charge_battery+0xdc>
- LCD_Goto(0,0);
- 74c: 80 e8 ldi r24, 0x80 ; 128
- 74e: cc d5 rcall .+2968 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr("Full charged! :)");
- 750: 8e e0 ldi r24, 0x0E ; 14
- 752: 91 e0 ldi r25, 0x01 ; 1
- 754: 0e d6 rcall .+3100 ; 0x1372 <LCD_SendStr>
- USART_SendStr("Full charged! :)\r\n");
- 756: 8f e1 ldi r24, 0x1F ; 31
- 758: 91 e0 ldi r25, 0x01 ; 1
- 75a: 91 d7 rcall .+3874 ; 0x167e <USART_SendStr>
- printCapacity(Capacity/3600, true, false);
- 75c: 60 91 3b 03 lds r22, 0x033B
- 760: 70 91 3c 03 lds r23, 0x033C
- 764: 80 91 3d 03 lds r24, 0x033D
- 768: 90 91 3e 03 lds r25, 0x033E
- 76c: 20 e1 ldi r18, 0x10 ; 16
- 76e: 3e e0 ldi r19, 0x0E ; 14
- 770: 40 e0 ldi r20, 0x00 ; 0
- 772: 50 e0 ldi r21, 0x00 ; 0
- 774: 44 d8 rcall .-3960 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 776: ca 01 movw r24, r20
- 778: b9 01 movw r22, r18
- 77a: 41 e0 ldi r20, 0x01 ; 1
- 77c: 20 e0 ldi r18, 0x00 ; 0
- 77e: 2a df rcall .-428 ; 0x5d4 <printCapacity>
- Reset_Button();
- 780: dd de rcall .-582 ; 0x53c <Reset_Button>
- USART_SendStr("Rebooting\r\n");
- 782: 88 ed ldi r24, 0xD8 ; 216
- 784: 90 e0 ldi r25, 0x00 ; 0
- 786: 7b d7 rcall .+3830 ; 0x167e <USART_SendStr>
- soft_reset();
- 788: 28 e0 ldi r18, 0x08 ; 8
- 78a: 88 e1 ldi r24, 0x18 ; 24
- 78c: 90 e0 ldi r25, 0x00 ; 0
- 78e: 0f b6 in r0, 0x3f ; 63
- 790: f8 94 cli
- 792: a8 95 wdr
- 794: 81 bd out 0x21, r24 ; 33
- 796: 0f be out 0x3f, r0 ; 63
- 798: 21 bd out 0x21, r18 ; 33
- 79a: ff cf rjmp .-2 ; 0x79a <Charge_battery+0xda>
- }
- }
- 79c: 1f 91 pop r17
- 79e: ff 90 pop r15
- 7a0: ef 90 pop r14
- 7a2: df 90 pop r13
- 7a4: cf 90 pop r12
- 7a6: 08 95 ret
- 000007a8 <checkEndVoltage>:
- void checkEndVoltage(){
- 7a8: ef 92 push r14
- 7aa: ff 92 push r15
- 7ac: 0f 93 push r16
- 7ae: 1f 93 push r17
- if (END_Voltage > Voltage) { //выключение нагрузки при достижении минимального напряжения
- 7b0: 20 91 25 03 lds r18, 0x0325
- 7b4: 30 91 26 03 lds r19, 0x0326
- 7b8: 40 e0 ldi r20, 0x00 ; 0
- 7ba: 50 e0 ldi r21, 0x00 ; 0
- 7bc: 80 91 43 03 lds r24, 0x0343
- 7c0: 90 91 44 03 lds r25, 0x0344
- 7c4: a0 91 45 03 lds r26, 0x0345
- 7c8: b0 91 46 03 lds r27, 0x0346
- 7cc: 82 17 cp r24, r18
- 7ce: 93 07 cpc r25, r19
- 7d0: a4 07 cpc r26, r20
- 7d2: b5 07 cpc r27, r21
- 7d4: 08 f0 brcs .+2 ; 0x7d8 <checkEndVoltage+0x30>
- 7d6: aa c0 rjmp .+340 ; 0x92c <checkEndVoltage+0x184>
- USART_SendStr("Low voltage: ");
- 7d8: 82 e3 ldi r24, 0x32 ; 50
- 7da: 91 e0 ldi r25, 0x01 ; 1
- 7dc: 50 d7 rcall .+3744 ; 0x167e <USART_SendStr>
- USART_PutChar((Voltage%10000)/1000);
- 7de: 60 91 43 03 lds r22, 0x0343
- 7e2: 70 91 44 03 lds r23, 0x0344
- 7e6: 80 91 45 03 lds r24, 0x0345
- 7ea: 90 91 46 03 lds r25, 0x0346
- 7ee: 20 e1 ldi r18, 0x10 ; 16
- 7f0: 37 e2 ldi r19, 0x27 ; 39
- 7f2: 40 e0 ldi r20, 0x00 ; 0
- 7f4: 50 e0 ldi r21, 0x00 ; 0
- 7f6: 03 d8 rcall .-4090 ; 0xfffff7fe <__eeprom_end+0xff7ef7e5>
- 7f8: a8 ee ldi r26, 0xE8 ; 232
- 7fa: ea 2e mov r14, r26
- 7fc: a3 e0 ldi r26, 0x03 ; 3
- 7fe: fa 2e mov r15, r26
- 800: 01 2d mov r16, r1
- 802: 11 2d mov r17, r1
- 804: a8 01 movw r20, r16
- 806: 97 01 movw r18, r14
- 808: fa d7 rcall .+4084 ; 0x17fe <__udivmodsi4>
- 80a: 82 2f mov r24, r18
- 80c: 12 d7 rcall .+3620 ; 0x1632 <USART_PutChar>
- USART_PutChar('.');
- 80e: 8e e2 ldi r24, 0x2E ; 46
- 810: 10 d7 rcall .+3616 ; 0x1632 <USART_PutChar>
- USART_PutChar((Voltage%1000)/100);
- 812: 60 91 43 03 lds r22, 0x0343
- 816: 70 91 44 03 lds r23, 0x0344
- 81a: 80 91 45 03 lds r24, 0x0345
- 81e: 90 91 46 03 lds r25, 0x0346
- 822: a8 01 movw r20, r16
- 824: 97 01 movw r18, r14
- 826: eb d7 rcall .+4054 ; 0x17fe <__udivmodsi4>
- 828: f4 e6 ldi r31, 0x64 ; 100
- 82a: ef 2e mov r14, r31
- 82c: f1 2c mov r15, r1
- 82e: 01 2d mov r16, r1
- 830: 11 2d mov r17, r1
- 832: a8 01 movw r20, r16
- 834: 97 01 movw r18, r14
- 836: e3 d7 rcall .+4038 ; 0x17fe <__udivmodsi4>
- 838: 82 2f mov r24, r18
- 83a: fb d6 rcall .+3574 ; 0x1632 <USART_PutChar>
- USART_PutChar((Voltage%100)/10);
- 83c: 60 91 43 03 lds r22, 0x0343
- 840: 70 91 44 03 lds r23, 0x0344
- 844: 80 91 45 03 lds r24, 0x0345
- 848: 90 91 46 03 lds r25, 0x0346
- 84c: a8 01 movw r20, r16
- 84e: 97 01 movw r18, r14
- 850: d6 d7 rcall .+4012 ; 0x17fe <__udivmodsi4>
- 852: 2a e0 ldi r18, 0x0A ; 10
- 854: 30 e0 ldi r19, 0x00 ; 0
- 856: 40 e0 ldi r20, 0x00 ; 0
- 858: 50 e0 ldi r21, 0x00 ; 0
- 85a: d1 d7 rcall .+4002 ; 0x17fe <__udivmodsi4>
- 85c: 82 2f mov r24, r18
- 85e: e9 d6 rcall .+3538 ; 0x1632 <USART_PutChar>
- USART_SendStr("V\r\n");
- 860: 80 e4 ldi r24, 0x40 ; 64
- 862: 91 e0 ldi r25, 0x01 ; 1
- 864: 0c d7 rcall .+3608 ; 0x167e <USART_SendStr>
- OCR1A = 0;
- 866: 1b bc out 0x2b, r1 ; 43
- 868: 1a bc out 0x2a, r1 ; 42
- BATTERY_OFF;
- 86a: 86 e0 ldi r24, 0x06 ; 6
- 86c: 90 e0 ldi r25, 0x00 ; 0
- 86e: 60 e0 ldi r22, 0x00 ; 0
- 870: 70 e0 ldi r23, 0x00 ; 0
- 872: 40 e0 ldi r20, 0x00 ; 0
- 874: 50 e0 ldi r21, 0x00 ; 0
- 876: 14 dc rcall .-2008 ; 0xa0 <ShiftDigitalWrite>
- TIMSK &= ~(1 << OCIE2)|(1 << TOIE2);
- 878: 89 b7 in r24, 0x39 ; 57
- 87a: 8f 77 andi r24, 0x7F ; 127
- 87c: 89 bf out 0x39, r24 ; 57
- LCD_Clear();
- 87e: 81 e0 ldi r24, 0x01 ; 1
- 880: 33 d5 rcall .+2662 ; 0x12e8 <LCD_WriteCom>
- 882: 8f e9 ldi r24, 0x9F ; 159
- 884: 9f e0 ldi r25, 0x0F ; 15
- 886: 01 97 sbiw r24, 0x01 ; 1
- 888: f1 f7 brne .-4 ; 0x886 <checkEndVoltage+0xde>
- 88a: 00 c0 rjmp .+0 ; 0x88c <checkEndVoltage+0xe4>
- 88c: 00 00 nop
- LCD_Goto(1,0);
- 88e: 81 e8 ldi r24, 0x81 ; 129
- 890: 2b d5 rcall .+2646 ; 0x12e8 <LCD_WriteCom>
- eeprom_write_dword(&CountTestsComplete, eeprom_read_dword(&CountTestsComplete)+1);
- 892: 81 e1 ldi r24, 0x11 ; 17
- 894: 90 e0 ldi r25, 0x00 ; 0
- 896: 3a d8 rcall .-3980 ; 0xfffff90c <__eeprom_end+0xff7ef8f3>
- 898: ab 01 movw r20, r22
- 89a: bc 01 movw r22, r24
- 89c: 4f 5f subi r20, 0xFF ; 255
- 89e: 5f 4f sbci r21, 0xFF ; 255
- 8a0: 6f 4f sbci r22, 0xFF ; 255
- 8a2: 7f 4f sbci r23, 0xFF ; 255
- 8a4: 81 e1 ldi r24, 0x11 ; 17
- 8a6: 90 e0 ldi r25, 0x00 ; 0
- 8a8: 4c d8 rcall .-3944 ; 0xfffff942 <__eeprom_end+0xff7ef929>
- LCD_SendStr("Test completed");
- 8aa: 84 e4 ldi r24, 0x44 ; 68
- 8ac: 91 e0 ldi r25, 0x01 ; 1
- 8ae: 61 d5 rcall .+2754 ; 0x1372 <LCD_SendStr>
- USART_SendStr("Test completed\r\n");
- 8b0: 83 e5 ldi r24, 0x53 ; 83
- 8b2: 91 e0 ldi r25, 0x01 ; 1
- 8b4: e4 d6 rcall .+3528 ; 0x167e <USART_SendStr>
- //Вывод емкости
- printCapacity(Capacity/3600, true, true);
- 8b6: 60 91 3b 03 lds r22, 0x033B
- 8ba: 70 91 3c 03 lds r23, 0x033C
- 8be: 80 91 3d 03 lds r24, 0x033D
- 8c2: 90 91 3e 03 lds r25, 0x033E
- 8c6: e0 e1 ldi r30, 0x10 ; 16
- 8c8: ee 2e mov r14, r30
- 8ca: ee e0 ldi r30, 0x0E ; 14
- 8cc: fe 2e mov r15, r30
- 8ce: 01 2d mov r16, r1
- 8d0: 11 2d mov r17, r1
- 8d2: a8 01 movw r20, r16
- 8d4: 97 01 movw r18, r14
- 8d6: 93 d7 rcall .+3878 ; 0x17fe <__udivmodsi4>
- 8d8: ca 01 movw r24, r20
- 8da: b9 01 movw r22, r18
- 8dc: 41 e0 ldi r20, 0x01 ; 1
- 8de: 21 e0 ldi r18, 0x01 ; 1
- 8e0: 79 de rcall .-782 ; 0x5d4 <printCapacity>
- eeprom_write_dword(&eeLastCapacity, Capacity/3600);
- 8e2: 60 91 3b 03 lds r22, 0x033B
- 8e6: 70 91 3c 03 lds r23, 0x033C
- 8ea: 80 91 3d 03 lds r24, 0x033D
- 8ee: 90 91 3e 03 lds r25, 0x033E
- 8f2: a8 01 movw r20, r16
- 8f4: 97 01 movw r18, r14
- 8f6: 83 d7 rcall .+3846 ; 0x17fe <__udivmodsi4>
- 8f8: 89 e0 ldi r24, 0x09 ; 9
- 8fa: 90 e0 ldi r25, 0x00 ; 0
- 8fc: ba 01 movw r22, r20
- 8fe: a9 01 movw r20, r18
- 900: 20 d8 rcall .-4032 ; 0xfffff942 <__eeprom_end+0xff7ef929>
- 902: 8f ef ldi r24, 0xFF ; 255
- 904: 99 e6 ldi r25, 0x69 ; 105
- 906: a8 e1 ldi r26, 0x18 ; 24
- 908: 81 50 subi r24, 0x01 ; 1
- 90a: 90 40 sbci r25, 0x00 ; 0
- 90c: a0 40 sbci r26, 0x00 ; 0
- 90e: e1 f7 brne .-8 ; 0x908 <checkEndVoltage+0x160>
- 910: 00 c0 rjmp .+0 ; 0x912 <checkEndVoltage+0x16a>
- 912: 00 00 nop
- _delay_ms(1000);
- LCD_Goto(0,0);
- 914: 80 e8 ldi r24, 0x80 ; 128
- 916: e8 d4 rcall .+2512 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr(" ");
- 918: 84 e6 ldi r24, 0x64 ; 100
- 91a: 91 e0 ldi r25, 0x01 ; 1
- 91c: 2a d5 rcall .+2644 ; 0x1372 <LCD_SendStr>
- LCD_Goto(12,0);
- 91e: 8c e8 ldi r24, 0x8C ; 140
- 920: e3 d4 rcall .+2502 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr(" ");
- 922: 84 e6 ldi r24, 0x64 ; 100
- 924: 91 e0 ldi r25, 0x01 ; 1
- 926: 25 d5 rcall .+2634 ; 0x1372 <LCD_SendStr>
- Charge_battery(true);
- 928: 81 e0 ldi r24, 0x01 ; 1
- 92a: ca de rcall .-620 ; 0x6c0 <Charge_battery>
- }
- }
- 92c: 1f 91 pop r17
- 92e: 0f 91 pop r16
- 930: ff 90 pop r15
- 932: ef 90 pop r14
- 934: 08 95 ret
- 00000936 <printVADialig>:
- void printVADialig(unsigned long *eeprom, unsigned int step, char *start_text, unsigned int *var, unsigned int position, unsigned int min, unsigned int max, char *uart_text, char *start_value_text, char id){
- 936: 2f 92 push r2
- 938: 3f 92 push r3
- 93a: 4f 92 push r4
- 93c: 5f 92 push r5
- 93e: 6f 92 push r6
- 940: 7f 92 push r7
- 942: 8f 92 push r8
- 944: 9f 92 push r9
- 946: af 92 push r10
- 948: bf 92 push r11
- 94a: cf 92 push r12
- 94c: df 92 push r13
- 94e: ef 92 push r14
- 950: ff 92 push r15
- 952: 0f 93 push r16
- 954: 1f 93 push r17
- 956: df 93 push r29
- 958: cf 93 push r28
- 95a: 00 d0 rcall .+0 ; 0x95c <printVADialig+0x26>
- 95c: cd b7 in r28, 0x3d ; 61
- 95e: de b7 in r29, 0x3e ; 62
- 960: 9a 83 std Y+2, r25 ; 0x02
- 962: 89 83 std Y+1, r24 ; 0x01
- 964: 1b 01 movw r2, r22
- 966: 2a 01 movw r4, r20
- 968: 39 01 movw r6, r18
- LCD_Goto(position, 0);
- 96a: 0f 70 andi r16, 0x0F ; 15
- 96c: 80 2f mov r24, r16
- 96e: 80 68 ori r24, 0x80 ; 128
- 970: bb d4 rcall .+2422 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr(start_text);
- 972: c2 01 movw r24, r4
- 974: fe d4 rcall .+2556 ; 0x1372 <LCD_SendStr>
- *var = eeprom_read_dword(eeprom);
- 976: 89 81 ldd r24, Y+1 ; 0x01
- 978: 9a 81 ldd r25, Y+2 ; 0x02
- 97a: c8 d7 rcall .+3984 ; 0x190c <__eerd_dword_m8>
- 97c: f3 01 movw r30, r6
- 97e: 71 83 std Z+1, r23 ; 0x01
- 980: 60 83 st Z, r22
- dialog_id = id;
- 982: 8f 89 ldd r24, Y+23 ; 0x17
- 984: 80 93 4a 03 sts 0x034A, r24
- USART_SendStr(start_text);
- 988: c2 01 movw r24, r4
- 98a: 79 d6 rcall .+3314 ; 0x167e <USART_SendStr>
- USART_SendStr("\r\n");
- 98c: 89 e6 ldi r24, 0x69 ; 105
- 98e: 91 e0 ldi r25, 0x01 ; 1
- 990: 76 d6 rcall .+3308 ; 0x167e <USART_SendStr>
- USART_SendStr(start_value_text);
- 992: c4 01 movw r24, r8
- 994: 74 d6 rcall .+3304 ; 0x167e <USART_SendStr>
- USART_PutChar(0x30+(*var/1000));
- 996: f3 01 movw r30, r6
- 998: 80 81 ld r24, Z
- 99a: 91 81 ldd r25, Z+1 ; 0x01
- 99c: 08 ee ldi r16, 0xE8 ; 232
- 99e: 13 e0 ldi r17, 0x03 ; 3
- 9a0: b8 01 movw r22, r16
- 9a2: 19 d7 rcall .+3634 ; 0x17d6 <__udivmodhi4>
- 9a4: 86 2f mov r24, r22
- 9a6: 80 5d subi r24, 0xD0 ; 208
- 9a8: 44 d6 rcall .+3208 ; 0x1632 <USART_PutChar>
- USART_PutChar(',');
- 9aa: 8c e2 ldi r24, 0x2C ; 44
- 9ac: 42 d6 rcall .+3204 ; 0x1632 <USART_PutChar>
- USART_PutChar(0x30+((*var%1000)/100));
- 9ae: f3 01 movw r30, r6
- 9b0: 80 81 ld r24, Z
- 9b2: 91 81 ldd r25, Z+1 ; 0x01
- 9b4: b8 01 movw r22, r16
- 9b6: 0f d7 rcall .+3614 ; 0x17d6 <__udivmodhi4>
- 9b8: 64 e6 ldi r22, 0x64 ; 100
- 9ba: 70 e0 ldi r23, 0x00 ; 0
- 9bc: 0c d7 rcall .+3608 ; 0x17d6 <__udivmodhi4>
- 9be: 86 2f mov r24, r22
- 9c0: 80 5d subi r24, 0xD0 ; 208
- 9c2: 37 d6 rcall .+3182 ; 0x1632 <USART_PutChar>
- USART_SendStr(uart_text);
- 9c4: c5 01 movw r24, r10
- 9c6: 5b d6 rcall .+3254 ; 0x167e <USART_SendStr>
- LCD_Goto(5, 1);
- LCD_WriteData(1);
- LCD_WriteData(0x30+(*var/1000));
- LCD_WriteData(',');
- LCD_WriteData(0x30+((*var%1000)/100));
- 9c8: b4 e6 ldi r27, 0x64 ; 100
- 9ca: 8b 2e mov r8, r27
- 9cc: 91 2c mov r9, r1
- USART_PutChar(0x30+(*var/1000));
- USART_PutChar(',');
- USART_PutChar(0x30+((*var%1000)/100));
- USART_SendStr(uart_text);
- while(1){
- i = BUT_GetBut();
- 9ce: 9d d5 rcall .+2874 ; 0x150a <BUT_GetBut>
- 9d0: 80 93 47 03 sts 0x0347, r24
- button_event = BUT_GetBut();
- 9d4: 9a d5 rcall .+2868 ; 0x150a <BUT_GetBut>
- 9d6: 80 93 48 03 sts 0x0348, r24
- if (USART_GetRxCount()){
- 9da: 91 d6 rcall .+3362 ; 0x16fe <USART_GetRxCount>
- 9dc: 88 23 and r24, r24
- 9de: 21 f0 breq .+8 ; 0x9e8 <printVADialig+0xb2>
- one_char_buffer = USART_GetChar();
- 9e0: 91 d6 rcall .+3362 ; 0x1704 <USART_GetChar>
- 9e2: 80 93 49 03 sts 0x0349, r24
- PARS_Parser(one_char_buffer);
- 9e6: 91 db rcall .-2270 ; 0x10a <PARS_Parser>
- }
- if(i == PLUS_UP_ID && button_event == BUT_PRESSED_CODE && *var < max){
- 9e8: 80 91 47 03 lds r24, 0x0347
- 9ec: 82 30 cpi r24, 0x02 ; 2
- 9ee: 71 f4 brne .+28 ; 0xa0c <printVADialig+0xd6>
- 9f0: 80 91 48 03 lds r24, 0x0348
- 9f4: 81 30 cpi r24, 0x01 ; 1
- 9f6: 51 f4 brne .+20 ; 0xa0c <printVADialig+0xd6>
- 9f8: f3 01 movw r30, r6
- 9fa: 80 81 ld r24, Z
- 9fc: 91 81 ldd r25, Z+1 ; 0x01
- 9fe: 8c 15 cp r24, r12
- a00: 9d 05 cpc r25, r13
- a02: 20 f4 brcc .+8 ; 0xa0c <printVADialig+0xd6>
- *var += step;
- a04: 82 0d add r24, r2
- a06: 93 1d adc r25, r3
- a08: 91 83 std Z+1, r25 ; 0x01
- a0a: 80 83 st Z, r24
- }
- if(i == MINUS_DOWN_ID && button_event == BUT_PRESSED_CODE && *var > min){
- a0c: 80 91 47 03 lds r24, 0x0347
- a10: 83 30 cpi r24, 0x03 ; 3
- a12: 71 f4 brne .+28 ; 0xa30 <printVADialig+0xfa>
- a14: 80 91 48 03 lds r24, 0x0348
- a18: 81 30 cpi r24, 0x01 ; 1
- a1a: 51 f4 brne .+20 ; 0xa30 <printVADialig+0xfa>
- a1c: f3 01 movw r30, r6
- a1e: 80 81 ld r24, Z
- a20: 91 81 ldd r25, Z+1 ; 0x01
- a22: e8 16 cp r14, r24
- a24: f9 06 cpc r15, r25
- a26: 20 f4 brcc .+8 ; 0xa30 <printVADialig+0xfa>
- *var -= step;
- a28: 82 19 sub r24, r2
- a2a: 93 09 sbc r25, r3
- a2c: 91 83 std Z+1, r25 ; 0x01
- a2e: 80 83 st Z, r24
- }
- if((i == ENTER_BUTTON_ID && button_event == BUT_PRESSED_CODE) || value_parsed_success){
- a30: 80 91 47 03 lds r24, 0x0347
- a34: 81 30 cpi r24, 0x01 ; 1
- a36: 21 f4 brne .+8 ; 0xa40 <printVADialig+0x10a>
- a38: 80 91 48 03 lds r24, 0x0348
- a3c: 81 30 cpi r24, 0x01 ; 1
- a3e: 21 f0 breq .+8 ; 0xa48 <printVADialig+0x112>
- a40: 80 91 4e 03 lds r24, 0x034E
- a44: 88 23 and r24, r24
- a46: 91 f1 breq .+100 ; 0xaac <printVADialig+0x176>
- if(value_parsed_success){
- a48: 80 91 4e 03 lds r24, 0x034E
- a4c: 88 23 and r24, r24
- a4e: 49 f0 breq .+18 ; 0xa62 <printVADialig+0x12c>
- *var = int_buffer;
- a50: 80 91 4b 03 lds r24, 0x034B
- a54: 90 91 4c 03 lds r25, 0x034C
- a58: f3 01 movw r30, r6
- a5a: 91 83 std Z+1, r25 ; 0x01
- a5c: 80 83 st Z, r24
- value_parsed_success = false;
- a5e: 10 92 4e 03 sts 0x034E, r1
- }
- eeprom_write_dword(eeprom, *var);
- a62: f3 01 movw r30, r6
- a64: 40 81 ld r20, Z
- a66: 51 81 ldd r21, Z+1 ; 0x01
- a68: 60 e0 ldi r22, 0x00 ; 0
- a6a: 70 e0 ldi r23, 0x00 ; 0
- a6c: 89 81 ldd r24, Y+1 ; 0x01
- a6e: 9a 81 ldd r25, Y+2 ; 0x02
- a70: 68 d7 rcall .+3792 ; 0x1942 <__eewr_dword_m8>
- LCD_Clear();
- a72: 81 e0 ldi r24, 0x01 ; 1
- a74: 39 d4 rcall .+2162 ; 0x12e8 <LCD_WriteCom>
- a76: 8f e9 ldi r24, 0x9F ; 159
- a78: 9f e0 ldi r25, 0x0F ; 15
- a7a: 01 97 sbiw r24, 0x01 ; 1
- a7c: f1 f7 brne .-4 ; 0xa7a <printVADialig+0x144>
- a7e: 00 c0 rjmp .+0 ; 0xa80 <printVADialig+0x14a>
- a80: 00 00 nop
- LCD_WriteData(0x30+((*var%1000)/100));
- LCD_WriteData(0);
- BUT_Poll();
- }
- }
- a82: 0f 90 pop r0
- a84: 0f 90 pop r0
- a86: cf 91 pop r28
- a88: df 91 pop r29
- a8a: 1f 91 pop r17
- a8c: 0f 91 pop r16
- a8e: ff 90 pop r15
- a90: ef 90 pop r14
- a92: df 90 pop r13
- a94: cf 90 pop r12
- a96: bf 90 pop r11
- a98: af 90 pop r10
- a9a: 9f 90 pop r9
- a9c: 8f 90 pop r8
- a9e: 7f 90 pop r7
- aa0: 6f 90 pop r6
- aa2: 5f 90 pop r5
- aa4: 4f 90 pop r4
- aa6: 3f 90 pop r3
- aa8: 2f 90 pop r2
- aaa: 08 95 ret
- eeprom_write_dword(eeprom, *var);
- LCD_Clear();
- break;
- }
- LCD_Goto(5, 1);
- aac: 85 ec ldi r24, 0xC5 ; 197
- aae: 1c d4 rcall .+2104 ; 0x12e8 <LCD_WriteCom>
- LCD_WriteData(1);
- ab0: 81 e0 ldi r24, 0x01 ; 1
- ab2: 2b d4 rcall .+2134 ; 0x130a <LCD_WriteData>
- LCD_WriteData(0x30+(*var/1000));
- ab4: f3 01 movw r30, r6
- ab6: 80 81 ld r24, Z
- ab8: 91 81 ldd r25, Z+1 ; 0x01
- aba: b8 01 movw r22, r16
- abc: 8c d6 rcall .+3352 ; 0x17d6 <__udivmodhi4>
- abe: 86 2f mov r24, r22
- ac0: 80 5d subi r24, 0xD0 ; 208
- ac2: 23 d4 rcall .+2118 ; 0x130a <LCD_WriteData>
- LCD_WriteData(',');
- ac4: 8c e2 ldi r24, 0x2C ; 44
- ac6: 21 d4 rcall .+2114 ; 0x130a <LCD_WriteData>
- LCD_WriteData(0x30+((*var%1000)/100));
- ac8: f3 01 movw r30, r6
- aca: 80 81 ld r24, Z
- acc: 91 81 ldd r25, Z+1 ; 0x01
- ace: b8 01 movw r22, r16
- ad0: 82 d6 rcall .+3332 ; 0x17d6 <__udivmodhi4>
- ad2: b4 01 movw r22, r8
- ad4: 80 d6 rcall .+3328 ; 0x17d6 <__udivmodhi4>
- ad6: 86 2f mov r24, r22
- ad8: 80 5d subi r24, 0xD0 ; 208
- ada: 17 d4 rcall .+2094 ; 0x130a <LCD_WriteData>
- LCD_WriteData(0);
- adc: 80 e0 ldi r24, 0x00 ; 0
- ade: 15 d4 rcall .+2090 ; 0x130a <LCD_WriteData>
- BUT_Poll();
- ae0: 5e d5 rcall .+2748 ; 0x159e <BUT_Poll>
- }
- ae2: 75 cf rjmp .-278 ; 0x9ce <printVADialig+0x98>
- 00000ae4 <__vector_4>:
- }
- ISR(TIMER2_OVF_vect)
- {
- ae4: 1f 92 push r1
- ae6: 0f 92 push r0
- ae8: 0f b6 in r0, 0x3f ; 63
- aea: 0f 92 push r0
- aec: 11 24 eor r1, r1
- aee: 8f 93 push r24
- af0: 9f 93 push r25
- af2: af 93 push r26
- af4: bf 93 push r27
- seconds_timer2++;
- af6: 80 91 2d 03 lds r24, 0x032D
- afa: 90 91 2e 03 lds r25, 0x032E
- afe: a0 91 2f 03 lds r26, 0x032F
- b02: b0 91 30 03 lds r27, 0x0330
- b06: 01 96 adiw r24, 0x01 ; 1
- b08: a1 1d adc r26, r1
- b0a: b1 1d adc r27, r1
- b0c: 80 93 2d 03 sts 0x032D, r24
- b10: 90 93 2e 03 sts 0x032E, r25
- b14: a0 93 2f 03 sts 0x032F, r26
- b18: b0 93 30 03 sts 0x0330, r27
- interrupt_data = true;
- b1c: 81 e0 ldi r24, 0x01 ; 1
- b1e: 80 93 31 03 sts 0x0331, r24
- }
- b22: bf 91 pop r27
- b24: af 91 pop r26
- b26: 9f 91 pop r25
- b28: 8f 91 pop r24
- b2a: 0f 90 pop r0
- b2c: 0f be out 0x3f, r0 ; 63
- b2e: 0f 90 pop r0
- b30: 1f 90 pop r1
- b32: 18 95 reti
- 00000b34 <main>:
- int main()
- {
- b34: 2f 92 push r2
- b36: 3f 92 push r3
- b38: 4f 92 push r4
- b3a: 5f 92 push r5
- b3c: 6f 92 push r6
- b3e: 7f 92 push r7
- b40: 8f 92 push r8
- b42: 9f 92 push r9
- b44: af 92 push r10
- b46: bf 92 push r11
- b48: cf 92 push r12
- b4a: df 92 push r13
- b4c: ef 92 push r14
- b4e: ff 92 push r15
- b50: 0f 93 push r16
- b52: 1f 93 push r17
- b54: df 93 push r29
- b56: cf 93 push r28
- b58: 00 d0 rcall .+0 ; 0xb5a <main+0x26>
- b5a: 00 d0 rcall .+0 ; 0xb5c <main+0x28>
- b5c: 00 d0 rcall .+0 ; 0xb5e <main+0x2a>
- b5e: cd b7 in r28, 0x3d ; 61
- b60: de b7 in r29, 0x3e ; 62
- BUT_Init();
- b62: e8 d4 rcall .+2512 ; 0x1534 <BUT_Init>
- USART_Init(USART_DOUBLED, 9600);
- b64: 81 e0 ldi r24, 0x01 ; 1
- b66: 60 e8 ldi r22, 0x80 ; 128
- b68: 75 e2 ldi r23, 0x25 ; 37
- b6a: 2c d5 rcall .+2648 ; 0x15c4 <USART_Init>
- PARS_Init();
- b6c: c1 da rcall .-2686 ; 0xf0 <PARS_Init>
- ShiftRegisterInit(1);
- b6e: 81 e0 ldi r24, 0x01 ; 1
- b70: 90 e0 ldi r25, 0x00 ; 0
- b72: 7d da rcall .-2822 ; 0x6e <ShiftRegisterInit>
- LCD_Init();
- b74: db d3 rcall .+1974 ; 0x132c <LCD_Init>
- t2_init();
- b76: 9d db rcall .-2246 ; 0x2b2 <t2_init>
- //ADC Init
- ADCSRA = (1<<ADEN) | (0<<ADSC) | (0<<ADFR) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (0<<ADPS1) | (1<<ADPS0);
- b78: 85 e8 ldi r24, 0x85 ; 133
- b7a: 86 b9 out 0x06, r24 ; 6
- USART_SendStr("Initializing...\r\n");
- b7c: 8c e6 ldi r24, 0x6C ; 108
- b7e: 91 e0 ldi r25, 0x01 ; 1
- b80: 7e d5 rcall .+2812 ; 0x167e <USART_SendStr>
- //Конфиг ножек
- DDRB |= (1 << PB1) | (1 << PB2);
- b82: 87 b3 in r24, 0x17 ; 23
- b84: 86 60 ori r24, 0x06 ; 6
- b86: 87 bb out 0x17, r24 ; 23
- DDRC &= ~((1 << PC0) | (1 << PC1) | (1 << PC3) | (1 << PC5));
- b88: 84 b3 in r24, 0x14 ; 20
- b8a: 84 7d andi r24, 0xD4 ; 212
- b8c: 84 bb out 0x14, r24 ; 20
- LCD_SetUserChar(leftArrow, 0);
- b8e: 86 e2 ldi r24, 0x26 ; 38
- b90: 90 e0 ldi r25, 0x00 ; 0
- b92: 60 e0 ldi r22, 0x00 ; 0
- b94: 01 d4 rcall .+2050 ; 0x1398 <LCD_SetUserChar>
- LCD_SetUserChar(rightArrow, 1);
- b96: 8e e2 ldi r24, 0x2E ; 46
- b98: 90 e0 ldi r25, 0x00 ; 0
- b9a: 61 e0 ldi r22, 0x01 ; 1
- b9c: fd d3 rcall .+2042 ; 0x1398 <LCD_SetUserChar>
- USART_SendStr("Last capacity:");
- b9e: 8e e7 ldi r24, 0x7E ; 126
- ba0: 91 e0 ldi r25, 0x01 ; 1
- ba2: 6d d5 rcall .+2778 ; 0x167e <USART_SendStr>
- LastCapacity = eeprom_read_dword(&eeLastCapacity);
- ba4: 89 e0 ldi r24, 0x09 ; 9
- ba6: 90 e0 ldi r25, 0x00 ; 0
- ba8: b1 d6 rcall .+3426 ; 0x190c <__eerd_dword_m8>
- baa: 60 93 33 03 sts 0x0333, r22
- bae: 70 93 34 03 sts 0x0334, r23
- bb2: 80 93 35 03 sts 0x0335, r24
- bb6: 90 93 36 03 sts 0x0336, r25
- LCD_Goto(1,0);
- bba: 81 e8 ldi r24, 0x81 ; 129
- bbc: 95 d3 rcall .+1834 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr("Last capacity:");
- bbe: 8e e7 ldi r24, 0x7E ; 126
- bc0: 91 e0 ldi r25, 0x01 ; 1
- bc2: d7 d3 rcall .+1966 ; 0x1372 <LCD_SendStr>
- LCD_Goto(4, 1);
- bc4: 84 ec ldi r24, 0xC4 ; 196
- bc6: 90 d3 rcall .+1824 ; 0x12e8 <LCD_WriteCom>
- printCapacity(LastCapacity, false, true);
- bc8: 60 91 33 03 lds r22, 0x0333
- bcc: 70 91 34 03 lds r23, 0x0334
- bd0: 80 91 35 03 lds r24, 0x0335
- bd4: 90 91 36 03 lds r25, 0x0336
- bd8: 40 e0 ldi r20, 0x00 ; 0
- bda: 21 e0 ldi r18, 0x01 ; 1
- bdc: fb dc rcall .-1546 ; 0x5d4 <printCapacity>
- LCD_SendStr("mAh");
- bde: 86 ef ldi r24, 0xF6 ; 246
- be0: 90 e0 ldi r25, 0x00 ; 0
- be2: c7 d3 rcall .+1934 ; 0x1372 <LCD_SendStr>
- USART_SendStr(" mAh\r\n");
- be4: 8f ee ldi r24, 0xEF ; 239
- be6: 90 e0 ldi r25, 0x00 ; 0
- be8: 4a d5 rcall .+2708 ; 0x167e <USART_SendStr>
- bea: 8f ef ldi r24, 0xFF ; 255
- bec: 98 e0 ldi r25, 0x08 ; 8
- bee: ad e3 ldi r26, 0x3D ; 61
- bf0: 81 50 subi r24, 0x01 ; 1
- bf2: 90 40 sbci r25, 0x00 ; 0
- bf4: a0 40 sbci r26, 0x00 ; 0
- bf6: e1 f7 brne .-8 ; 0xbf0 <main+0xbc>
- bf8: 00 c0 rjmp .+0 ; 0xbfa <main+0xc6>
- bfa: 00 00 nop
- _delay_ms(2500);
- checkBattery(false, false);
- bfc: 80 e0 ldi r24, 0x00 ; 0
- bfe: 60 e0 ldi r22, 0x00 ; 0
- c00: 41 dc rcall .-1918 ; 0x484 <checkBattery>
- if(eeprom_read_byte(&eepause_continue) == 1){
- c02: 88 e0 ldi r24, 0x08 ; 8
- c04: 90 e0 ldi r25, 0x00 ; 0
- c06: 7a d6 rcall .+3316 ; 0x18fc <__eerd_byte_m8>
- c08: 81 30 cpi r24, 0x01 ; 1
- c0a: 09 f0 breq .+2 ; 0xc0e <main+0xda>
- c0c: 45 c0 rjmp .+138 ; 0xc98 <main+0x164>
- LCD_Clear();
- c0e: 6c d3 rcall .+1752 ; 0x12e8 <LCD_WriteCom>
- c10: af e9 ldi r26, 0x9F ; 159
- c12: bf e0 ldi r27, 0x0F ; 15
- c14: 11 97 sbiw r26, 0x01 ; 1
- c16: f1 f7 brne .-4 ; 0xc14 <main+0xe0>
- c18: 00 c0 rjmp .+0 ; 0xc1a <main+0xe6>
- c1a: 00 00 nop
- LCD_Goto(0,0);
- c1c: 80 e8 ldi r24, 0x80 ; 128
- c1e: 64 d3 rcall .+1736 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr("Continue test?");
- c20: 8d e8 ldi r24, 0x8D ; 141
- c22: 91 e0 ldi r25, 0x01 ; 1
- c24: a6 d3 rcall .+1868 ; 0x1372 <LCD_SendStr>
- USART_SendStr("Continue test? (Y/N)\r\n");
- c26: 8c e9 ldi r24, 0x9C ; 156
- c28: 91 e0 ldi r25, 0x01 ; 1
- c2a: 29 d5 rcall .+2642 ; 0x167e <USART_SendStr>
- while(1){
- i = BUT_GetBut();
- c2c: 6e d4 rcall .+2268 ; 0x150a <BUT_GetBut>
- c2e: 80 93 47 03 sts 0x0347, r24
- button_event = BUT_GetBut();
- c32: 6b d4 rcall .+2262 ; 0x150a <BUT_GetBut>
- c34: 80 93 48 03 sts 0x0348, r24
- one_char_buffer = USART_GetChar();
- c38: 65 d5 rcall .+2762 ; 0x1704 <USART_GetChar>
- c3a: 80 93 49 03 sts 0x0349, r24
- if((i == PLUS_UP_ID && button_event == BUT_PRESSED_CODE) || one_char_buffer == 'Y' || one_char_buffer == 'y'){
- c3e: 90 91 47 03 lds r25, 0x0347
- c42: 92 30 cpi r25, 0x02 ; 2
- c44: 21 f4 brne .+8 ; 0xc4e <main+0x11a>
- c46: 20 91 48 03 lds r18, 0x0348
- c4a: 21 30 cpi r18, 0x01 ; 1
- c4c: 21 f0 breq .+8 ; 0xc56 <main+0x122>
- c4e: 89 35 cpi r24, 0x59 ; 89
- c50: 11 f0 breq .+4 ; 0xc56 <main+0x122>
- c52: 89 37 cpi r24, 0x79 ; 121
- c54: 21 f4 brne .+8 ; 0xc5e <main+0x12a>
- pause_continue = 1;
- c56: 81 e0 ldi r24, 0x01 ; 1
- c58: 80 93 57 03 sts 0x0357, r24
- break;
- c5c: 15 c0 rjmp .+42 ; 0xc88 <main+0x154>
- }
- if(((i == MINUS_DOWN_ID && button_event == BUT_PRESSED_CODE) || (i == ENTER_BUTTON_ID && button_event == BUT_PRESSED_CODE)) || one_char_buffer == 'N' || one_char_buffer == 'n'){
- c5e: 93 30 cpi r25, 0x03 ; 3
- c60: 11 f0 breq .+4 ; 0xc66 <main+0x132>
- c62: 91 30 cpi r25, 0x01 ; 1
- c64: 21 f4 brne .+8 ; 0xc6e <main+0x13a>
- c66: 90 91 48 03 lds r25, 0x0348
- c6a: 91 30 cpi r25, 0x01 ; 1
- c6c: 21 f0 breq .+8 ; 0xc76 <main+0x142>
- c6e: 8e 34 cpi r24, 0x4E ; 78
- c70: 11 f0 breq .+4 ; 0xc76 <main+0x142>
- c72: 8e 36 cpi r24, 0x6E ; 110
- c74: 39 f4 brne .+14 ; 0xc84 <main+0x150>
- eeprom_write_byte(&eepause_continue, 0);
- c76: 88 e0 ldi r24, 0x08 ; 8
- c78: 90 e0 ldi r25, 0x00 ; 0
- c7a: 60 e0 ldi r22, 0x00 ; 0
- c7c: 55 d6 rcall .+3242 ; 0x1928 <__eewr_byte_m8>
- pause_continue = 0;
- c7e: 10 92 57 03 sts 0x0357, r1
- break;
- c82: 02 c0 rjmp .+4 ; 0xc88 <main+0x154>
- }
- BUT_Poll();
- c84: 8c d4 rcall .+2328 ; 0x159e <BUT_Poll>
- }
- c86: d2 cf rjmp .-92 ; 0xc2c <main+0xf8>
- LCD_Clear();
- c88: 81 e0 ldi r24, 0x01 ; 1
- c8a: 2e d3 rcall .+1628 ; 0x12e8 <LCD_WriteCom>
- c8c: ef e9 ldi r30, 0x9F ; 159
- c8e: ff e0 ldi r31, 0x0F ; 15
- c90: 31 97 sbiw r30, 0x01 ; 1
- c92: f1 f7 brne .-4 ; 0xc90 <main+0x15c>
- c94: 00 c0 rjmp .+0 ; 0xc96 <main+0x162>
- c96: 00 00 nop
- }
- if(pause_continue == 0){
- c98: 80 91 57 03 lds r24, 0x0357
- c9c: 88 23 and r24, r24
- c9e: 09 f0 breq .+2 ; 0xca2 <main+0x16e>
- ca0: a6 c0 rjmp .+332 ; 0xdee <main+0x2ba>
- //Диалог зарядки
- if(read_adc(VOLTAGE_MUX_CHANNEL) < CALC_ADC_VOLTAGE(CHARGE_DIALOG_VALUE)){
- ca2: 12 db rcall .-2524 ; 0x2c8 <read_adc>
- ca4: f6 e0 ldi r31, 0x06 ; 6
- ca6: 82 35 cpi r24, 0x52 ; 82
- ca8: 9f 07 cpc r25, r31
- caa: 08 f0 brcs .+2 ; 0xcae <main+0x17a>
- cac: 47 c0 rjmp .+142 ; 0xd3c <main+0x208>
- LCD_Clear();
- cae: 81 e0 ldi r24, 0x01 ; 1
- cb0: 1b d3 rcall .+1590 ; 0x12e8 <LCD_WriteCom>
- cb2: 8f e9 ldi r24, 0x9F ; 159
- cb4: 9f e0 ldi r25, 0x0F ; 15
- cb6: 01 97 sbiw r24, 0x01 ; 1
- cb8: f1 f7 brne .-4 ; 0xcb6 <main+0x182>
- cba: 00 c0 rjmp .+0 ; 0xcbc <main+0x188>
- cbc: 00 00 nop
- LCD_Goto(0,0);
- cbe: 80 e8 ldi r24, 0x80 ; 128
- cc0: 13 d3 rcall .+1574 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr("Charge");
- cc2: 83 eb ldi r24, 0xB3 ; 179
- cc4: 91 e0 ldi r25, 0x01 ; 1
- cc6: 55 d3 rcall .+1706 ; 0x1372 <LCD_SendStr>
- LCD_Goto(0,1);
- cc8: 80 ec ldi r24, 0xC0 ; 192
- cca: 0e d3 rcall .+1564 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr("the battery?");
- ccc: 8a eb ldi r24, 0xBA ; 186
- cce: 91 e0 ldi r25, 0x01 ; 1
- cd0: 50 d3 rcall .+1696 ; 0x1372 <LCD_SendStr>
- USART_SendStr("Charge the battery? (Y/N)\r\n");
- cd2: 87 ec ldi r24, 0xC7 ; 199
- cd4: 91 e0 ldi r25, 0x01 ; 1
- cd6: d3 d4 rcall .+2470 ; 0x167e <USART_SendStr>
- while(1){
- i = BUT_GetBut();
- cd8: 18 d4 rcall .+2096 ; 0x150a <BUT_GetBut>
- cda: 80 93 47 03 sts 0x0347, r24
- button_event = BUT_GetBut();
- cde: 15 d4 rcall .+2090 ; 0x150a <BUT_GetBut>
- ce0: 80 93 48 03 sts 0x0348, r24
- one_char_buffer = USART_GetChar();
- ce4: 0f d5 rcall .+2590 ; 0x1704 <USART_GetChar>
- ce6: 80 93 49 03 sts 0x0349, r24
- if((i == PLUS_UP_ID && button_event == BUT_PRESSED_CODE) || one_char_buffer == 'Y' || one_char_buffer == 'y'){
- cea: 90 91 47 03 lds r25, 0x0347
- cee: 92 30 cpi r25, 0x02 ; 2
- cf0: 21 f4 brne .+8 ; 0xcfa <main+0x1c6>
- cf2: 20 91 48 03 lds r18, 0x0348
- cf6: 21 30 cpi r18, 0x01 ; 1
- cf8: 21 f0 breq .+8 ; 0xd02 <main+0x1ce>
- cfa: 89 35 cpi r24, 0x59 ; 89
- cfc: 11 f0 breq .+4 ; 0xd02 <main+0x1ce>
- cfe: 89 37 cpi r24, 0x79 ; 121
- d00: 21 f4 brne .+8 ; 0xd0a <main+0x1d6>
- charge_before = true;
- d02: 81 e0 ldi r24, 0x01 ; 1
- d04: 80 93 32 03 sts 0x0332, r24
- break;
- d08: 11 c0 rjmp .+34 ; 0xd2c <main+0x1f8>
- }
- if(((i == MINUS_DOWN_ID && button_event == BUT_PRESSED_CODE) || (i == ENTER_BUTTON_ID && button_event == BUT_PRESSED_CODE)) || one_char_buffer == 'N' || one_char_buffer == 'n'){
- d0a: 93 30 cpi r25, 0x03 ; 3
- d0c: 11 f0 breq .+4 ; 0xd12 <main+0x1de>
- d0e: 91 30 cpi r25, 0x01 ; 1
- d10: 21 f4 brne .+8 ; 0xd1a <main+0x1e6>
- d12: 90 91 48 03 lds r25, 0x0348
- d16: 91 30 cpi r25, 0x01 ; 1
- d18: 21 f0 breq .+8 ; 0xd22 <main+0x1ee>
- d1a: 8e 34 cpi r24, 0x4E ; 78
- d1c: 11 f0 breq .+4 ; 0xd22 <main+0x1ee>
- d1e: 8e 36 cpi r24, 0x6E ; 110
- d20: 19 f4 brne .+6 ; 0xd28 <main+0x1f4>
- charge_before = false;
- d22: 10 92 32 03 sts 0x0332, r1
- break;
- d26: 02 c0 rjmp .+4 ; 0xd2c <main+0x1f8>
- }
- BUT_Poll();
- d28: 3a d4 rcall .+2164 ; 0x159e <BUT_Poll>
- }
- d2a: d6 cf rjmp .-84 ; 0xcd8 <main+0x1a4>
- LCD_Clear();
- d2c: 81 e0 ldi r24, 0x01 ; 1
- d2e: dc d2 rcall .+1464 ; 0x12e8 <LCD_WriteCom>
- d30: af e9 ldi r26, 0x9F ; 159
- d32: bf e0 ldi r27, 0x0F ; 15
- d34: 11 97 sbiw r26, 0x01 ; 1
- d36: f1 f7 brne .-4 ; 0xd34 <main+0x200>
- d38: 00 c0 rjmp .+0 ; 0xd3a <main+0x206>
- d3a: 00 00 nop
- }
- //Установка параметров
- printVADialig(&eeI, AMPERAGE_STEP, "Current:", &I_set, 4, AMPERAGE_MIN, AMPERAGE_MAX, "\r\nSend value 100-2000 with step 100 (or send ok):\r\n", "Default value:", AMPERAGE_DIALOG);
- d3c: 0f 92 push r0
- d3e: 82 e0 ldi r24, 0x02 ; 2
- d40: ed b7 in r30, 0x3d ; 61
- d42: fe b7 in r31, 0x3e ; 62
- d44: 81 83 std Z+1, r24 ; 0x01
- d46: 8d e0 ldi r24, 0x0D ; 13
- d48: 90 e0 ldi r25, 0x00 ; 0
- d4a: 64 e6 ldi r22, 0x64 ; 100
- d4c: 70 e0 ldi r23, 0x00 ; 0
- d4e: 43 ee ldi r20, 0xE3 ; 227
- d50: 51 e0 ldi r21, 0x01 ; 1
- d52: 27 e2 ldi r18, 0x27 ; 39
- d54: 33 e0 ldi r19, 0x03 ; 3
- d56: 04 e0 ldi r16, 0x04 ; 4
- d58: 10 e0 ldi r17, 0x00 ; 0
- d5a: b4 e6 ldi r27, 0x64 ; 100
- d5c: eb 2e mov r14, r27
- d5e: f1 2c mov r15, r1
- d60: a0 ed ldi r26, 0xD0 ; 208
- d62: ca 2e mov r12, r26
- d64: a7 e0 ldi r26, 0x07 ; 7
- d66: da 2e mov r13, r26
- d68: fc ee ldi r31, 0xEC ; 236
- d6a: af 2e mov r10, r31
- d6c: f1 e0 ldi r31, 0x01 ; 1
- d6e: bf 2e mov r11, r31
- d70: e0 e2 ldi r30, 0x20 ; 32
- d72: 8e 2e mov r8, r30
- d74: e2 e0 ldi r30, 0x02 ; 2
- d76: 9e 2e mov r9, r30
- d78: de dd rcall .-1092 ; 0x936 <printVADialig>
- printVADialig(&eeEND_Voltage, VOLTAGE_STEP, "End voltage:", &END_Voltage, 2, VOLTAGE_MIN, VOLTAGE_MAX, "\r\nSend value 2500-3500 with step 100 (or send ok):\r\n", "Default value:", VOLTAGE_DIALOG);
- d7a: 81 e0 ldi r24, 0x01 ; 1
- d7c: ad b7 in r26, 0x3d ; 61
- d7e: be b7 in r27, 0x3e ; 62
- d80: 11 96 adiw r26, 0x01 ; 1
- d82: 8c 93 st X, r24
- d84: 85 e1 ldi r24, 0x15 ; 21
- d86: 90 e0 ldi r25, 0x00 ; 0
- d88: 64 e6 ldi r22, 0x64 ; 100
- d8a: 70 e0 ldi r23, 0x00 ; 0
- d8c: 4f e2 ldi r20, 0x2F ; 47
- d8e: 52 e0 ldi r21, 0x02 ; 2
- d90: 25 e2 ldi r18, 0x25 ; 37
- d92: 33 e0 ldi r19, 0x03 ; 3
- d94: 02 e0 ldi r16, 0x02 ; 2
- d96: 10 e0 ldi r17, 0x00 ; 0
- d98: b4 ec ldi r27, 0xC4 ; 196
- d9a: eb 2e mov r14, r27
- d9c: b9 e0 ldi r27, 0x09 ; 9
- d9e: fb 2e mov r15, r27
- da0: ac ea ldi r26, 0xAC ; 172
- da2: ca 2e mov r12, r26
- da4: ad e0 ldi r26, 0x0D ; 13
- da6: da 2e mov r13, r26
- da8: fc e3 ldi r31, 0x3C ; 60
- daa: af 2e mov r10, r31
- dac: f2 e0 ldi r31, 0x02 ; 2
- dae: bf 2e mov r11, r31
- db0: c2 dd rcall .-1148 ; 0x936 <printVADialig>
- //Зарядка перед тестом
- if(charge_before){
- db2: 0f 90 pop r0
- db4: 80 91 32 03 lds r24, 0x0332
- db8: 88 23 and r24, r24
- dba: 51 f0 breq .+20 ; 0xdd0 <main+0x29c>
- LCD_Clear();
- dbc: 81 e0 ldi r24, 0x01 ; 1
- dbe: 94 d2 rcall .+1320 ; 0x12e8 <LCD_WriteCom>
- dc0: ef e9 ldi r30, 0x9F ; 159
- dc2: ff e0 ldi r31, 0x0F ; 15
- dc4: 31 97 sbiw r30, 0x01 ; 1
- dc6: f1 f7 brne .-4 ; 0xdc4 <main+0x290>
- dc8: 00 c0 rjmp .+0 ; 0xdca <main+0x296>
- dca: 00 00 nop
- Charge_battery(false);
- dcc: 80 e0 ldi r24, 0x00 ; 0
- dce: 78 dc rcall .-1808 ; 0x6c0 <Charge_battery>
- }
- USART_SendStr("Press any key to start the test...\r\n");
- dd0: 81 e7 ldi r24, 0x71 ; 113
- dd2: 92 e0 ldi r25, 0x02 ; 2
- dd4: 54 d4 rcall .+2216 ; 0x167e <USART_SendStr>
- LCD_Goto(0,0);
- dd6: 80 e8 ldi r24, 0x80 ; 128
- dd8: 87 d2 rcall .+1294 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr("Press start to");
- dda: 86 e9 ldi r24, 0x96 ; 150
- ddc: 92 e0 ldi r25, 0x02 ; 2
- dde: c9 d2 rcall .+1426 ; 0x1372 <LCD_SendStr>
- LCD_Goto(0,1);
- de0: 80 ec ldi r24, 0xC0 ; 192
- de2: 82 d2 rcall .+1284 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr("begin the test");
- de4: 85 ea ldi r24, 0xA5 ; 165
- de6: 92 e0 ldi r25, 0x02 ; 2
- de8: c4 d2 rcall .+1416 ; 0x1372 <LCD_SendStr>
- Reset_Button();
- dea: a8 db rcall .-2224 ; 0x53c <Reset_Button>
- dec: 2b c0 rjmp .+86 ; 0xe44 <main+0x310>
- }else{
- eeprom_read_block ((void *)&PauseSave, (const void *)&eePauseSave, 8);
- dee: 8f e4 ldi r24, 0x4F ; 79
- df0: 93 e0 ldi r25, 0x03 ; 3
- df2: 60 e0 ldi r22, 0x00 ; 0
- df4: 70 e0 ldi r23, 0x00 ; 0
- df6: 48 e0 ldi r20, 0x08 ; 8
- df8: 50 e0 ldi r21, 0x00 ; 0
- dfa: 70 d5 rcall .+2784 ; 0x18dc <__eerd_block_m8>
- eeprom_write_byte(&eepause_continue, 0);
- dfc: 88 e0 ldi r24, 0x08 ; 8
- dfe: 90 e0 ldi r25, 0x00 ; 0
- e00: 60 e0 ldi r22, 0x00 ; 0
- e02: 92 d5 rcall .+2852 ; 0x1928 <__eewr_byte_m8>
- Capacity = PauseSave[0];
- e04: 80 91 4f 03 lds r24, 0x034F
- e08: 90 91 50 03 lds r25, 0x0350
- e0c: a0 91 51 03 lds r26, 0x0351
- e10: b0 91 52 03 lds r27, 0x0352
- e14: 80 93 3b 03 sts 0x033B, r24
- e18: 90 93 3c 03 sts 0x033C, r25
- e1c: a0 93 3d 03 sts 0x033D, r26
- e20: b0 93 3e 03 sts 0x033E, r27
- seconds_timer2 = PauseSave[1];
- e24: 80 91 53 03 lds r24, 0x0353
- e28: 90 91 54 03 lds r25, 0x0354
- e2c: a0 91 55 03 lds r26, 0x0355
- e30: b0 91 56 03 lds r27, 0x0356
- e34: 80 93 2d 03 sts 0x032D, r24
- e38: 90 93 2e 03 sts 0x032E, r25
- e3c: a0 93 2f 03 sts 0x032F, r26
- e40: b0 93 30 03 sts 0x0330, r27
- }
- USART_SendStr("Starting...\r\n");
- e44: 84 eb ldi r24, 0xB4 ; 180
- e46: 92 e0 ldi r25, 0x02 ; 2
- e48: 1a d4 rcall .+2100 ; 0x167e <USART_SendStr>
- LCD_Clear();
- e4a: 81 e0 ldi r24, 0x01 ; 1
- e4c: 4d d2 rcall .+1178 ; 0x12e8 <LCD_WriteCom>
- e4e: 8f e9 ldi r24, 0x9F ; 159
- e50: 9f e0 ldi r25, 0x0F ; 15
- e52: 01 97 sbiw r24, 0x01 ; 1
- e54: f1 f7 brne .-4 ; 0xe52 <main+0x31e>
- e56: 00 c0 rjmp .+0 ; 0xe58 <main+0x324>
- e58: 00 00 nop
- USART_SendStr("Seconds | Voltage | Amperage | Time | mAh\r\n");
- e5a: 82 ec ldi r24, 0xC2 ; 194
- e5c: 92 e0 ldi r25, 0x02 ; 2
- e5e: 0f d4 rcall .+2078 ; 0x167e <USART_SendStr>
- //ШИМ электронной нагрузки
- TCCR1A |= (1 << COM1A1) | (1 << COM1B1);
- e60: 8f b5 in r24, 0x2f ; 47
- e62: 80 6a ori r24, 0xA0 ; 160
- e64: 8f bd out 0x2f, r24 ; 47
- TCCR1A |= (1 << WGM11) | (1 << WGM10);
- e66: 8f b5 in r24, 0x2f ; 47
- e68: 83 60 ori r24, 0x03 ; 3
- e6a: 8f bd out 0x2f, r24 ; 47
- TCCR1B |= (1 << CS11);
- e6c: 8e b5 in r24, 0x2e ; 46
- e6e: 82 60 ori r24, 0x02 ; 2
- e70: 8e bd out 0x2e, r24 ; 46
- OCR1A = AMPERAGE_PWM_COEFFICIENT*(I_set/AMPERAGE_PWM_COEFFICIENT_STEP)+AMPERAGE_PWM_COEFFICIENT_CORRECT*(I_set/AMPERAGE_PWM_COEFFICIENT_STEP);
- e72: 80 91 27 03 lds r24, 0x0327
- e76: 90 91 28 03 lds r25, 0x0328
- e7a: 64 e6 ldi r22, 0x64 ; 100
- e7c: 70 e0 ldi r23, 0x00 ; 0
- e7e: ab d4 rcall .+2390 ; 0x17d6 <__udivmodhi4>
- e80: 2c e2 ldi r18, 0x2C ; 44
- e82: 30 e0 ldi r19, 0x00 ; 0
- e84: 62 9f mul r22, r18
- e86: c0 01 movw r24, r0
- e88: 63 9f mul r22, r19
- e8a: 90 0d add r25, r0
- e8c: 72 9f mul r23, r18
- e8e: 90 0d add r25, r0
- e90: 11 24 eor r1, r1
- e92: 9b bd out 0x2b, r25 ; 43
- e94: 8a bd out 0x2a, r24 ; 42
- OCR1B = 0;
- e96: 19 bc out 0x29, r1 ; 41
- e98: 18 bc out 0x28, r1 ; 40
- //Подключение АКБ
- BATTERY_ON;
- e9a: 86 e0 ldi r24, 0x06 ; 6
- e9c: 90 e0 ldi r25, 0x00 ; 0
- e9e: 61 e0 ldi r22, 0x01 ; 1
- ea0: 70 e0 ldi r23, 0x00 ; 0
- ea2: 40 e0 ldi r20, 0x00 ; 0
- ea4: 50 e0 ldi r21, 0x00 ; 0
- ea6: fc d8 rcall .-3592 ; 0xa0 <ShiftDigitalWrite>
- //Включение таймера времени
- TIMSK |= (1 << TOIE2);
- ea8: 89 b7 in r24, 0x39 ; 57
- eaa: 80 64 ori r24, 0x40 ; 64
- eac: 89 bf out 0x39, r24 ; 57
- //Разрешение прерываний
- sei();
- eae: 78 94 sei
- //Измерение емкости
- Capacity += I;
- //Вывод секунд
- char buffer[6];
- ltoa((long)seconds(), buffer, 10);
- eb0: 1e 01 movw r2, r28
- eb2: 08 94 sec
- eb4: 21 1c adc r2, r1
- eb6: 31 1c adc r3, r1
- USART_PutChar(' ');
- //Вывод Тока
- LCD_Goto(6,0);
- printUL(I/1000);
- eb8: e8 ee ldi r30, 0xE8 ; 232
- eba: 8e 2e mov r8, r30
- ebc: e3 e0 ldi r30, 0x03 ; 3
- ebe: 9e 2e mov r9, r30
- ec0: a1 2c mov r10, r1
- ec2: b1 2c mov r11, r1
- LCD_WriteData('.');
- USART_PutChar('.');
- printUL(I%1000/100);
- USART_PutChar(0x30+(I%1000)%100/10);
- ec4: 7a e0 ldi r23, 0x0A ; 10
- ec6: 47 2e mov r4, r23
- ec8: 51 2c mov r5, r1
- eca: 61 2c mov r6, r1
- ecc: 71 2c mov r7, r1
- //Разрешение прерываний
- sei();
- while(1)
- {
- coolerCalc();
- ece: a1 da rcall .-2750 ; 0x412 <coolerCalc>
- checkBattery(true, true);
- ed0: 81 e0 ldi r24, 0x01 ; 1
- ed2: 61 e0 ldi r22, 0x01 ; 1
- ed4: d7 da rcall .-2642 ; 0x484 <checkBattery>
- //Темапературная защита
- checkTempPotection();
- ed6: 48 db rcall .-2416 ; 0x568 <checkTempPotection>
- if(interrupt_data) {
- ed8: 80 91 31 03 lds r24, 0x0331
- edc: 88 23 and r24, r24
- ede: 09 f4 brne .+2 ; 0xee2 <main+0x3ae>
- ee0: fc c0 rjmp .+504 ; 0x10da <main+0x5a6>
- Voltage = ((read_adc(VOLTAGE_MUX_CHANNEL)*12)/4)*10;
- ee2: 80 e0 ldi r24, 0x00 ; 0
- ee4: f1 d9 rcall .-3102 ; 0x2c8 <read_adc>
- ee6: 9c 01 movw r18, r24
- ee8: 22 0f add r18, r18
- eea: 33 1f adc r19, r19
- eec: 28 0f add r18, r24
- eee: 39 1f adc r19, r25
- ef0: 3f 73 andi r19, 0x3F ; 63
- ef2: c9 01 movw r24, r18
- ef4: 88 0f add r24, r24
- ef6: 99 1f adc r25, r25
- ef8: 43 e0 ldi r20, 0x03 ; 3
- efa: 22 0f add r18, r18
- efc: 33 1f adc r19, r19
- efe: 4a 95 dec r20
- f00: e1 f7 brne .-8 ; 0xefa <main+0x3c6>
- f02: 82 0f add r24, r18
- f04: 93 1f adc r25, r19
- f06: a0 e0 ldi r26, 0x00 ; 0
- f08: b0 e0 ldi r27, 0x00 ; 0
- f0a: 80 93 43 03 sts 0x0343, r24
- f0e: 90 93 44 03 sts 0x0344, r25
- f12: a0 93 45 03 sts 0x0345, r26
- f16: b0 93 46 03 sts 0x0346, r27
- I = read_adc(CURRENT_MUX_CHANNEL)*10;
- f1a: 81 e0 ldi r24, 0x01 ; 1
- f1c: d5 d9 rcall .-3158 ; 0x2c8 <read_adc>
- f1e: 9c 01 movw r18, r24
- f20: 88 0f add r24, r24
- f22: 99 1f adc r25, r25
- f24: 13 e0 ldi r17, 0x03 ; 3
- f26: 22 0f add r18, r18
- f28: 33 1f adc r19, r19
- f2a: 1a 95 dec r17
- f2c: e1 f7 brne .-8 ; 0xf26 <main+0x3f2>
- f2e: 82 0f add r24, r18
- f30: 93 1f adc r25, r19
- f32: 9c 01 movw r18, r24
- f34: 40 e0 ldi r20, 0x00 ; 0
- f36: 50 e0 ldi r21, 0x00 ; 0
- f38: 20 93 3f 03 sts 0x033F, r18
- f3c: 30 93 40 03 sts 0x0340, r19
- f40: 40 93 41 03 sts 0x0341, r20
- f44: 50 93 42 03 sts 0x0342, r21
- //Измерение емкости
- Capacity += I;
- f48: 80 91 3b 03 lds r24, 0x033B
- f4c: 90 91 3c 03 lds r25, 0x033C
- f50: a0 91 3d 03 lds r26, 0x033D
- f54: b0 91 3e 03 lds r27, 0x033E
- f58: 82 0f add r24, r18
- f5a: 93 1f adc r25, r19
- f5c: a4 1f adc r26, r20
- f5e: b5 1f adc r27, r21
- f60: 80 93 3b 03 sts 0x033B, r24
- f64: 90 93 3c 03 sts 0x033C, r25
- f68: a0 93 3d 03 sts 0x033D, r26
- f6c: b0 93 3e 03 sts 0x033E, r27
- //Вывод секунд
- char buffer[6];
- ltoa((long)seconds(), buffer, 10);
- f70: 51 d9 rcall .-3422 ; 0x214 <seconds>
- f72: a1 01 movw r20, r2
- f74: 2a e0 ldi r18, 0x0A ; 10
- f76: 30 e0 ldi r19, 0x00 ; 0
- f78: 7f d4 rcall .+2302 ; 0x1878 <ltoa>
- USART_SendStr(buffer);
- f7a: c1 01 movw r24, r2
- f7c: 80 d3 rcall .+1792 ; 0x167e <USART_SendStr>
- USART_PutChar(' ');
- f7e: 80 e2 ldi r24, 0x20 ; 32
- f80: 58 d3 rcall .+1712 ; 0x1632 <USART_PutChar>
- //Вывод напряжения
- LCD_Goto(0,0);
- f82: 80 e8 ldi r24, 0x80 ; 128
- f84: b1 d1 rcall .+866 ; 0x12e8 <LCD_WriteCom>
- printVoltage(Voltage);
- f86: 60 91 43 03 lds r22, 0x0343
- f8a: 70 91 44 03 lds r23, 0x0344
- f8e: 80 91 45 03 lds r24, 0x0345
- f92: 90 91 46 03 lds r25, 0x0346
- f96: e5 d9 rcall .-3126 ; 0x362 <printVoltage>
- LCD_SendStr("V");
- f98: 8e ee ldi r24, 0xEE ; 238
- f9a: 92 e0 ldi r25, 0x02 ; 2
- f9c: ea d1 rcall .+980 ; 0x1372 <LCD_SendStr>
- USART_PutChar(' ');
- f9e: 80 e2 ldi r24, 0x20 ; 32
- fa0: 48 d3 rcall .+1680 ; 0x1632 <USART_PutChar>
- //Вывод Тока
- LCD_Goto(6,0);
- fa2: 86 e8 ldi r24, 0x86 ; 134
- fa4: a1 d1 rcall .+834 ; 0x12e8 <LCD_WriteCom>
- printUL(I/1000);
- fa6: 60 91 3f 03 lds r22, 0x033F
- faa: 70 91 40 03 lds r23, 0x0340
- fae: 80 91 41 03 lds r24, 0x0341
- fb2: 90 91 42 03 lds r25, 0x0342
- fb6: a5 01 movw r20, r10
- fb8: 94 01 movw r18, r8
- fba: 21 d4 rcall .+2114 ; 0x17fe <__udivmodsi4>
- fbc: 82 2f mov r24, r18
- fbe: a2 d9 rcall .-3260 ; 0x304 <printUL>
- LCD_WriteData('.');
- fc0: 8e e2 ldi r24, 0x2E ; 46
- fc2: a3 d1 rcall .+838 ; 0x130a <LCD_WriteData>
- USART_PutChar('.');
- fc4: 8e e2 ldi r24, 0x2E ; 46
- fc6: 35 d3 rcall .+1642 ; 0x1632 <USART_PutChar>
- printUL(I%1000/100);
- fc8: 60 91 3f 03 lds r22, 0x033F
- fcc: 70 91 40 03 lds r23, 0x0340
- fd0: 80 91 41 03 lds r24, 0x0341
- fd4: 90 91 42 03 lds r25, 0x0342
- fd8: a5 01 movw r20, r10
- fda: 94 01 movw r18, r8
- fdc: 10 d4 rcall .+2080 ; 0x17fe <__udivmodsi4>
- fde: 24 e6 ldi r18, 0x64 ; 100
- fe0: 30 e0 ldi r19, 0x00 ; 0
- fe2: 40 e0 ldi r20, 0x00 ; 0
- fe4: 50 e0 ldi r21, 0x00 ; 0
- fe6: 0b d4 rcall .+2070 ; 0x17fe <__udivmodsi4>
- fe8: 82 2f mov r24, r18
- fea: 8c d9 rcall .-3304 ; 0x304 <printUL>
- USART_PutChar(0x30+(I%1000)%100/10);
- fec: 60 91 3f 03 lds r22, 0x033F
- ff0: 70 91 40 03 lds r23, 0x0340
- ff4: 80 91 41 03 lds r24, 0x0341
- ff8: 90 91 42 03 lds r25, 0x0342
- ffc: a5 01 movw r20, r10
- ffe: 94 01 movw r18, r8
- 1000: fe d3 rcall .+2044 ; 0x17fe <__udivmodsi4>
- 1002: 24 e6 ldi r18, 0x64 ; 100
- 1004: 30 e0 ldi r19, 0x00 ; 0
- 1006: 40 e0 ldi r20, 0x00 ; 0
- 1008: 50 e0 ldi r21, 0x00 ; 0
- 100a: f9 d3 rcall .+2034 ; 0x17fe <__udivmodsi4>
- 100c: a3 01 movw r20, r6
- 100e: 92 01 movw r18, r4
- 1010: f6 d3 rcall .+2028 ; 0x17fe <__udivmodsi4>
- 1012: 82 2f mov r24, r18
- 1014: 80 5d subi r24, 0xD0 ; 208
- 1016: 0d d3 rcall .+1562 ; 0x1632 <USART_PutChar>
- LCD_SendStr("A");
- 1018: 80 ef ldi r24, 0xF0 ; 240
- 101a: 92 e0 ldi r25, 0x02 ; 2
- 101c: aa d1 rcall .+852 ; 0x1372 <LCD_SendStr>
- USART_PutChar(' ');
- 101e: 80 e2 ldi r24, 0x20 ; 32
- 1020: 08 d3 rcall .+1552 ; 0x1632 <USART_PutChar>
- //Вывод времени
- LCD_Goto(11,0);
- 1022: 8b e8 ldi r24, 0x8B ; 139
- 1024: 61 d1 rcall .+706 ; 0x12e8 <LCD_WriteCom>
- minutes = seconds()/60;
- 1026: f6 d8 rcall .-3604 ; 0x214 <seconds>
- 1028: 2c e3 ldi r18, 0x3C ; 60
- 102a: 30 e0 ldi r19, 0x00 ; 0
- 102c: 40 e0 ldi r20, 0x00 ; 0
- 102e: 50 e0 ldi r21, 0x00 ; 0
- 1030: e6 d3 rcall .+1996 ; 0x17fe <__udivmodsi4>
- 1032: 79 01 movw r14, r18
- 1034: 8a 01 movw r16, r20
- 1036: 20 93 37 03 sts 0x0337, r18
- 103a: 30 93 38 03 sts 0x0338, r19
- 103e: 40 93 39 03 sts 0x0339, r20
- 1042: 50 93 3a 03 sts 0x033A, r21
- printITime((minutes/60)/10, (minutes/60)%10);
- 1046: ca 01 movw r24, r20
- 1048: b9 01 movw r22, r18
- 104a: 28 e5 ldi r18, 0x58 ; 88
- 104c: 32 e0 ldi r19, 0x02 ; 2
- 104e: 40 e0 ldi r20, 0x00 ; 0
- 1050: 50 e0 ldi r21, 0x00 ; 0
- 1052: d5 d3 rcall .+1962 ; 0x17fe <__udivmodsi4>
- 1054: d2 2e mov r13, r18
- 1056: c8 01 movw r24, r16
- 1058: b7 01 movw r22, r14
- 105a: 2c e3 ldi r18, 0x3C ; 60
- 105c: 30 e0 ldi r19, 0x00 ; 0
- 105e: 40 e0 ldi r20, 0x00 ; 0
- 1060: 50 e0 ldi r21, 0x00 ; 0
- 1062: cd d3 rcall .+1946 ; 0x17fe <__udivmodsi4>
- 1064: ca 01 movw r24, r20
- 1066: b9 01 movw r22, r18
- 1068: a3 01 movw r20, r6
- 106a: 92 01 movw r18, r4
- 106c: c8 d3 rcall .+1936 ; 0x17fe <__udivmodsi4>
- 106e: 8d 2d mov r24, r13
- 1070: 67 d9 rcall .-3378 ; 0x340 <printITime>
- USART_PutChar(':');
- 1072: 8a e3 ldi r24, 0x3A ; 58
- 1074: de d2 rcall .+1468 ; 0x1632 <USART_PutChar>
- LCD_WriteData(':');
- 1076: 8a e3 ldi r24, 0x3A ; 58
- 1078: 48 d1 rcall .+656 ; 0x130a <LCD_WriteData>
- printITime((minutes%60)/10, (minutes%60%10));
- 107a: 60 91 37 03 lds r22, 0x0337
- 107e: 70 91 38 03 lds r23, 0x0338
- 1082: 80 91 39 03 lds r24, 0x0339
- 1086: 90 91 3a 03 lds r25, 0x033A
- 108a: 2c e3 ldi r18, 0x3C ; 60
- 108c: 30 e0 ldi r19, 0x00 ; 0
- 108e: 40 e0 ldi r20, 0x00 ; 0
- 1090: 50 e0 ldi r21, 0x00 ; 0
- 1092: b5 d3 rcall .+1898 ; 0x17fe <__udivmodsi4>
- 1094: a3 01 movw r20, r6
- 1096: 92 01 movw r18, r4
- 1098: b2 d3 rcall .+1892 ; 0x17fe <__udivmodsi4>
- 109a: 82 2f mov r24, r18
- 109c: 51 d9 rcall .-3422 ; 0x340 <printITime>
- USART_PutChar(' ');
- 109e: 80 e2 ldi r24, 0x20 ; 32
- 10a0: c8 d2 rcall .+1424 ; 0x1632 <USART_PutChar>
- //Вывод емкости
- LCD_Goto(0,1);
- 10a2: 80 ec ldi r24, 0xC0 ; 192
- 10a4: 21 d1 rcall .+578 ; 0x12e8 <LCD_WriteCom>
- printCapacity(Capacity/3600, false, true);
- 10a6: 60 91 3b 03 lds r22, 0x033B
- 10aa: 70 91 3c 03 lds r23, 0x033C
- 10ae: 80 91 3d 03 lds r24, 0x033D
- 10b2: 90 91 3e 03 lds r25, 0x033E
- 10b6: 20 e1 ldi r18, 0x10 ; 16
- 10b8: 3e e0 ldi r19, 0x0E ; 14
- 10ba: 40 e0 ldi r20, 0x00 ; 0
- 10bc: 50 e0 ldi r21, 0x00 ; 0
- 10be: 9f d3 rcall .+1854 ; 0x17fe <__udivmodsi4>
- 10c0: ca 01 movw r24, r20
- 10c2: b9 01 movw r22, r18
- 10c4: 40 e0 ldi r20, 0x00 ; 0
- 10c6: 21 e0 ldi r18, 0x01 ; 1
- 10c8: 85 da rcall .-2806 ; 0x5d4 <printCapacity>
- LCD_SendStr("mAh");
- 10ca: 86 ef ldi r24, 0xF6 ; 246
- 10cc: 90 e0 ldi r25, 0x00 ; 0
- 10ce: 51 d1 rcall .+674 ; 0x1372 <LCD_SendStr>
- LCD_Goto(9,1);
- printWhVoltage((long)(Wh*1000), true);
- LCD_SendStr("Wh");
- */
- USART_SendStr("\r\n");
- 10d0: 89 e6 ldi r24, 0x69 ; 105
- 10d2: 91 e0 ldi r25, 0x01 ; 1
- 10d4: d4 d2 rcall .+1448 ; 0x167e <USART_SendStr>
- interrupt_data = false;
- 10d6: 10 92 31 03 sts 0x0331, r1
- }
- BUT_Poll();
- 10da: 61 d2 rcall .+1218 ; 0x159e <BUT_Poll>
- i = BUT_GetBut();
- 10dc: 16 d2 rcall .+1068 ; 0x150a <BUT_GetBut>
- 10de: 80 93 47 03 sts 0x0347, r24
- button_event = BUT_GetBut();
- 10e2: 13 d2 rcall .+1062 ; 0x150a <BUT_GetBut>
- 10e4: 80 93 48 03 sts 0x0348, r24
- //PAUSE
- if(i == ENTER_BUTTON_ID && button_event == BUT_PRESSED_CODE){
- 10e8: 90 91 47 03 lds r25, 0x0347
- 10ec: 91 30 cpi r25, 0x01 ; 1
- 10ee: 09 f0 breq .+2 ; 0x10f2 <main+0x5be>
- 10f0: 7b c0 rjmp .+246 ; 0x11e8 <main+0x6b4>
- 10f2: 81 30 cpi r24, 0x01 ; 1
- 10f4: 09 f0 breq .+2 ; 0x10f8 <main+0x5c4>
- 10f6: 78 c0 rjmp .+240 ; 0x11e8 <main+0x6b4>
- OCR1A = 0;
- 10f8: 1b bc out 0x2b, r1 ; 43
- 10fa: 1a bc out 0x2a, r1 ; 42
- //Отключение АКБ
- BATTERY_OFF;
- 10fc: 86 e0 ldi r24, 0x06 ; 6
- 10fe: 90 e0 ldi r25, 0x00 ; 0
- 1100: 60 e0 ldi r22, 0x00 ; 0
- 1102: 70 e0 ldi r23, 0x00 ; 0
- 1104: 40 e0 ldi r20, 0x00 ; 0
- 1106: 50 e0 ldi r21, 0x00 ; 0
- 1108: cb d7 rcall .+3990 ; 0x20a0 <__data_load_end+0x460>
- //Выключение таймера времени
- TIMSK &= ~(1 << TOIE2);
- 110a: 89 b7 in r24, 0x39 ; 57
- 110c: 8f 7b andi r24, 0xBF ; 191
- 110e: 89 bf out 0x39, r24 ; 57
- PauseSave[0] = Capacity;
- 1110: 80 91 3b 03 lds r24, 0x033B
- 1114: 90 91 3c 03 lds r25, 0x033C
- 1118: a0 91 3d 03 lds r26, 0x033D
- 111c: b0 91 3e 03 lds r27, 0x033E
- 1120: 80 93 4f 03 sts 0x034F, r24
- 1124: 90 93 50 03 sts 0x0350, r25
- 1128: a0 93 51 03 sts 0x0351, r26
- 112c: b0 93 52 03 sts 0x0352, r27
- PauseSave[1] = seconds();
- 1130: 71 d8 rcall .-3870 ; 0x214 <seconds>
- 1132: 60 93 53 03 sts 0x0353, r22
- 1136: 70 93 54 03 sts 0x0354, r23
- 113a: 80 93 55 03 sts 0x0355, r24
- 113e: 90 93 56 03 sts 0x0356, r25
- eeprom_write_byte(&eepause_continue, 1);
- 1142: 88 e0 ldi r24, 0x08 ; 8
- 1144: 90 e0 ldi r25, 0x00 ; 0
- 1146: 61 e0 ldi r22, 0x01 ; 1
- 1148: ef d3 rcall .+2014 ; 0x1928 <__eewr_byte_m8>
- eeprom_write_block ((const void *)&PauseSave, (void *)&eePauseSave, 8);
- 114a: 8f e4 ldi r24, 0x4F ; 79
- 114c: 93 e0 ldi r25, 0x03 ; 3
- 114e: 60 e0 ldi r22, 0x00 ; 0
- 1150: 70 e0 ldi r23, 0x00 ; 0
- 1152: 48 e0 ldi r20, 0x08 ; 8
- 1154: 50 e0 ldi r21, 0x00 ; 0
- 1156: df d3 rcall .+1982 ; 0x1916 <__eewr_block_m8>
- USART_SendStr("Test suspended\r\n");
- 1158: 82 ef ldi r24, 0xF2 ; 242
- 115a: 92 e0 ldi r25, 0x02 ; 2
- 115c: 90 d2 rcall .+1312 ; 0x167e <USART_SendStr>
- LCD_Goto(9, 1);
- 115e: 89 ec ldi r24, 0xC9 ; 201
- 1160: c3 d0 rcall .+390 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr("PAUSED");
- 1162: 83 e0 ldi r24, 0x03 ; 3
- 1164: 93 e0 ldi r25, 0x03 ; 3
- 1166: 05 d1 rcall .+522 ; 0x1372 <LCD_SendStr>
- i = 0;
- 1168: 10 92 47 03 sts 0x0347, r1
- button_event = 0;
- 116c: 10 92 48 03 sts 0x0348, r1
- while(i != ENTER_BUTTON_ID || button_event != BUT_PRESSED_CODE){
- 1170: 08 c0 rjmp .+16 ; 0x1182 <main+0x64e>
- BUT_Poll();
- 1172: 15 d2 rcall .+1066 ; 0x159e <BUT_Poll>
- i = BUT_GetBut();
- 1174: ca d1 rcall .+916 ; 0x150a <BUT_GetBut>
- 1176: 80 93 47 03 sts 0x0347, r24
- button_event = BUT_GetBut();
- 117a: c7 d1 rcall .+910 ; 0x150a <BUT_GetBut>
- 117c: 80 93 48 03 sts 0x0348, r24
- coolerCalc();
- 1180: 48 d9 rcall .-3440 ; 0x412 <coolerCalc>
- LCD_Goto(9, 1);
- LCD_SendStr("PAUSED");
- i = 0;
- button_event = 0;
- while(i != ENTER_BUTTON_ID || button_event != BUT_PRESSED_CODE){
- 1182: 80 91 47 03 lds r24, 0x0347
- 1186: 81 30 cpi r24, 0x01 ; 1
- 1188: a1 f7 brne .-24 ; 0x1172 <main+0x63e>
- 118a: 80 91 48 03 lds r24, 0x0348
- 118e: 81 30 cpi r24, 0x01 ; 1
- 1190: 81 f7 brne .-32 ; 0x1172 <main+0x63e>
- BUT_Poll();
- i = BUT_GetBut();
- button_event = BUT_GetBut();
- coolerCalc();
- }
- eeprom_write_byte(&eepause_continue, 0);
- 1192: 88 e0 ldi r24, 0x08 ; 8
- 1194: 90 e0 ldi r25, 0x00 ; 0
- 1196: 60 e0 ldi r22, 0x00 ; 0
- 1198: c7 d3 rcall .+1934 ; 0x1928 <__eewr_byte_m8>
- USART_SendStr("Initializing...\r\n");
- 119a: 8c e6 ldi r24, 0x6C ; 108
- 119c: 91 e0 ldi r25, 0x01 ; 1
- 119e: 6f d2 rcall .+1246 ; 0x167e <USART_SendStr>
- //PWM Calc
- OCR1A = AMPERAGE_PWM_COEFFICIENT*(I_set/AMPERAGE_PWM_COEFFICIENT_STEP)+AMPERAGE_PWM_COEFFICIENT_CORRECT*(I_set/AMPERAGE_PWM_COEFFICIENT_STEP);
- 11a0: 80 91 27 03 lds r24, 0x0327
- 11a4: 90 91 28 03 lds r25, 0x0328
- 11a8: 64 e6 ldi r22, 0x64 ; 100
- 11aa: 70 e0 ldi r23, 0x00 ; 0
- 11ac: 14 d3 rcall .+1576 ; 0x17d6 <__udivmodhi4>
- 11ae: ac e2 ldi r26, 0x2C ; 44
- 11b0: b0 e0 ldi r27, 0x00 ; 0
- 11b2: 6a 9f mul r22, r26
- 11b4: c0 01 movw r24, r0
- 11b6: 6b 9f mul r22, r27
- 11b8: 90 0d add r25, r0
- 11ba: 7a 9f mul r23, r26
- 11bc: 90 0d add r25, r0
- 11be: 11 24 eor r1, r1
- 11c0: 9b bd out 0x2b, r25 ; 43
- 11c2: 8a bd out 0x2a, r24 ; 42
- //Подключение АКБ
- BATTERY_ON;
- 11c4: 86 e0 ldi r24, 0x06 ; 6
- 11c6: 90 e0 ldi r25, 0x00 ; 0
- 11c8: 61 e0 ldi r22, 0x01 ; 1
- 11ca: 70 e0 ldi r23, 0x00 ; 0
- 11cc: 40 e0 ldi r20, 0x00 ; 0
- 11ce: 50 e0 ldi r21, 0x00 ; 0
- 11d0: 67 d7 rcall .+3790 ; 0x20a0 <__data_load_end+0x460>
- //Включение таймера времени
- TIMSK |= (1 << TOIE2);
- 11d2: 89 b7 in r24, 0x39 ; 57
- 11d4: 80 64 ori r24, 0x40 ; 64
- 11d6: 89 bf out 0x39, r24 ; 57
- LCD_Goto(9, 1);
- 11d8: 89 ec ldi r24, 0xC9 ; 201
- 11da: 86 d0 rcall .+268 ; 0x12e8 <LCD_WriteCom>
- LCD_SendStr(" ");
- 11dc: 8a e0 ldi r24, 0x0A ; 10
- 11de: 93 e0 ldi r25, 0x03 ; 3
- 11e0: c8 d0 rcall .+400 ; 0x1372 <LCD_SendStr>
- USART_SendStr("Test continued...\r\n");
- 11e2: 81 e1 ldi r24, 0x11 ; 17
- 11e4: 93 e0 ldi r25, 0x03 ; 3
- 11e6: 4b d2 rcall .+1174 ; 0x167e <USART_SendStr>
- }
- //Защита от переразряда и конец теста
- checkEndVoltage();
- 11e8: df da rcall .-2626 ; 0x7a8 <checkEndVoltage>
- }
- 11ea: 71 ce rjmp .-798 ; 0xece <main+0x39a>
- 000011ec <LCD_CommonFunc>:
- }
- /*общая функция*/
- inline static void LCD_CommonFunc(uint8_t data)
- {
- 11ec: 1f 93 push r17
- 11ee: 18 2f mov r17, r24
- #if (LCD_BUS_4_8_BIT == 0)
- uint8_t tmp;
- tmp = (data & 0xf0);
- ShiftDigitalWritePort(((ShiftDigitalGetPort(0) & 0b11000011) | (tmp >> 2)), 0);
- 11f0: 80 e0 ldi r24, 0x00 ; 0
- 11f2: 90 e0 ldi r25, 0x00 ; 0
- 11f4: 78 d7 rcall .+3824 ; 0x20e6 <__data_load_end+0x4a6>
- 11f6: 28 2f mov r18, r24
- 11f8: 30 e0 ldi r19, 0x00 ; 0
- 11fa: 23 7c andi r18, 0xC3 ; 195
- 11fc: 30 70 andi r19, 0x00 ; 0
- inline static void LCD_CommonFunc(uint8_t data)
- {
- #if (LCD_BUS_4_8_BIT == 0)
- uint8_t tmp;
- tmp = (data & 0xf0);
- 11fe: 41 2f mov r20, r17
- 1200: 40 7f andi r20, 0xF0 ; 240
- ShiftDigitalWritePort(((ShiftDigitalGetPort(0) & 0b11000011) | (tmp >> 2)), 0);
- 1202: 46 95 lsr r20
- 1204: 46 95 lsr r20
- 1206: 50 e0 ldi r21, 0x00 ; 0
- 1208: c9 01 movw r24, r18
- 120a: 84 2b or r24, r20
- 120c: 95 2b or r25, r21
- 120e: 60 e0 ldi r22, 0x00 ; 0
- 1210: 70 e0 ldi r23, 0x00 ; 0
- 1212: 63 d7 rcall .+3782 ; 0x20da <__data_load_end+0x49a>
- ShiftDigitalWrite(0, HIGH, 0);
- 1214: 80 e0 ldi r24, 0x00 ; 0
- 1216: 90 e0 ldi r25, 0x00 ; 0
- 1218: 61 e0 ldi r22, 0x01 ; 1
- 121a: 70 e0 ldi r23, 0x00 ; 0
- 121c: 40 e0 ldi r20, 0x00 ; 0
- 121e: 50 e0 ldi r21, 0x00 ; 0
- 1220: 3f d7 rcall .+3710 ; 0x20a0 <__data_load_end+0x460>
- #else
- //round up by default
- __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
- #endif
- __builtin_avr_delay_cycles(__ticks_dc);
- 1222: 85 e0 ldi r24, 0x05 ; 5
- 1224: 8a 95 dec r24
- 1226: f1 f7 brne .-4 ; 0x1224 <LCD_CommonFunc+0x38>
- 1228: 00 00 nop
- delay_us(LCD_DELAY_STROB);
- ShiftDigitalWrite(0, LOW, 0);
- 122a: 80 e0 ldi r24, 0x00 ; 0
- 122c: 90 e0 ldi r25, 0x00 ; 0
- 122e: 60 e0 ldi r22, 0x00 ; 0
- 1230: 70 e0 ldi r23, 0x00 ; 0
- 1232: 40 e0 ldi r20, 0x00 ; 0
- 1234: 50 e0 ldi r21, 0x00 ; 0
- 1236: 34 d7 rcall .+3688 ; 0x20a0 <__data_load_end+0x460>
- data = __swap_nibbles(data);
- 1238: 12 95 swap r17
- tmp = (data & 0xf0);
- ShiftDigitalWritePort(((ShiftDigitalGetPort(0) & 0b11000011) | (tmp >> 2)), 0);
- 123a: 80 e0 ldi r24, 0x00 ; 0
- 123c: 90 e0 ldi r25, 0x00 ; 0
- 123e: 53 d7 rcall .+3750 ; 0x20e6 <__data_load_end+0x4a6>
- 1240: 28 2f mov r18, r24
- 1242: 30 e0 ldi r19, 0x00 ; 0
- 1244: 23 7c andi r18, 0xC3 ; 195
- 1246: 30 70 andi r19, 0x00 ; 0
- ShiftDigitalWrite(0, HIGH, 0);
- delay_us(LCD_DELAY_STROB);
- ShiftDigitalWrite(0, LOW, 0);
- data = __swap_nibbles(data);
- tmp = (data & 0xf0);
- 1248: 10 7f andi r17, 0xF0 ; 240
- ShiftDigitalWritePort(((ShiftDigitalGetPort(0) & 0b11000011) | (tmp >> 2)), 0);
- 124a: 16 95 lsr r17
- 124c: 16 95 lsr r17
- 124e: 81 2f mov r24, r17
- 1250: 90 e0 ldi r25, 0x00 ; 0
- 1252: 82 2b or r24, r18
- 1254: 93 2b or r25, r19
- 1256: 60 e0 ldi r22, 0x00 ; 0
- 1258: 70 e0 ldi r23, 0x00 ; 0
- 125a: 3f d7 rcall .+3710 ; 0x20da <__data_load_end+0x49a>
- ShiftDigitalWrite(0, HIGH, 0);
- 125c: 80 e0 ldi r24, 0x00 ; 0
- 125e: 90 e0 ldi r25, 0x00 ; 0
- 1260: 61 e0 ldi r22, 0x01 ; 1
- 1262: 70 e0 ldi r23, 0x00 ; 0
- 1264: 40 e0 ldi r20, 0x00 ; 0
- 1266: 50 e0 ldi r21, 0x00 ; 0
- 1268: 1b d7 rcall .+3638 ; 0x20a0 <__data_load_end+0x460>
- 126a: 85 e0 ldi r24, 0x05 ; 5
- 126c: 8a 95 dec r24
- 126e: f1 f7 brne .-4 ; 0x126c <LCD_CommonFunc+0x80>
- 1270: 00 00 nop
- delay_us(LCD_DELAY_STROB);
- ShiftDigitalWrite(0, LOW, 0);
- 1272: 80 e0 ldi r24, 0x00 ; 0
- 1274: 90 e0 ldi r25, 0x00 ; 0
- 1276: 60 e0 ldi r22, 0x00 ; 0
- 1278: 70 e0 ldi r23, 0x00 ; 0
- 127a: 40 e0 ldi r20, 0x00 ; 0
- 127c: 50 e0 ldi r21, 0x00 ; 0
- 127e: 10 d7 rcall .+3616 ; 0x20a0 <__data_load_end+0x460>
- ShiftDigitalWrite(0, HIGH, 0);
- delay_us(LCD_DELAY_STROB);
- ShiftDigitalWrite(0, LOW, 0);
- #endif
- }
- 1280: 1f 91 pop r17
- 1282: 08 95 ret
- 00001284 <LCD_WriteComInit>:
- #define LCD_FL_BF 7
- /*_________________________________________________________________*/
- void LCD_WriteComInit(uint8_t data)
- {
- 1284: 1f 93 push r17
- 1286: 18 2f mov r17, r24
- 1288: 8a e6 ldi r24, 0x6A ; 106
- 128a: 8a 95 dec r24
- 128c: f1 f7 brne .-4 ; 0x128a <LCD_WriteComInit+0x6>
- 128e: 00 c0 rjmp .+0 ; 0x1290 <LCD_WriteComInit+0xc>
- delay_us(LCD_DELAY_WAIT);
- ShiftDigitalWrite(1, LOW, 0);
- 1290: 81 e0 ldi r24, 0x01 ; 1
- 1292: 90 e0 ldi r25, 0x00 ; 0
- 1294: 60 e0 ldi r22, 0x00 ; 0
- 1296: 70 e0 ldi r23, 0x00 ; 0
- 1298: 40 e0 ldi r20, 0x00 ; 0
- 129a: 50 e0 ldi r21, 0x00 ; 0
- 129c: 01 d7 rcall .+3586 ; 0x20a0 <__data_load_end+0x460>
- #if (LCD_BUS_4_8_BIT == 0)
- data &= 0xf0;
- #endif
- ShiftDigitalWritePort(((ShiftDigitalGetPort(0) & 0b11000011) | (data >> 2)), 0);
- 129e: 80 e0 ldi r24, 0x00 ; 0
- 12a0: 90 e0 ldi r25, 0x00 ; 0
- 12a2: 21 d7 rcall .+3650 ; 0x20e6 <__data_load_end+0x4a6>
- 12a4: 28 2f mov r18, r24
- 12a6: 30 e0 ldi r19, 0x00 ; 0
- 12a8: 23 7c andi r18, 0xC3 ; 195
- 12aa: 30 70 andi r19, 0x00 ; 0
- {
- delay_us(LCD_DELAY_WAIT);
- ShiftDigitalWrite(1, LOW, 0);
- #if (LCD_BUS_4_8_BIT == 0)
- data &= 0xf0;
- 12ac: 10 7f andi r17, 0xF0 ; 240
- #endif
- ShiftDigitalWritePort(((ShiftDigitalGetPort(0) & 0b11000011) | (data >> 2)), 0);
- 12ae: 16 95 lsr r17
- 12b0: 16 95 lsr r17
- 12b2: 81 2f mov r24, r17
- 12b4: 90 e0 ldi r25, 0x00 ; 0
- 12b6: 82 2b or r24, r18
- 12b8: 93 2b or r25, r19
- 12ba: 60 e0 ldi r22, 0x00 ; 0
- 12bc: 70 e0 ldi r23, 0x00 ; 0
- 12be: 0d d7 rcall .+3610 ; 0x20da <__data_load_end+0x49a>
- ShiftDigitalWrite(0, HIGH, 0);
- 12c0: 80 e0 ldi r24, 0x00 ; 0
- 12c2: 90 e0 ldi r25, 0x00 ; 0
- 12c4: 61 e0 ldi r22, 0x01 ; 1
- 12c6: 70 e0 ldi r23, 0x00 ; 0
- 12c8: 40 e0 ldi r20, 0x00 ; 0
- 12ca: 50 e0 ldi r21, 0x00 ; 0
- 12cc: e9 d6 rcall .+3538 ; 0x20a0 <__data_load_end+0x460>
- 12ce: 85 e0 ldi r24, 0x05 ; 5
- 12d0: 8a 95 dec r24
- 12d2: f1 f7 brne .-4 ; 0x12d0 <LCD_WriteComInit+0x4c>
- 12d4: 00 00 nop
- delay_us(LCD_DELAY_STROB);
- ShiftDigitalWrite(0, LOW, 0);
- 12d6: 80 e0 ldi r24, 0x00 ; 0
- 12d8: 90 e0 ldi r25, 0x00 ; 0
- 12da: 60 e0 ldi r22, 0x00 ; 0
- 12dc: 70 e0 ldi r23, 0x00 ; 0
- 12de: 40 e0 ldi r20, 0x00 ; 0
- 12e0: 50 e0 ldi r21, 0x00 ; 0
- 12e2: de d6 rcall .+3516 ; 0x20a0 <__data_load_end+0x460>
- }
- 12e4: 1f 91 pop r17
- 12e6: 08 95 ret
- 000012e8 <LCD_WriteCom>:
- #endif
- }
- /*функция записи команды*/
- void LCD_WriteCom(uint8_t data)
- {
- 12e8: 1f 93 push r17
- 12ea: 18 2f mov r17, r24
- 12ec: 8a e6 ldi r24, 0x6A ; 106
- 12ee: 8a 95 dec r24
- 12f0: f1 f7 brne .-4 ; 0x12ee <LCD_WriteCom+0x6>
- 12f2: 00 c0 rjmp .+0 ; 0x12f4 <LCD_WriteCom+0xc>
- LCD_Wait();
- ShiftDigitalWrite(1, LOW, 0);
- 12f4: 81 e0 ldi r24, 0x01 ; 1
- 12f6: 90 e0 ldi r25, 0x00 ; 0
- 12f8: 60 e0 ldi r22, 0x00 ; 0
- 12fa: 70 e0 ldi r23, 0x00 ; 0
- 12fc: 40 e0 ldi r20, 0x00 ; 0
- 12fe: 50 e0 ldi r21, 0x00 ; 0
- 1300: cf d6 rcall .+3486 ; 0x20a0 <__data_load_end+0x460>
- LCD_CommonFunc(data);
- 1302: 81 2f mov r24, r17
- 1304: 73 df rcall .-282 ; 0x11ec <LCD_CommonFunc>
- }
- 1306: 1f 91 pop r17
- 1308: 08 95 ret
- 0000130a <LCD_WriteData>:
- /*функция записи данных*/
- void LCD_WriteData(char data)
- {
- 130a: 1f 93 push r17
- 130c: 18 2f mov r17, r24
- 130e: 8a e6 ldi r24, 0x6A ; 106
- 1310: 8a 95 dec r24
- 1312: f1 f7 brne .-4 ; 0x1310 <LCD_WriteData+0x6>
- 1314: 00 c0 rjmp .+0 ; 0x1316 <LCD_WriteData+0xc>
- LCD_Wait();
- ShiftDigitalWrite(1, HIGH, 0);
- 1316: 81 e0 ldi r24, 0x01 ; 1
- 1318: 90 e0 ldi r25, 0x00 ; 0
- 131a: 61 e0 ldi r22, 0x01 ; 1
- 131c: 70 e0 ldi r23, 0x00 ; 0
- 131e: 40 e0 ldi r20, 0x00 ; 0
- 1320: 50 e0 ldi r21, 0x00 ; 0
- 1322: be d6 rcall .+3452 ; 0x20a0 <__data_load_end+0x460>
- LCD_CommonFunc(data);
- 1324: 81 2f mov r24, r17
- 1326: 62 df rcall .-316 ; 0x11ec <LCD_CommonFunc>
- }
- 1328: 1f 91 pop r17
- 132a: 08 95 ret
- 0000132c <LCD_Init>:
- /*функция инициализации*/
- void LCD_Init(void)
- {
- LCD_WriteComInit(LCD_COM_INIT_1);
- 132c: 80 e3 ldi r24, 0x30 ; 48
- 132e: aa df rcall .-172 ; 0x1284 <LCD_WriteComInit>
- #else
- //round up by default
- __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
- #endif
- __builtin_avr_delay_cycles(__ticks_dc);
- 1330: 8f e1 ldi r24, 0x1F ; 31
- 1332: 9e e4 ldi r25, 0x4E ; 78
- 1334: 01 97 sbiw r24, 0x01 ; 1
- 1336: f1 f7 brne .-4 ; 0x1334 <LCD_Init+0x8>
- 1338: 00 c0 rjmp .+0 ; 0x133a <LCD_Init+0xe>
- 133a: 00 00 nop
- delay_ms(10);
- LCD_WriteComInit(LCD_COM_INIT_1);
- 133c: 80 e3 ldi r24, 0x30 ; 48
- 133e: a2 df rcall .-188 ; 0x1284 <LCD_WriteComInit>
- 1340: 8f e9 ldi r24, 0x9F ; 159
- 1342: 9f e0 ldi r25, 0x0F ; 15
- 1344: 01 97 sbiw r24, 0x01 ; 1
- 1346: f1 f7 brne .-4 ; 0x1344 <LCD_Init+0x18>
- 1348: 00 c0 rjmp .+0 ; 0x134a <LCD_Init+0x1e>
- 134a: 00 00 nop
- delay_ms(2);
- LCD_WriteComInit(LCD_COM_INIT_1);
- 134c: 80 e3 ldi r24, 0x30 ; 48
- 134e: 9a df rcall .-204 ; 0x1284 <LCD_WriteComInit>
- #if (LCD_BUS_4_8_BIT == 0)
- LCD_WriteComInit(LCD_COM_FUNCTION_SET);
- 1350: 88 e2 ldi r24, 0x28 ; 40
- 1352: 98 df rcall .-208 ; 0x1284 <LCD_WriteComInit>
- #endif
- LCD_WriteCom(LCD_COM_FUNCTION_SET);
- 1354: 88 e2 ldi r24, 0x28 ; 40
- 1356: c8 df rcall .-112 ; 0x12e8 <LCD_WriteCom>
- LCD_WriteCom(LCD_COM_DISPLAY_CONTR);
- 1358: 8c e0 ldi r24, 0x0C ; 12
- 135a: c6 df rcall .-116 ; 0x12e8 <LCD_WriteCom>
- LCD_WriteCom(LCD_CLEAR_DISPLAY);
- 135c: 81 e0 ldi r24, 0x01 ; 1
- 135e: c4 df rcall .-120 ; 0x12e8 <LCD_WriteCom>
- 1360: 8f e9 ldi r24, 0x9F ; 159
- 1362: 9f e0 ldi r25, 0x0F ; 15
- 1364: 01 97 sbiw r24, 0x01 ; 1
- 1366: f1 f7 brne .-4 ; 0x1364 <LCD_Init+0x38>
- 1368: 00 c0 rjmp .+0 ; 0x136a <LCD_Init+0x3e>
- 136a: 00 00 nop
- delay_ms(2);
- LCD_WriteCom(LCD_COM_ENTRY_MODE_SET);
- 136c: 86 e0 ldi r24, 0x06 ; 6
- 136e: bc df rcall .-136 ; 0x12e8 <LCD_WriteCom>
- }
- 1370: 08 95 ret
- 00001372 <LCD_SendStr>:
- /*функция вывда строки из ОЗУ*/
- void LCD_SendStr(char *str)
- {
- 1372: ef 92 push r14
- 1374: ff 92 push r15
- 1376: cf 93 push r28
- 1378: df 93 push r29
- 137a: e8 2e mov r14, r24
- 137c: e7 01 movw r28, r14
- 137e: 7e 01 movw r14, r28
- 1380: f9 2e mov r15, r25
- 1382: e7 01 movw r28, r14
- uint8_t data;
- while (*str){
- 1384: 01 c0 rjmp .+2 ; 0x1388 <LCD_SendStr+0x16>
- data = *str++;
- LCD_WriteData(data);
- 1386: c1 df rcall .-126 ; 0x130a <LCD_WriteData>
- /*функция вывда строки из ОЗУ*/
- void LCD_SendStr(char *str)
- {
- uint8_t data;
- while (*str){
- 1388: 89 91 ld r24, Y+
- 138a: 88 23 and r24, r24
- 138c: e1 f7 brne .-8 ; 0x1386 <LCD_SendStr+0x14>
- data = *str++;
- LCD_WriteData(data);
- }
- }
- 138e: df 91 pop r29
- 1390: cf 91 pop r28
- 1392: ff 90 pop r15
- 1394: ef 90 pop r14
- 1396: 08 95 ret
- 00001398 <LCD_SetUserChar>:
- LCD_WriteData(data);
- }
- }
- void LCD_SetUserChar(uint8_t const *sym, uint8_t adr)
- {
- 1398: 0f 93 push r16
- 139a: 1f 93 push r17
- 139c: cf 93 push r28
- 139e: df 93 push r29
- 13a0: ec 01 movw r28, r24
- uint8_t data;
- uint8_t i;
- LCD_WriteCom((1<<0x06)|((adr&0x07)<<0x03));
- 13a2: 86 2f mov r24, r22
- 13a4: 90 e0 ldi r25, 0x00 ; 0
- 13a6: 87 70 andi r24, 0x07 ; 7
- 13a8: 90 70 andi r25, 0x00 ; 0
- 13aa: 23 e0 ldi r18, 0x03 ; 3
- 13ac: 88 0f add r24, r24
- 13ae: 99 1f adc r25, r25
- 13b0: 2a 95 dec r18
- 13b2: e1 f7 brne .-8 ; 0x13ac <LCD_SetUserChar+0x14>
- 13b4: 80 64 ori r24, 0x40 ; 64
- 13b6: 98 df rcall .-208 ; 0x12e8 <LCD_WriteCom>
- 13b8: 00 e0 ldi r16, 0x00 ; 0
- 13ba: 10 e0 ldi r17, 0x00 ; 0
- i = 0;
- while (i<8){
- data = pgm_read_byte(sym);
- 13bc: fe 01 movw r30, r28
- 13be: e0 0f add r30, r16
- 13c0: f1 1f adc r31, r17
- 13c2: 84 91 lpm r24, Z+
- sym++;
- LCD_WriteData(data);
- 13c4: a2 df rcall .-188 ; 0x130a <LCD_WriteData>
- 13c6: 0f 5f subi r16, 0xFF ; 255
- 13c8: 1f 4f sbci r17, 0xFF ; 255
- uint8_t i;
- LCD_WriteCom((1<<0x06)|((adr&0x07)<<0x03));
- i = 0;
- while (i<8){
- 13ca: 08 30 cpi r16, 0x08 ; 8
- 13cc: 11 05 cpc r17, r1
- 13ce: b1 f7 brne .-20 ; 0x13bc <LCD_SetUserChar+0x24>
- data = pgm_read_byte(sym);
- sym++;
- LCD_WriteData(data);
- i++;
- }
- }
- 13d0: df 91 pop r29
- 13d2: cf 91 pop r28
- 13d4: 1f 91 pop r17
- 13d6: 0f 91 pop r16
- 13d8: 08 95 ret
- 000013da <PutBut>:
- static uint8_t buf[BUT_SIZE_BUF];
- static uint8_t head, tail, count;
- static void PutBut(uint8_t but)
- {
- if (count < BUT_SIZE_BUF){
- 13da: 20 91 6a 03 lds r18, 0x036A
- 13de: 28 30 cpi r18, 0x08 ; 8
- 13e0: 78 f4 brcc .+30 ; 0x1400 <PutBut+0x26>
- buf[head] = but;
- 13e2: 90 91 6b 03 lds r25, 0x036B
- 13e6: e9 2f mov r30, r25
- 13e8: f0 e0 ldi r31, 0x00 ; 0
- 13ea: e4 59 subi r30, 0x94 ; 148
- 13ec: fc 4f sbci r31, 0xFC ; 252
- 13ee: 80 83 st Z, r24
- count++;
- 13f0: 2f 5f subi r18, 0xFF ; 255
- 13f2: 20 93 6a 03 sts 0x036A, r18
- head++;
- 13f6: 89 2f mov r24, r25
- 13f8: 8f 5f subi r24, 0xFF ; 255
- head &= (BUT_SIZE_BUF - 1);
- 13fa: 87 70 andi r24, 0x07 ; 7
- 13fc: 80 93 6b 03 sts 0x036B, r24
- 1400: 08 95 ret
- 00001402 <BUT_Check>:
- }
- /************************************************/
- static void BUT_Check(uint8_t state, uint8_t i, uint8_t settings)
- {
- 1402: 0f 93 push r16
- 1404: 1f 93 push r17
- 1406: cf 93 push r28
- 1408: df 93 push r29
- uint8_t stateTmp;
- uint8_t event;
- i--;
- 140a: 96 2f mov r25, r22
- 140c: 91 50 subi r25, 0x01 ; 1
- stateTmp = stateBut[i];
- 140e: c9 2f mov r28, r25
- 1410: d0 e0 ldi r29, 0x00 ; 0
- 1412: fe 01 movw r30, r28
- 1414: e5 5a subi r30, 0xA5 ; 165
- 1416: fc 4f sbci r31, 0xFC ; 252
- 1418: 10 81 ld r17, Z
- event = 0;
- #if (BUT_DOUBLE_CLICK_EN == 1)
- countHoldTmp = countHold[i];
- 141a: fe 01 movw r30, r28
- 141c: e2 5a subi r30, 0xA2 ; 162
- 141e: fc 4f sbci r31, 0xFC ; 252
- 1420: 90 81 ld r25, Z
- 1422: 90 93 61 03 sts 0x0361, r25
- #endif
- countDebTmp = countDeb[i];
- 1426: fe 01 movw r30, r28
- 1428: ee 0f add r30, r30
- 142a: ff 1f adc r31, r31
- 142c: ee 59 subi r30, 0x9E ; 158
- 142e: fc 4f sbci r31, 0xFC ; 252
- 1430: 20 81 ld r18, Z
- 1432: 31 81 ldd r19, Z+1 ; 0x01
- 1434: 30 93 69 03 sts 0x0369, r19
- 1438: 20 93 68 03 sts 0x0368, r18
- if (state){
- 143c: 88 23 and r24, r24
- 143e: f1 f0 breq .+60 ; 0x147c <BUT_Check+0x7a>
- if (countDebTmp < BUT_COUNT_MAX){
- 1440: 81 e0 ldi r24, 0x01 ; 1
- 1442: 25 3f cpi r18, 0xF5 ; 245
- 1444: 38 07 cpc r19, r24
- 1446: c0 f5 brcc .+112 ; 0x14b8 <BUT_Check+0xb6>
- countDebTmp++;
- 1448: 2f 5f subi r18, 0xFF ; 255
- 144a: 3f 4f sbci r19, 0xFF ; 255
- 144c: 30 93 69 03 sts 0x0369, r19
- 1450: 20 93 68 03 sts 0x0368, r18
- if (countDebTmp > BUT_COUNT_THR){
- 1454: 2b 30 cpi r18, 0x0B ; 11
- 1456: 31 05 cpc r19, r1
- 1458: 78 f1 brcs .+94 ; 0x14b8 <BUT_Check+0xb6>
- if (!(stateTmp & FLAG_BUT_PRESSED)){
- 145a: 10 fd sbrc r17, 0
- 145c: 05 c0 rjmp .+10 ; 0x1468 <BUT_Check+0x66>
- stateTmp |= FLAG_BUT_PRESSED;
- 145e: 11 60 ori r17, 0x01 ; 1
- #if (BUT_PRESSED_EN == 1)
- SaveEvent_m(settings, BUT_EV_PRESSED, BUT_PRESSED_CODE, event);
- 1460: 40 ff sbrs r20, 0
- 1462: 02 c0 rjmp .+4 ; 0x1468 <BUT_Check+0x66>
- 1464: 01 e0 ldi r16, 0x01 ; 1
- 1466: 01 c0 rjmp .+2 ; 0x146a <BUT_Check+0x68>
- uint8_t event;
- i--;
- stateTmp = stateBut[i];
- event = 0;
- 1468: 00 e0 ldi r16, 0x00 ; 0
- SaveEvent_m(settings, BUT_EV_PRESSED, BUT_PRESSED_CODE, event);
- #endif
- }
- }
- if (countDebTmp > BUT_COUNT_HELD){
- 146a: 81 e0 ldi r24, 0x01 ; 1
- 146c: 25 3f cpi r18, 0xF5 ; 245
- 146e: 38 07 cpc r19, r24
- 1470: 21 f5 brne .+72 ; 0x14ba <BUT_Check+0xb8>
- if (!(stateTmp & FLAG_BUT_HOLD)){
- 1472: 11 fd sbrc r17, 1
- 1474: 22 c0 rjmp .+68 ; 0x14ba <BUT_Check+0xb8>
- stateTmp &= ~(FLAG_BUT_RELEASED);
- 1476: 1b 7f andi r17, 0xFB ; 251
- stateTmp |= FLAG_BUT_HOLD;
- 1478: 12 60 ori r17, 0x02 ; 2
- 147a: 1f c0 rjmp .+62 ; 0x14ba <BUT_Check+0xb8>
- }
- }
- else{
- #if (BUT_DOUBLE_CLICK_EN == 1)
- if ((stateTmp & FLAG_BUT_PRESSED)&&(!(stateTmp & FLAG_BUT_HOLD))){
- 147c: 10 ff sbrs r17, 0
- 147e: 0c c0 rjmp .+24 ; 0x1498 <BUT_Check+0x96>
- 1480: 11 fd sbrc r17, 1
- 1482: 0a c0 rjmp .+20 ; 0x1498 <BUT_Check+0x96>
- if (stateTmp & FLAG_BUT_RELEASED){
- 1484: 12 ff sbrs r17, 2
- 1486: 05 c0 rjmp .+10 ; 0x1492 <BUT_Check+0x90>
- stateTmp &= ~FLAG_BUT_RELEASED;
- 1488: 1b 7f andi r17, 0xFB ; 251
- SaveEvent_m(settings, BUT_EV_DOUBLE_CLICK, BUT_DOUBLE_CLICK_CODE, event);
- 148a: 44 ff sbrs r20, 4
- 148c: 05 c0 rjmp .+10 ; 0x1498 <BUT_Check+0x96>
- 148e: 05 e0 ldi r16, 0x05 ; 5
- 1490: 04 c0 rjmp .+8 ; 0x149a <BUT_Check+0x98>
- }
- else{
- countHoldTmp = 0;
- 1492: 10 92 61 03 sts 0x0361, r1
- stateTmp |= FLAG_BUT_RELEASED;
- 1496: 14 60 ori r17, 0x04 ; 4
- uint8_t event;
- i--;
- stateTmp = stateBut[i];
- event = 0;
- 1498: 00 e0 ldi r16, 0x00 ; 0
- countHoldTmp = 0;
- stateTmp |= FLAG_BUT_RELEASED;
- }
- }
- if (stateTmp & FLAG_BUT_RELEASED){
- 149a: 12 ff sbrs r17, 2
- 149c: 07 c0 rjmp .+14 ; 0x14ac <BUT_Check+0xaa>
- if (countHoldTmp > BUT_COUNT_THR_2){
- 149e: 80 91 61 03 lds r24, 0x0361
- 14a2: 89 3c cpi r24, 0xC9 ; 201
- 14a4: 18 f0 brcs .+6 ; 0x14ac <BUT_Check+0xaa>
- countHoldTmp = 0;
- 14a6: 10 92 61 03 sts 0x0361, r1
- stateTmp &= ~FLAG_BUT_RELEASED;
- 14aa: 1b 7f andi r17, 0xFB ; 251
- if ((stateTmp & FLAG_BUT_PRESSED)&&(stateTmp & FLAG_BUT_HOLD)){
- SaveEvent_m(settings, BUT_EV_RELEASED_LONG, BUT_RELEASED_LONG_CODE, event);
- }
- #endif
- countDebTmp = 0;
- 14ac: 10 92 69 03 sts 0x0369, r1
- 14b0: 10 92 68 03 sts 0x0368, r1
- stateTmp &= ~(FLAG_BUT_PRESSED|FLAG_BUT_HOLD);
- 14b4: 1c 7f andi r17, 0xFC ; 252
- 14b6: 01 c0 rjmp .+2 ; 0x14ba <BUT_Check+0xb8>
- uint8_t event;
- i--;
- stateTmp = stateBut[i];
- event = 0;
- 14b8: 00 e0 ldi r16, 0x00 ; 0
- }
- #if (BUT_DOUBLE_CLICK_EN == 1)
- if (stateTmp & FLAG_BUT_RELEASED){
- 14ba: 12 ff sbrs r17, 2
- 14bc: 07 c0 rjmp .+14 ; 0x14cc <BUT_Check+0xca>
- if (countHoldTmp < BUT_COUNT_THR_2_MAX){
- 14be: 80 91 61 03 lds r24, 0x0361
- 14c2: 89 3c cpi r24, 0xC9 ; 201
- 14c4: 18 f4 brcc .+6 ; 0x14cc <BUT_Check+0xca>
- countHoldTmp++;
- 14c6: 8f 5f subi r24, 0xFF ; 255
- 14c8: 80 93 61 03 sts 0x0361, r24
- }
- }
- countHold[i] = countHoldTmp;
- 14cc: fe 01 movw r30, r28
- 14ce: e2 5a subi r30, 0xA2 ; 162
- 14d0: fc 4f sbci r31, 0xFC ; 252
- 14d2: 80 91 61 03 lds r24, 0x0361
- 14d6: 80 83 st Z, r24
- #endif
- if (event){
- 14d8: 00 23 and r16, r16
- 14da: 21 f0 breq .+8 ; 0x14e4 <BUT_Check+0xe2>
- PutBut(i+1);
- 14dc: 86 2f mov r24, r22
- 14de: 7d df rcall .-262 ; 0x13da <PutBut>
- PutBut(event);
- 14e0: 80 2f mov r24, r16
- 14e2: 7b df rcall .-266 ; 0x13da <PutBut>
- }
- countDeb[i] = countDebTmp;
- 14e4: fe 01 movw r30, r28
- 14e6: ee 0f add r30, r30
- 14e8: ff 1f adc r31, r31
- 14ea: ee 59 subi r30, 0x9E ; 158
- 14ec: fc 4f sbci r31, 0xFC ; 252
- 14ee: 80 91 68 03 lds r24, 0x0368
- 14f2: 90 91 69 03 lds r25, 0x0369
- 14f6: 91 83 std Z+1, r25 ; 0x01
- 14f8: 80 83 st Z, r24
- stateBut[i] = stateTmp;
- 14fa: c5 5a subi r28, 0xA5 ; 165
- 14fc: dc 4f sbci r29, 0xFC ; 252
- 14fe: 18 83 st Y, r17
- }
- 1500: df 91 pop r29
- 1502: cf 91 pop r28
- 1504: 1f 91 pop r17
- 1506: 0f 91 pop r16
- 1508: 08 95 ret
- 0000150a <BUT_GetBut>:
- uint8_t BUT_GetBut(void)
- {
- uint8_t but = 0;
- if (count){
- 150a: 20 91 6a 03 lds r18, 0x036A
- 150e: 22 23 and r18, r18
- 1510: 79 f0 breq .+30 ; 0x1530 <BUT_GetBut+0x26>
- but = buf[tail];
- 1512: 90 91 74 03 lds r25, 0x0374
- 1516: e9 2f mov r30, r25
- 1518: f0 e0 ldi r31, 0x00 ; 0
- 151a: e4 59 subi r30, 0x94 ; 148
- 151c: fc 4f sbci r31, 0xFC ; 252
- 151e: 80 81 ld r24, Z
- count--;
- 1520: 21 50 subi r18, 0x01 ; 1
- 1522: 20 93 6a 03 sts 0x036A, r18
- tail++;
- 1526: 9f 5f subi r25, 0xFF ; 255
- tail &= (BUT_SIZE_BUF - 1);
- 1528: 97 70 andi r25, 0x07 ; 7
- 152a: 90 93 74 03 sts 0x0374, r25
- 152e: 08 95 ret
- }
- }
- uint8_t BUT_GetBut(void)
- {
- uint8_t but = 0;
- 1530: 80 e0 ldi r24, 0x00 ; 0
- tail++;
- tail &= (BUT_SIZE_BUF - 1);
- }
- return but;
- }
- 1532: 08 95 ret
- 00001534 <BUT_Init>:
- void BUT_Init(void)
- {
- uint8_t i;
- for(i = 0; i < BUT_AMOUNT; i++){
- countDeb[i] = 0;
- 1534: 10 92 63 03 sts 0x0363, r1
- 1538: 10 92 62 03 sts 0x0362, r1
- stateBut[i] = 0;
- 153c: 10 92 5b 03 sts 0x035B, r1
- #if (BUT_DOUBLE_CLICK_EN == 1)
- countHold[i] = 0;
- 1540: 10 92 5e 03 sts 0x035E, r1
- void BUT_Init(void)
- {
- uint8_t i;
- for(i = 0; i < BUT_AMOUNT; i++){
- countDeb[i] = 0;
- 1544: 10 92 65 03 sts 0x0365, r1
- 1548: 10 92 64 03 sts 0x0364, r1
- stateBut[i] = 0;
- 154c: 10 92 5c 03 sts 0x035C, r1
- #if (BUT_DOUBLE_CLICK_EN == 1)
- countHold[i] = 0;
- 1550: 10 92 5f 03 sts 0x035F, r1
- void BUT_Init(void)
- {
- uint8_t i;
- for(i = 0; i < BUT_AMOUNT; i++){
- countDeb[i] = 0;
- 1554: 10 92 67 03 sts 0x0367, r1
- 1558: 10 92 66 03 sts 0x0366, r1
- stateBut[i] = 0;
- 155c: 10 92 5d 03 sts 0x035D, r1
- #if (BUT_DOUBLE_CLICK_EN == 1)
- countHold[i] = 0;
- 1560: 10 92 60 03 sts 0x0360, r1
- #endif
- }
- for(i = 0; i < BUT_SIZE_BUF; i++){
- buf[i] = 0;
- 1564: 10 92 6c 03 sts 0x036C, r1
- 1568: 10 92 6d 03 sts 0x036D, r1
- 156c: 10 92 6e 03 sts 0x036E, r1
- 1570: 10 92 6f 03 sts 0x036F, r1
- 1574: 10 92 70 03 sts 0x0370, r1
- 1578: 10 92 71 03 sts 0x0371, r1
- 157c: 10 92 72 03 sts 0x0372, r1
- 1580: 10 92 73 03 sts 0x0373, r1
- }
- head = 0;
- 1584: 10 92 6b 03 sts 0x036B, r1
- tail = 0;
- 1588: 10 92 74 03 sts 0x0374, r1
- count = 0;
- 158c: 10 92 6a 03 sts 0x036A, r1
- #ifdef BUT_1_ID
- ButtonInit_m(BUT_1_DDRX, BUT_1_PORTX, BUT_1_PIN, BUT_1_PULL);
- 1590: 8a 98 cbi 0x11, 2 ; 17
- 1592: 92 98 cbi 0x12, 2 ; 18
- #endif
- #ifdef BUT_2_ID
- ButtonInit_m(BUT_2_DDRX, BUT_2_PORTX, BUT_2_PIN, BUT_2_PULL);
- 1594: 8b 98 cbi 0x11, 3 ; 17
- 1596: 93 98 cbi 0x12, 3 ; 18
- #endif
- #ifdef BUT_3_ID
- ButtonInit_m(BUT_3_DDRX, BUT_3_PORTX, BUT_3_PIN, BUT_3_PULL);
- 1598: 8c 98 cbi 0x11, 4 ; 17
- 159a: 94 98 cbi 0x12, 4 ; 18
- #endif
- #ifdef BUT_32_ID
- ButtonInit_m(BUT_32_DDRX, BUT_32_PORTX, BUT_32_PIN, BUT_32_PULL);
- #endif
- }
- 159c: 08 95 ret
- 0000159e <BUT_Poll>:
- uint8_t state = 0;
- Switch_m(i);
- #ifdef BUT_1_ID
- CheckOneBut_m(BUT_1_ID, BUT_1_PINX, BUT_1_PIN, BUT_1_LEV, BUT_1_EVENT, state);
- 159e: 81 e0 ldi r24, 0x01 ; 1
- 15a0: 82 99 sbic 0x10, 2 ; 16
- 15a2: 80 e0 ldi r24, 0x00 ; 0
- 15a4: 61 e0 ldi r22, 0x01 ; 1
- 15a6: 41 e1 ldi r20, 0x11 ; 17
- 15a8: 2c df rcall .-424 ; 0x1402 <BUT_Check>
- #endif
- #ifdef BUT_2_ID
- CheckOneBut_m(BUT_2_ID, BUT_2_PINX, BUT_2_PIN, BUT_2_LEV, BUT_2_EVENT, state);
- 15aa: 81 e0 ldi r24, 0x01 ; 1
- 15ac: 83 99 sbic 0x10, 3 ; 16
- 15ae: 80 e0 ldi r24, 0x00 ; 0
- 15b0: 62 e0 ldi r22, 0x02 ; 2
- 15b2: 41 e0 ldi r20, 0x01 ; 1
- 15b4: 26 df rcall .-436 ; 0x1402 <BUT_Check>
- #endif
- #ifdef BUT_3_ID
- CheckOneBut_m(BUT_3_ID, BUT_3_PINX, BUT_3_PIN, BUT_3_LEV, BUT_3_EVENT, state);
- 15b6: 81 e0 ldi r24, 0x01 ; 1
- 15b8: 84 99 sbic 0x10, 4 ; 16
- 15ba: 80 e0 ldi r24, 0x00 ; 0
- 15bc: 63 e0 ldi r22, 0x03 ; 3
- 15be: 41 e0 ldi r20, 0x01 ; 1
- 15c0: 20 df rcall .-448 ; 0x1402 <BUT_Check>
- if (i >= BUT_AMOUNT){
- i = 0;
- }
- #endif
- }
- 15c2: 08 95 ret
- 000015c4 <USART_Init>:
- #endif
- //инициализация usart`a
- void USART_Init(uint8_t regime, uint16_t baudRate)
- {
- 15c4: 1f 93 push r17
- uint16_t ubrrValue;
- uint8_t save = SREG;
- 15c6: 1f b7 in r17, 0x3f ; 63
- cli();
- 15c8: f8 94 cli
- txBufTail = 0;
- 15ca: 10 92 9a 03 sts 0x039A, r1
- txBufHead = 0;
- 15ce: 10 92 89 03 sts 0x0389, r1
- txCount = 0;
- 15d2: 10 92 88 03 sts 0x0388, r1
- rxBufTail = 0;
- 15d6: 10 92 76 03 sts 0x0376, r1
- rxBufHead = 0;
- 15da: 10 92 87 03 sts 0x0387, r1
- rxCount = 0;
- 15de: 10 92 75 03 sts 0x0375, r1
- UCSRB = 0;
- 15e2: 1a b8 out 0x0a, r1 ; 10
- UCSRC = 0;
- 15e4: 10 bc out 0x20, r1 ; 32
- 15e6: 9b 01 movw r18, r22
- 15e8: 40 e0 ldi r20, 0x00 ; 0
- 15ea: 50 e0 ldi r21, 0x00 ; 0
- if (regime == USART_NORMAL){
- 15ec: 88 23 and r24, r24
- 15ee: 41 f4 brne .+16 ; 0x1600 <USART_Init+0x3c>
- ubrrValue = F_CPU/(16UL*baudRate) - 1;
- 15f0: 94 e0 ldi r25, 0x04 ; 4
- 15f2: 22 0f add r18, r18
- 15f4: 33 1f adc r19, r19
- 15f6: 44 1f adc r20, r20
- 15f8: 55 1f adc r21, r21
- 15fa: 9a 95 dec r25
- 15fc: d1 f7 brne .-12 ; 0x15f2 <USART_Init+0x2e>
- 15fe: 07 c0 rjmp .+14 ; 0x160e <USART_Init+0x4a>
- }
- else{
- ubrrValue = F_CPU/(8UL*baudRate) - 1;
- 1600: 83 e0 ldi r24, 0x03 ; 3
- 1602: 22 0f add r18, r18
- 1604: 33 1f adc r19, r19
- 1606: 44 1f adc r20, r20
- 1608: 55 1f adc r21, r21
- 160a: 8a 95 dec r24
- 160c: d1 f7 brne .-12 ; 0x1602 <USART_Init+0x3e>
- 160e: 60 e0 ldi r22, 0x00 ; 0
- 1610: 72 e1 ldi r23, 0x12 ; 18
- 1612: 8a e7 ldi r24, 0x7A ; 122
- 1614: 90 e0 ldi r25, 0x00 ; 0
- 1616: f3 d0 rcall .+486 ; 0x17fe <__udivmodsi4>
- 1618: 21 50 subi r18, 0x01 ; 1
- 161a: 30 40 sbci r19, 0x00 ; 0
- }
- UBRRH = (uint8_t)(ubrrValue >> 8);
- 161c: 30 bd out 0x20, r19 ; 32
- UBRRL = (uint8_t)ubrrValue;
- 161e: 29 b9 out 0x09, r18 ; 9
- UCSRA = (1<< (1 & U2X));
- 1620: 82 e0 ldi r24, 0x02 ; 2
- 1622: 8b b9 out 0x0b, r24 ; 11
- UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN); //разр. прерыв при приеме, разр приема, разр передачи.
- 1624: 88 e9 ldi r24, 0x98 ; 152
- 1626: 8a b9 out 0x0a, r24 ; 10
- UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //размер слова 8 разрядов
- 1628: 86 e8 ldi r24, 0x86 ; 134
- 162a: 80 bd out 0x20, r24 ; 32
- SREG = save;
- 162c: 1f bf out 0x3f, r17 ; 63
- }
- 162e: 1f 91 pop r17
- 1630: 08 95 ret
- 00001632 <USART_PutChar>:
- }
- //помещает символ в буфер, инициирует начало передачи
- void USART_PutChar(char sym)
- {
- while(txCount == SIZE_BUF_TX);
- 1632: 90 91 88 03 lds r25, 0x0388
- 1636: 90 31 cpi r25, 0x10 ; 16
- 1638: e1 f3 breq .-8 ; 0x1632 <USART_PutChar>
- cli();
- 163a: f8 94 cli
- if (!txCount){
- 163c: 90 91 88 03 lds r25, 0x0388
- 1640: 99 23 and r25, r25
- 1642: 09 f4 brne .+2 ; 0x1646 <USART_PutChar+0x14>
- UCSRB |= (1<<UDRIE);
- 1644: 55 9a sbi 0x0a, 5 ; 10
- }
- if (txCount < SIZE_BUF_TX){ //если в буфере еще есть место
- 1646: 90 91 88 03 lds r25, 0x0388
- 164a: 90 31 cpi r25, 0x10 ; 16
- 164c: b0 f4 brcc .+44 ; 0x167a <USART_PutChar+0x48>
- usartTxBuf[txBufTail] = sym; //помещаем в него символ
- 164e: e0 91 9a 03 lds r30, 0x039A
- 1652: f0 e0 ldi r31, 0x00 ; 0
- 1654: e6 57 subi r30, 0x76 ; 118
- 1656: fc 4f sbci r31, 0xFC ; 252
- 1658: 80 83 st Z, r24
- txCount++; //инкрементируем счетчик символов
- 165a: 80 91 88 03 lds r24, 0x0388
- 165e: 8f 5f subi r24, 0xFF ; 255
- 1660: 80 93 88 03 sts 0x0388, r24
- txBufTail++; //и индекс хвоста буфера
- 1664: 80 91 9a 03 lds r24, 0x039A
- 1668: 8f 5f subi r24, 0xFF ; 255
- 166a: 80 93 9a 03 sts 0x039A, r24
- if (txBufTail == SIZE_BUF_TX) txBufTail = 0;
- 166e: 80 91 9a 03 lds r24, 0x039A
- 1672: 80 31 cpi r24, 0x10 ; 16
- 1674: 11 f4 brne .+4 ; 0x167a <USART_PutChar+0x48>
- 1676: 10 92 9a 03 sts 0x039A, r1
- }
- sei();
- 167a: 78 94 sei
- }
- 167c: 08 95 ret
- 0000167e <USART_SendStr>:
- //функция посылающая строку из озу по usart`у
- void USART_SendStr(char * data)
- {
- 167e: ef 92 push r14
- 1680: ff 92 push r15
- 1682: cf 93 push r28
- 1684: df 93 push r29
- 1686: e8 2e mov r14, r24
- 1688: e7 01 movw r28, r14
- 168a: 7e 01 movw r14, r28
- 168c: f9 2e mov r15, r25
- 168e: e7 01 movw r28, r14
- char sym;
- while(*data){
- 1690: 01 c0 rjmp .+2 ; 0x1694 <USART_SendStr+0x16>
- sym = *data++;
- USART_PutChar(sym);
- 1692: cf df rcall .-98 ; 0x1632 <USART_PutChar>
- //функция посылающая строку из озу по usart`у
- void USART_SendStr(char * data)
- {
- char sym;
- while(*data){
- 1694: 89 91 ld r24, Y+
- 1696: 88 23 and r24, r24
- 1698: e1 f7 brne .-8 ; 0x1692 <USART_SendStr+0x14>
- sym = *data++;
- USART_PutChar(sym);
- }
- }
- 169a: df 91 pop r29
- 169c: cf 91 pop r28
- 169e: ff 90 pop r15
- 16a0: ef 90 pop r14
- 16a2: 08 95 ret
- 000016a4 <__vector_12>:
- }
- }
- //обработчик прерывания
- ISR(USART_UDRE_vect)
- {
- 16a4: 1f 92 push r1
- 16a6: 0f 92 push r0
- 16a8: 0f b6 in r0, 0x3f ; 63
- 16aa: 0f 92 push r0
- 16ac: 11 24 eor r1, r1
- 16ae: 8f 93 push r24
- 16b0: ef 93 push r30
- 16b2: ff 93 push r31
- if (txCount > 0){ //если буфер не пустой
- 16b4: 80 91 88 03 lds r24, 0x0388
- 16b8: 88 23 and r24, r24
- 16ba: c1 f0 breq .+48 ; 0x16ec <__vector_12+0x48>
- UDR = usartTxBuf[txBufHead]; //записываем в UDR символ из буфера
- 16bc: e0 91 89 03 lds r30, 0x0389
- 16c0: f0 e0 ldi r31, 0x00 ; 0
- 16c2: e6 57 subi r30, 0x76 ; 118
- 16c4: fc 4f sbci r31, 0xFC ; 252
- 16c6: 80 81 ld r24, Z
- 16c8: 8c b9 out 0x0c, r24 ; 12
- txCount--; //уменьшаем счетчик символов
- 16ca: 80 91 88 03 lds r24, 0x0388
- 16ce: 81 50 subi r24, 0x01 ; 1
- 16d0: 80 93 88 03 sts 0x0388, r24
- txBufHead++; //инкрементируем индекс головы буфера
- 16d4: 80 91 89 03 lds r24, 0x0389
- 16d8: 8f 5f subi r24, 0xFF ; 255
- 16da: 80 93 89 03 sts 0x0389, r24
- if (txBufHead == SIZE_BUF_TX) txBufHead = 0;
- 16de: 80 91 89 03 lds r24, 0x0389
- 16e2: 80 31 cpi r24, 0x10 ; 16
- 16e4: 21 f4 brne .+8 ; 0x16ee <__vector_12+0x4a>
- 16e6: 10 92 89 03 sts 0x0389, r1
- 16ea: 01 c0 rjmp .+2 ; 0x16ee <__vector_12+0x4a>
- }
- else{
- UCSRB &= ~(1<<UDRIE);
- 16ec: 55 98 cbi 0x0a, 5 ; 10
- }
- }
- 16ee: ff 91 pop r31
- 16f0: ef 91 pop r30
- 16f2: 8f 91 pop r24
- 16f4: 0f 90 pop r0
- 16f6: 0f be out 0x3f, r0 ; 63
- 16f8: 0f 90 pop r0
- 16fa: 1f 90 pop r1
- 16fc: 18 95 reti
- 000016fe <USART_GetRxCount>:
- //______________________________________________________________________________
- //возвращает колличество символов находящихся в приемном буфере
- uint8_t USART_GetRxCount(void)
- {
- return rxCount;
- 16fe: 80 91 75 03 lds r24, 0x0375
- }
- 1702: 08 95 ret
- 00001704 <USART_GetChar>:
- //чтение буфера
- char USART_GetChar(void)
- {
- char sym;
- if (rxCount > 0){ //если приемный буфер не пустой
- 1704: 80 91 75 03 lds r24, 0x0375
- 1708: 88 23 and r24, r24
- 170a: b9 f0 breq .+46 ; 0x173a <USART_GetChar+0x36>
- sym = usartRxBuf[rxBufHead]; //прочитать из него символ
- 170c: e0 91 87 03 lds r30, 0x0387
- 1710: f0 e0 ldi r31, 0x00 ; 0
- 1712: e9 58 subi r30, 0x89 ; 137
- 1714: fc 4f sbci r31, 0xFC ; 252
- 1716: 80 81 ld r24, Z
- rxCount--; //уменьшить счетчик символов
- 1718: 90 91 75 03 lds r25, 0x0375
- 171c: 91 50 subi r25, 0x01 ; 1
- 171e: 90 93 75 03 sts 0x0375, r25
- rxBufHead++; //инкрементировать индекс головы буфера
- 1722: 90 91 87 03 lds r25, 0x0387
- 1726: 9f 5f subi r25, 0xFF ; 255
- 1728: 90 93 87 03 sts 0x0387, r25
- if (rxBufHead == SIZE_BUF_RX) rxBufHead = 0;
- 172c: 90 91 87 03 lds r25, 0x0387
- 1730: 90 31 cpi r25, 0x10 ; 16
- 1732: 21 f4 brne .+8 ; 0x173c <USART_GetChar+0x38>
- 1734: 10 92 87 03 sts 0x0387, r1
- 1738: 08 95 ret
- return sym; //вернуть прочитанный символ
- }
- return 0;
- 173a: 80 e0 ldi r24, 0x00 ; 0
- }
- 173c: 08 95 ret
- 0000173e <__vector_11>:
- volatile uint8_t block = 0;
- //прерывание по завершению приема
- ISR(USART_RXC_vect)
- {
- 173e: 1f 92 push r1
- 1740: 0f 92 push r0
- 1742: 0f b6 in r0, 0x3f ; 63
- 1744: 0f 92 push r0
- 1746: 11 24 eor r1, r1
- 1748: 8f 93 push r24
- 174a: 9f 93 push r25
- 174c: ef 93 push r30
- 174e: ff 93 push r31
- char data = UDR;
- 1750: 8c b1 in r24, 0x0c ; 12
- if (rxCount < SIZE_BUF_RX){ //если в буфере еще есть место
- 1752: 90 91 75 03 lds r25, 0x0375
- 1756: 90 31 cpi r25, 0x10 ; 16
- 1758: b0 f4 brcc .+44 ; 0x1786 <__vector_11+0x48>
- usartRxBuf[rxBufTail] = data; //считать символ из UDR в буфер
- 175a: e0 91 76 03 lds r30, 0x0376
- 175e: f0 e0 ldi r31, 0x00 ; 0
- 1760: e9 58 subi r30, 0x89 ; 137
- 1762: fc 4f sbci r31, 0xFC ; 252
- 1764: 80 83 st Z, r24
- rxBufTail++; //увеличить индекс хвоста приемного буфера
- 1766: 80 91 76 03 lds r24, 0x0376
- 176a: 8f 5f subi r24, 0xFF ; 255
- 176c: 80 93 76 03 sts 0x0376, r24
- if (rxBufTail == SIZE_BUF_RX) rxBufTail = 0;
- 1770: 80 91 76 03 lds r24, 0x0376
- 1774: 80 31 cpi r24, 0x10 ; 16
- 1776: 11 f4 brne .+4 ; 0x177c <__vector_11+0x3e>
- 1778: 10 92 76 03 sts 0x0376, r1
- rxCount++; //увеличить счетчик принятых символов
- 177c: 80 91 75 03 lds r24, 0x0375
- 1780: 8f 5f subi r24, 0xFF ; 255
- 1782: 80 93 75 03 sts 0x0375, r24
- }
- }
- 1786: ff 91 pop r31
- 1788: ef 91 pop r30
- 178a: 9f 91 pop r25
- 178c: 8f 91 pop r24
- 178e: 0f 90 pop r0
- 1790: 0f be out 0x3f, r0 ; 63
- 1792: 0f 90 pop r0
- 1794: 1f 90 pop r1
- 1796: 18 95 reti
- 00001798 <__mulsi3>:
- 1798: 62 9f mul r22, r18
- 179a: d0 01 movw r26, r0
- 179c: 73 9f mul r23, r19
- 179e: f0 01 movw r30, r0
- 17a0: 82 9f mul r24, r18
- 17a2: e0 0d add r30, r0
- 17a4: f1 1d adc r31, r1
- 17a6: 64 9f mul r22, r20
- 17a8: e0 0d add r30, r0
- 17aa: f1 1d adc r31, r1
- 17ac: 92 9f mul r25, r18
- 17ae: f0 0d add r31, r0
- 17b0: 83 9f mul r24, r19
- 17b2: f0 0d add r31, r0
- 17b4: 74 9f mul r23, r20
- 17b6: f0 0d add r31, r0
- 17b8: 65 9f mul r22, r21
- 17ba: f0 0d add r31, r0
- 17bc: 99 27 eor r25, r25
- 17be: 72 9f mul r23, r18
- 17c0: b0 0d add r27, r0
- 17c2: e1 1d adc r30, r1
- 17c4: f9 1f adc r31, r25
- 17c6: 63 9f mul r22, r19
- 17c8: b0 0d add r27, r0
- 17ca: e1 1d adc r30, r1
- 17cc: f9 1f adc r31, r25
- 17ce: bd 01 movw r22, r26
- 17d0: cf 01 movw r24, r30
- 17d2: 11 24 eor r1, r1
- 17d4: 08 95 ret
- 000017d6 <__udivmodhi4>:
- 17d6: aa 1b sub r26, r26
- 17d8: bb 1b sub r27, r27
- 17da: 51 e1 ldi r21, 0x11 ; 17
- 17dc: 07 c0 rjmp .+14 ; 0x17ec <__udivmodhi4_ep>
- 000017de <__udivmodhi4_loop>:
- 17de: aa 1f adc r26, r26
- 17e0: bb 1f adc r27, r27
- 17e2: a6 17 cp r26, r22
- 17e4: b7 07 cpc r27, r23
- 17e6: 10 f0 brcs .+4 ; 0x17ec <__udivmodhi4_ep>
- 17e8: a6 1b sub r26, r22
- 17ea: b7 0b sbc r27, r23
- 000017ec <__udivmodhi4_ep>:
- 17ec: 88 1f adc r24, r24
- 17ee: 99 1f adc r25, r25
- 17f0: 5a 95 dec r21
- 17f2: a9 f7 brne .-22 ; 0x17de <__udivmodhi4_loop>
- 17f4: 80 95 com r24
- 17f6: 90 95 com r25
- 17f8: bc 01 movw r22, r24
- 17fa: cd 01 movw r24, r26
- 17fc: 08 95 ret
- 000017fe <__udivmodsi4>:
- 17fe: a1 e2 ldi r26, 0x21 ; 33
- 1800: 1a 2e mov r1, r26
- 1802: aa 1b sub r26, r26
- 1804: bb 1b sub r27, r27
- 1806: fd 01 movw r30, r26
- 1808: 0d c0 rjmp .+26 ; 0x1824 <__udivmodsi4_ep>
- 0000180a <__udivmodsi4_loop>:
- 180a: aa 1f adc r26, r26
- 180c: bb 1f adc r27, r27
- 180e: ee 1f adc r30, r30
- 1810: ff 1f adc r31, r31
- 1812: a2 17 cp r26, r18
- 1814: b3 07 cpc r27, r19
- 1816: e4 07 cpc r30, r20
- 1818: f5 07 cpc r31, r21
- 181a: 20 f0 brcs .+8 ; 0x1824 <__udivmodsi4_ep>
- 181c: a2 1b sub r26, r18
- 181e: b3 0b sbc r27, r19
- 1820: e4 0b sbc r30, r20
- 1822: f5 0b sbc r31, r21
- 00001824 <__udivmodsi4_ep>:
- 1824: 66 1f adc r22, r22
- 1826: 77 1f adc r23, r23
- 1828: 88 1f adc r24, r24
- 182a: 99 1f adc r25, r25
- 182c: 1a 94 dec r1
- 182e: 69 f7 brne .-38 ; 0x180a <__udivmodsi4_loop>
- 1830: 60 95 com r22
- 1832: 70 95 com r23
- 1834: 80 95 com r24
- 1836: 90 95 com r25
- 1838: 9b 01 movw r18, r22
- 183a: ac 01 movw r20, r24
- 183c: bd 01 movw r22, r26
- 183e: cf 01 movw r24, r30
- 1840: 08 95 ret
- 00001842 <__divmodsi4>:
- 1842: 97 fb bst r25, 7
- 1844: 09 2e mov r0, r25
- 1846: 05 26 eor r0, r21
- 1848: 0e d0 rcall .+28 ; 0x1866 <__divmodsi4_neg1>
- 184a: 57 fd sbrc r21, 7
- 184c: 04 d0 rcall .+8 ; 0x1856 <__divmodsi4_neg2>
- 184e: d7 df rcall .-82 ; 0x17fe <__udivmodsi4>
- 1850: 0a d0 rcall .+20 ; 0x1866 <__divmodsi4_neg1>
- 1852: 00 1c adc r0, r0
- 1854: 38 f4 brcc .+14 ; 0x1864 <__divmodsi4_exit>
- 00001856 <__divmodsi4_neg2>:
- 1856: 50 95 com r21
- 1858: 40 95 com r20
- 185a: 30 95 com r19
- 185c: 21 95 neg r18
- 185e: 3f 4f sbci r19, 0xFF ; 255
- 1860: 4f 4f sbci r20, 0xFF ; 255
- 1862: 5f 4f sbci r21, 0xFF ; 255
- 00001864 <__divmodsi4_exit>:
- 1864: 08 95 ret
- 00001866 <__divmodsi4_neg1>:
- 1866: f6 f7 brtc .-4 ; 0x1864 <__divmodsi4_exit>
- 1868: 90 95 com r25
- 186a: 80 95 com r24
- 186c: 70 95 com r23
- 186e: 61 95 neg r22
- 1870: 7f 4f sbci r23, 0xFF ; 255
- 1872: 8f 4f sbci r24, 0xFF ; 255
- 1874: 9f 4f sbci r25, 0xFF ; 255
- 1876: 08 95 ret
- 00001878 <ltoa>:
- 1878: fa 01 movw r30, r20
- 187a: cf 93 push r28
- 187c: ff 93 push r31
- 187e: ef 93 push r30
- 1880: 22 30 cpi r18, 0x02 ; 2
- 1882: 3c f1 brlt .+78 ; 0x18d2 <ltoa+0x5a>
- 1884: 25 32 cpi r18, 0x25 ; 37
- 1886: 2c f5 brge .+74 ; 0x18d2 <ltoa+0x5a>
- 1888: c2 2f mov r28, r18
- 188a: e8 94 clt
- 188c: ca 30 cpi r28, 0x0A ; 10
- 188e: 49 f4 brne .+18 ; 0x18a2 <ltoa+0x2a>
- 1890: 97 fb bst r25, 7
- 1892: 3e f4 brtc .+14 ; 0x18a2 <ltoa+0x2a>
- 1894: 90 95 com r25
- 1896: 80 95 com r24
- 1898: 70 95 com r23
- 189a: 61 95 neg r22
- 189c: 7f 4f sbci r23, 0xFF ; 255
- 189e: 8f 4f sbci r24, 0xFF ; 255
- 18a0: 9f 4f sbci r25, 0xFF ; 255
- 18a2: 2c 2f mov r18, r28
- 18a4: 33 27 eor r19, r19
- 18a6: 44 27 eor r20, r20
- 18a8: 55 27 eor r21, r21
- 18aa: ff 93 push r31
- 18ac: ef 93 push r30
- 18ae: a7 df rcall .-178 ; 0x17fe <__udivmodsi4>
- 18b0: ef 91 pop r30
- 18b2: ff 91 pop r31
- 18b4: 60 5d subi r22, 0xD0 ; 208
- 18b6: 6a 33 cpi r22, 0x3A ; 58
- 18b8: 0c f0 brlt .+2 ; 0x18bc <ltoa+0x44>
- 18ba: 69 5d subi r22, 0xD9 ; 217
- 18bc: 61 93 st Z+, r22
- 18be: b9 01 movw r22, r18
- 18c0: ca 01 movw r24, r20
- 18c2: 60 50 subi r22, 0x00 ; 0
- 18c4: 70 40 sbci r23, 0x00 ; 0
- 18c6: 80 40 sbci r24, 0x00 ; 0
- 18c8: 90 40 sbci r25, 0x00 ; 0
- 18ca: 59 f7 brne .-42 ; 0x18a2 <ltoa+0x2a>
- 18cc: 16 f4 brtc .+4 ; 0x18d2 <ltoa+0x5a>
- 18ce: cd e2 ldi r28, 0x2D ; 45
- 18d0: c1 93 st Z+, r28
- 18d2: 10 82 st Z, r1
- 18d4: 8f 91 pop r24
- 18d6: 9f 91 pop r25
- 18d8: cf 91 pop r28
- 18da: 3b c0 rjmp .+118 ; 0x1952 <strrev>
- 000018dc <__eerd_block_m8>:
- 18dc: dc 01 movw r26, r24
- 18de: cb 01 movw r24, r22
- 000018e0 <__eerd_blraw_m8>:
- 18e0: fc 01 movw r30, r24
- 18e2: e1 99 sbic 0x1c, 1 ; 28
- 18e4: fe cf rjmp .-4 ; 0x18e2 <__eerd_blraw_m8+0x2>
- 18e6: 06 c0 rjmp .+12 ; 0x18f4 <__eerd_blraw_m8+0x14>
- 18e8: ff bb out 0x1f, r31 ; 31
- 18ea: ee bb out 0x1e, r30 ; 30
- 18ec: e0 9a sbi 0x1c, 0 ; 28
- 18ee: 31 96 adiw r30, 0x01 ; 1
- 18f0: 0d b2 in r0, 0x1d ; 29
- 18f2: 0d 92 st X+, r0
- 18f4: 41 50 subi r20, 0x01 ; 1
- 18f6: 50 40 sbci r21, 0x00 ; 0
- 18f8: b8 f7 brcc .-18 ; 0x18e8 <__eerd_blraw_m8+0x8>
- 18fa: 08 95 ret
- 000018fc <__eerd_byte_m8>:
- 18fc: e1 99 sbic 0x1c, 1 ; 28
- 18fe: fe cf rjmp .-4 ; 0x18fc <__eerd_byte_m8>
- 1900: 9f bb out 0x1f, r25 ; 31
- 1902: 8e bb out 0x1e, r24 ; 30
- 1904: e0 9a sbi 0x1c, 0 ; 28
- 1906: 99 27 eor r25, r25
- 1908: 8d b3 in r24, 0x1d ; 29
- 190a: 08 95 ret
- 0000190c <__eerd_dword_m8>:
- 190c: a6 e1 ldi r26, 0x16 ; 22
- 190e: b0 e0 ldi r27, 0x00 ; 0
- 1910: 44 e0 ldi r20, 0x04 ; 4
- 1912: 50 e0 ldi r21, 0x00 ; 0
- 1914: e5 cf rjmp .-54 ; 0x18e0 <__eerd_blraw_m8>
- 00001916 <__eewr_block_m8>:
- 1916: dc 01 movw r26, r24
- 1918: cb 01 movw r24, r22
- 191a: 02 c0 rjmp .+4 ; 0x1920 <__eewr_block_m8+0xa>
- 191c: 2d 91 ld r18, X+
- 191e: 05 d0 rcall .+10 ; 0x192a <__eewr_r18_m8>
- 1920: 41 50 subi r20, 0x01 ; 1
- 1922: 50 40 sbci r21, 0x00 ; 0
- 1924: d8 f7 brcc .-10 ; 0x191c <__eewr_block_m8+0x6>
- 1926: 08 95 ret
- 00001928 <__eewr_byte_m8>:
- 1928: 26 2f mov r18, r22
- 0000192a <__eewr_r18_m8>:
- 192a: e1 99 sbic 0x1c, 1 ; 28
- 192c: fe cf rjmp .-4 ; 0x192a <__eewr_r18_m8>
- 192e: 9f bb out 0x1f, r25 ; 31
- 1930: 8e bb out 0x1e, r24 ; 30
- 1932: 2d bb out 0x1d, r18 ; 29
- 1934: 0f b6 in r0, 0x3f ; 63
- 1936: f8 94 cli
- 1938: e2 9a sbi 0x1c, 2 ; 28
- 193a: e1 9a sbi 0x1c, 1 ; 28
- 193c: 0f be out 0x3f, r0 ; 63
- 193e: 01 96 adiw r24, 0x01 ; 1
- 1940: 08 95 ret
- 00001942 <__eewr_dword_m8>:
- 1942: 24 2f mov r18, r20
- 1944: f2 df rcall .-28 ; 0x192a <__eewr_r18_m8>
- 1946: 25 2f mov r18, r21
- 1948: f0 df rcall .-32 ; 0x192a <__eewr_r18_m8>
- 194a: 00 c0 rjmp .+0 ; 0x194c <__eewr_word_m8>
- 0000194c <__eewr_word_m8>:
- 194c: ed df rcall .-38 ; 0x1928 <__eewr_byte_m8>
- 194e: 27 2f mov r18, r23
- 1950: ec cf rjmp .-40 ; 0x192a <__eewr_r18_m8>
- 00001952 <strrev>:
- 1952: dc 01 movw r26, r24
- 1954: fc 01 movw r30, r24
- 1956: 67 2f mov r22, r23
- 1958: 71 91 ld r23, Z+
- 195a: 77 23 and r23, r23
- 195c: e1 f7 brne .-8 ; 0x1956 <strrev+0x4>
- 195e: 32 97 sbiw r30, 0x02 ; 2
- 1960: 04 c0 rjmp .+8 ; 0x196a <strrev+0x18>
- 1962: 7c 91 ld r23, X
- 1964: 6d 93 st X+, r22
- 1966: 70 83 st Z, r23
- 1968: 62 91 ld r22, -Z
- 196a: ae 17 cp r26, r30
- 196c: bf 07 cpc r27, r31
- 196e: c8 f3 brcs .-14 ; 0x1962 <strrev+0x10>
- 1970: 08 95 ret
- 00001972 <_exit>:
- 1972: f8 94 cli
- 00001974 <__stop_program>:
- 1974: ff cf rjmp .-2 ; 0x1974 <__stop_program>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement