Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 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 |


