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

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

<__bad_interrupt>:

48: db cf rjmp.-74 ; 0x0 <__vectors>

0000004a <rtc_write>:

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

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

}

// rtc_write - функция записи байта в RTC

void rtc_write(uint8_t rtc_data)

{

4a: 90 e0 ldi r25, 0x00 ; 0

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

for(i=0; i<8; ++i)

{

buffer=rtc_data; // копирование данных

buffer=buffer & 0x1; // выделение младшего бита

if (buffer==0x1)

4c: 80 ff sbrs r24, 0

4e: 02 c0 rjmp.+4 ; 0x54 <rtc_write+0xa>

{

PORTD=PORTD | (1<<DATA); // установка DATA

50: 93 9a sbi 0x12, 3 ; 18

52: 01 c0 rjmp.+2 ; 0x56 <rtc_write+0xc>

}

else

{

PORTD=PORTD & (~(1<<DATA)); // сброс DATA

54:cbi 0x12, 3 ; 18

}

PORTD=PORTD | (1<<CLK); // установка CLK

56: 94 9a sbi 0x12, 4 ; 18

PORTD=PORTD & (~(1<<CLK)); // сброс CLK

58:cbi 0x12, 4 ; 18

// rtc_write - функция записи байта в RTC

void rtc_write(uint8_t rtc_data)

{

uint8_t i; // промежуточный счетчик бит

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

for(i=0; i<8; ++i)

5a: 9f 5f subi r25, 0xFF ; 255

5c:cpi r25, 0x08 ; 8

5e: 11 f0 breq.+4 ; 0x64 <rtc_write+0x1a>

{

PORTD=PORTD & (~(1<<DATA)); // сброс DATA

}

PORTD=PORTD | (1<<CLK); // установка CLK

PORTD=PORTD & (~(1<<CLK)); // сброс CLK

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

60:lsr r24

62: f4 cf rjmp.-24 ; 0x4c <rtc_write+0x2>

64:ret

<rtc_read>:

{

uint8_t i; // промежуточный счетчик бит

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

uint8_t rtc_data; // данные

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

PORTD=PORTD & (~(1<<DATA)); // настройка подтягивающего резистора линии DATA порта D

66:cbi 0x12, 3 ; 18

DDRD=DDRD & (~(1<<DATA)); // настройка линии DATA порта D

68: 8b 98 cbi 0x11, 3 ; 17

6a: 40 e0 ldi r20, 0x00 ; 0

6c: 20 e0 ldi r18, 0x00 ; 0

6e: 30 e0 ldi r19, 0x00 ; 0

PORTD=PORTD | (1<<CLK); // установка CLK

PORTD=PORTD & (~(1<<CLK)); // сброс CLK

buffer=PIND & (1<<DATA); // чтение данных

if (buffer!=0)

{

rtc_data=rtc_data | (1<<i); // установка бита

70: 61 e0 ldi r22, 0x01 ; 1

72: 70 e0 ldi r23, 0x00 ; 0

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

PORTD=PORTD & (~(1<<DATA)); // настройка подтягивающего резистора линии DATA порта D

DDRD=DDRD & (~(1<<DATA)); // настройка линии DATA порта D

for(i=0; i<8; ++i)

{

PORTD=PORTD | (1<<CLK); // установка CLK

74: 94 9a sbi 0x12, 4 ; 18

PORTD=PORTD & (~(1<<CLK)); // сброс CLK

76:cbi 0x12, 4 ; 18

buffer=PIND & (1<<DATA); // чтение данных

if (buffer!=0)

78: 83 9b sbis 0x10, 3 ; 16

7a: 08 c0 rjmp.+16 ; 0x8c <rtc_read+0x26>

{

rtc_data=rtc_data | (1<<i); // установка бита

7c: cb 01 movw r24, r22

7e: 02 2e mov r0, r18

80: 02 c0 rjmp.+4 ; 0x86 <rtc_read+0x20>

82: 88 0f add r24, r24

84: 99 1f adc r25, r25

86: 0a 94 dec r0

88: e2 f7 brpl.-8 ; 0x82 <rtc_read+0x1c>

8a: 48 2b or r20, r24

8c: 2f 5f subi r18, 0xFF ; 255

8e: 3f 4f sbci r19, 0xFF ; 255

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

uint8_t rtc_data; // данные

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

PORTD=PORTD & (~(1<<DATA)); // настройка подтягивающего резистора линии DATA порта D

DDRD=DDRD & (~(1<<DATA)); // настройка линии DATA порта D

for(i=0; i<8; ++i)

90:cpi r18, 0x08 ; 8

92:cpc r19, r1

94: 79 f7 brne.-34 ; 0x74 <rtc_read+0xe>

if (buffer!=0)

{

rtc_data=rtc_data | (1<<i); // установка бита

}

}

PORTD=PORTD & (~(1<<CS)); // сброс CS

96:cbi 0x12, 5 ; 18

DDRD=DDRD | (1<<DATA); // настройка линии DATA порта D

98: 8b 9a sbi 0x11, 3 ; 17

return rtc_data; // выход из функции

}

9a: 84 2f mov r24, r20

9c:ret

0000009e <rtc_write_byte>:

// rtc_write_byte - функция записи данных в RTC

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

// rtc_data = 0xXX -> данные

void rtc_write_byte(uint8_t address, uint8_t rtc_data)

{

9e: 1f 93 push r17

a0: 16 2f mov r17, r22

PORTD=PORTD | (1<<CS); // выбор периферийного устройства

a2: 95 9a sbi 0x12, 5 ; 18

rtc_write(address); // запись данных

a4: d2 df rcall.-92 ; 0x4a <rtc_write>

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

a6: 81 2f mov r24, r17

a8: d0 df rcall.-96 ; 0x4a <rtc_write>

PORTD=PORTD & (~((1<<DATA) | (1<<CLK) | (1<<CS))); // сброс DATA, CLK, CS

aa: 82 b3 in r24, 0x12 ; 18

ac: 87 7c andi r24, 0xC7 ; 199

ae: 82 bb out 0x12, r24 ; 18

}

b0: 1f 91 pop r17

b2:ret

000000b4 <rtc_read_byte>:

// rtc_read_byte - функция чтения данных из RTC

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

uint8_t rtc_read_byte(uint8_t address)

{

uint8_t rtc_data; // данные

PORTD=PORTD | (1<<CS); // выбор периферийного устройства

b4: 95 9a sbi 0x12, 5 ; 18

rtc_write(address); // запись данных

b6: c9 df rcall.-110 ; 0x4a <rtc_write>

rtc_data=rtc_read(); // чтение данных

b8: d6 df rcall.-84 ; 0x66 <rtc_read>

PORTD=PORTD & (~((1<<DATA) | (1<<CLK) | (1<<CS))); // сброс DATA, CLK, CS

ba: 92 b3 in r25, 0x12 ; 18

bc: 97 7c andi r25, 0xC7 ; 199

be: 92 bb out 0x12, r25 ; 18

return rtc_data; // выход из функции

}

c0:ret

000000c2 <display_write_byte>:

// display_write_byte - функция записи байта в дисплей

// reg = 0/1 -> команда/данные

// bit = 0/1 -> разрядность 4/8 бит

// display_data = 0xXX -> данные

void display_write_byte(uint8_t reg, uint8_t bit, uint8_t display_data)

{

c2: 98 2f mov r25, r24

c4: 84 2f mov r24, r20

c6: 80 7f andi r24, 0xF0 ; 240

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

if (bit==1)

c8:cpi r22, 0x01 ; 1

ca: 21 f4 brne.+8 ; 0xd4 <display_write_byte+0x12>

{

// 8-битный режим

display_data=(display_data & 0xF0) | (1<<E); // установка E

cc:ori r24, 0x08 ; 8

PORTB=display_data; // запись данных

ce: 88 bb out 0x18, r24 ; 24

display_data=display_data & 0xF0; // сброс E

d0: 80 7f andi r24, 0xF0 ; 240

d2: 0f c0 rjmp.+30 ; 0xf2 <__stack+0x13>

}

else

{

// 4-битный режим

buffer=display_data; // копирование данных

display_data=(display_data & 0xF0) | (reg<<RS) | (1<<E); // установка E

d4: 99 0f add r25, r25

d6: 29 2f mov r18, r25

d8:ori r18, 0x08 ; 8

da: 82 2b or r24, r18

PORTB=display_data; // запись данных

dc: 88 bb out 0x18, r24 ; 24

display_data=(display_data & 0xF0) | (reg<<RS); // сброс E

de: 80 7f andi r24, 0xF0 ; 240

e0: 89 2b or r24, r25

PORTB=display_data; // запись данных

e2: 88 bb out 0x18, r24 ; 24

display_data=buffer; // копирование данных

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

display_data=(display_data & 0xF0) | (reg<<RS) | (1<<E); // установка E

e4: 84 2f mov r24, r20

e6:swap r24

e8: 80 7f andi r24, 0xF0 ; 240

ea: 82 2b or r24, r18

PORTB=display_data; // запись данных

ec: 88 bb out 0x18, r24 ; 24

display_data=(display_data & 0xF0) | (reg<<RS); // сброс E

ee: 80 7f andi r24, 0xF0 ; 240

f0: 89 2b or r24, r25

PORTB=display_data; // запись данных

f2: 88 bb out 0x18, r24 ; 24

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