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


