Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

20c: c8 01 movw r24, r16

20e: 61 e0 ldi r22, 0x01 ; 1

210: a6 df rcall.-180 ; 0x15e <display_write_strong>

data=rtc_read_byte(SECONDS_READ); // чтение данных секунд

212: 80 e0 ldi r24, 0x00 ; 0

214: 4f df rcall.-354 ; 0xb4 <rtc_read_byte>

display_write_bcd(data); // запись данных

216: b7 df rcall.-146 ; 0x186 <display_write_bcd>

}

218: 1f 91 pop r17

21a: 0f 91 pop r16

21c: ff 90 pop r15

21e: ef 90 pop r14

220:ret

<settings_data>:

// upper = n -> верхний предел

// lower = n -> нижний предел

// display_index = 0xXX -> адрес установки курсора

// address = 0xXX -> адрес байта

void settings_data(uint8_t upper, uint8_t lower, uint8_t display_index, uint8_t address)

{

222: cf 92 push r12

224: df 92 push r13

226: ef 92 push r14

228: ff 92 push r15

22a: 0f 93 push r16

22c: 1f 93 push r17

22e: cf 93 push r28

230: df 93 push r29

232: e8 2e mov r14, r24

234: f6 2e mov r15, r22

236: d4 2e mov r13, r20

238: c2 2e mov r12, r18

23a: 16 2f mov r17, r22

23c: 00 e0 ldi r16, 0x00 ; 0

23e: c0 e5 ldi r28, 0x50 ; 80

240: d3 ec ldi r29, 0xC3 ; 195

242: 2d c0 rjmp.+90 ; 0x29e <settings_data+0x7c>

i_0=lower; // начальное значение

buffer=0x0; // начальное значение

rtc_data=0x0; // начальное значение

while((PIND & (1<<SETTINGS))!=0)

{

display_write_byte(0, 0, display_index); // установка курсора

244: 80 e0 ldi r24, 0x00 ; 0

246: 60 e0 ldi r22, 0x00 ; 0

248: 4d 2d mov r20, r13

24a: 3b df rcall.-394 ; 0xc2 <display_write_byte>

24c: 91 2f mov r25, r17

24e: 80 e0 ldi r24, 0x00 ; 0

250: 00 e0 ldi r16, 0x00 ; 0

252: 09 c0 rjmp.+18 ; 0x266 <settings_data+0x44>

i_1=i_0; // копирование данных

buffer=0x0; // очистка промежуточного буффера данных

rtc_data=0x0; // очистка данных

while(i_1>0)

{

++buffer; // увеличение значения

254: 8f 5f subi r24, 0xFF ; 255

if(buffer>9)

256: 8a 30 cpi r24, 0x0A ; 10

258: 18 f0 brcs.+6 ; 0x260 <settings_data+0x3e>

{

buffer=0x0; // очистка промежуточного буффера данных

rtc_data=rtc_data>>4; // сдвиг вправо

rtc_data=rtc_data & 0xF; // выделение младшего полубайта

++rtc_data; // увеличение значения

25a: 00 7f andi r16, 0xF0 ; 240

rtc_data=rtc_data<<4; // сдвиг влево

25c: 00 5f subi r16, 0xF0 ; 240

25e: 80 e0 ldi r24, 0x00 ; 0

}

rtc_data=rtc_data & 0xF0; // выделение старшего полубайта

260: 00 7f andi r16, 0xF0 ; 240

rtc_data=rtc_data | buffer; // сложение полубайтов

262: 08 2b or r16, r24

--i_1; // уменьшение значения

264:subi r25, 0x01 ; 1

{

display_write_byte(0, 0, display_index); // установка курсора

i_1=i_0; // копирование данных

buffer=0x0; // очистка промежуточного буффера данных

rtc_data=0x0; // очистка данных

while(i_1>0)

266:and r25, r25

268: a9 f7 brne.-22 ; 0x254 <settings_data+0x32>

}

rtc_data=rtc_data & 0xF0; // выделение старшего полубайта

rtc_data=rtc_data | buffer; // сложение полубайтов

--i_1; // уменьшение значения

}

display_write_bcd(rtc_data); // запись данных

26a: 80 2f mov r24, r16

26c: 8c df rcall.-232 ; 0x186 <display_write_bcd>

if(i_0==lower)

26e: 1f 15 cp r17, r15

270: 19 f4 brne.+6 ; 0x278 <settings_data+0x56>

{

if((PIND & (1<<INCREMENT))==0)

272:sbic 0x10, 2 ; 16

274: 14 c0 rjmp.+40 ; 0x29e <settings_data+0x7c>

276: 08 c0 rjmp.+16 ; 0x288 <settings_data+0x66>

{

_delay_ms(200); // антидребезг

++i_0; // увеличение значения

}

}

else if(i_0==upper)

278: 1e 15 cp r17, r14

27a: 59 f0 breq.+22 ; 0x292 <settings_data+0x70>

{

_delay_ms(200); // антидребезг

--i_0; // уменьшение значения

}

}

else if(i_0>lower && i_0<upper)

27c: f1 16 cp r15, r17

27e: 78 f4 brcc.+30 ; 0x29e <settings_data+0x7c>

280: 1e 15 cp r17, r14

282: 68 f4 brcc.+26 ; 0x29e <settings_data+0x7c>

{

if((PIND & (1<<INCREMENT))==0)

284:sbic 0x10, 2 ; 16

286: 05 c0 rjmp.+10 ; 0x292 <settings_data+0x70>

288: ce 01 movw r24, r28

28a:sbiw r24, 0x01 ; 1

28c: f1 f7 brne.-4 ; 0x28a <settings_data+0x68>

{

_delay_ms(200); // антидребезг

++i_0; // увеличение значения

28e: 1f 5f subi r17, 0xFF ; 255

290: 06 c0 rjmp.+12 ; 0x29e <settings_data+0x7c>

}

else if((PIND & (1<<DECREMENT))==0)

292:sbic 0x10, 1 ; 16

294: 04 c0 rjmp.+8 ; 0x29e <settings_data+0x7c>

296: ce 01 movw r24, r28

298:sbiw r24, 0x01 ; 1

29a: f1 f7 brne.-4 ; 0x298 <settings_data+0x76>

{

_delay_ms(200); // антидребезг

--i_0; // уменьшение значения

29c:subi r17, 0x01 ; 1

uint8_t buffer; // промежуточный буффер данных

uint8_t rtc_data; // данные

i_0=lower; // начальное значение

buffer=0x0; // начальное значение

rtc_data=0x0; // начальное значение

while((PIND & (1<<SETTINGS))!=0)

29e:sbic 0x10, 0 ; 16

2a0: d1 cf rjmp.-94 ; 0x244 <settings_data+0x22>

2a2: 80 e5 ldi r24, 0x50 ; 80

2a4: 93 ec ldi r25, 0xC3 ; 195

2a6:sbiw r24, 0x01 ; 1

2a8: f1 f7 brne.-4 ; 0x2a6 <settings_data+0x84>

--i_0; // уменьшение значения

}

}

}

_delay_ms(200); // антидребезг

rtc_write_byte(address, rtc_data); // запись данных

2aa: 8c 2d mov r24, r12

2ac: 60 2f mov r22, r16

2ae: f7 de rcall.-530 ; 0x9e <rtc_write_byte>

}

2b0: df 91 pop r29

2b2: cf 91 pop r28

2b4: 1f 91 pop r17

2b6: 0f 91 pop r16

2b8: ff 90 pop r15

2ba: ef 90 pop r14

2bc: df 90 pop r13

2be: cf 90 pop r12

2c0:ret

000002c2 <rtc_settings>:

// rtc_settings - функция установки параметров

void rtc_settings(void)

{

rtc_write_byte(CONTROL_REG, 0x80); // остановка внутреннего генератора

2c2: 8f e8 ldi r24, 0x8F ; 143

2c4: 60 e8 ldi r22, 0x80 ; 128

2c6: eb de rcall.-554 ; 0x9e <rtc_write_byte>

settings_data(31, 1, 0x84, DATE_WRITE); // установка числа месяца

2c8: 8f e1 ldi r24, 0x1F ; 31

2ca: 61 e0 ldi r22, 0x01 ; 1

2cc: 44 e8 ldi r20, 0x84 ; 132

2ce: 24 e8 ldi r18, 0x84 ; 132

2d0: a8 df rcall.-176 ; 0x222 <settings_data>

settings_data(12, 1, 0x87, MONTH_WRITE); // установка месяца

2d2: 8c e0 ldi r24, 0x0C ; 12

2d4: 61 e0 ldi r22, 0x01 ; 1

2d6: 47 e8 ldi r20, 0x87 ; 135

2d8: 25 e8 ldi r18, 0x85 ; 133

2da: a3 df rcall.-186 ; 0x222 <settings_data>

settings_data(99, 0, 0x8A, YEAR_WRITE); // установка года

2dc: 83 e6 ldi r24, 0x63 ; 99

2de: 60 e0 ldi r22, 0x00 ; 0

2e0: 4a e8 ldi r20, 0x8A ; 138

2e2: 26 e8 ldi r18, 0x86 ; 134

2e4: 9e df rcall.-196 ; 0x222 <settings_data>

settings_data(23, 0, 0xC4, HOURS_WRITE); // установка часов

2e6: 87 e1 ldi r24, 0x17 ; 23

2e8: 60 e0 ldi r22, 0x00 ; 0

2ea: 44 ec ldi r20, 0xC4 ; 196

2ec: 22 e8 ldi r18, 0x82 ; 130

2ee: 99 df rcall.-206 ; 0x222 <settings_data>

settings_data(59, 0, 0xC7, MINUTES_WRITE); // установка минут

2f0: 8b e3 ldi r24, 0x3B ; 59

2f2: 60 e0 ldi r22, 0x00 ; 0

2f4: 47 ec ldi r20, 0xC7 ; 199

2f6: 21 e8 ldi r18, 0x81 ; 129

2f8: 94 df rcall.-216 ; 0x222 <settings_data>

settings_data(59, 0, 0xCA, SECONDS_WRITE); // установка секунд

2fa: 8b e3 ldi r24, 0x3B ; 59

2fc: 60 e0 ldi r22, 0x00 ; 0

2fe: 4a ec ldi r20, 0xCA ; 202

300: 20 e8 ldi r18, 0x80 ; 128

302: 8f df rcall.-226 ; 0x222 <settings_data>

rtc_write_byte(CONTROL_REG, 0x0); // запуск внутреннего генератора

304: 8f e8 ldi r24, 0x8F ; 143

306: 60 e0 ldi r22, 0x00 ; 0

308: ca de rcall.-620 ; 0x9e <rtc_write_byte>

}

30a:ret

0000030c <main>:

void display_write_byte(uint8_t reg, uint8_t bit, uint8_t display_data); // функция записи байта в дисплей

void display_write_strong(uint8_t display_data[], uint8_t size); // функция записи строки в дисплей

void display_write_time(void); // функция записи времени и даты в дисплей

void display_write_bcd(uint8_t display_data); // функция разделения числа BCD

int main(void)

{

30c: cf 93 push r28

30e: df 93 push r29

// настройка GPIO

DDRD=0x38; // настройка линий порта D

310: 88 e3 ldi r24, 0x38 ; 56

312: 81 bb out 0x11, r24 ; 17

DDRB=0xFE; // настройка линий порта B

314: 8e ef ldi r24, 0xFE ; 254

316: 87 bb out 0x17, r24 ; 23

PORTD=0x7; // настройка подтягивающих резисторов линий порта D

318: 87 e0 ldi r24, 0x07 ; 7

31a: 82 bb out 0x12, r24 ; 18

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7