Код: Выделить всё
;
; +-------------------------------------------------------------------------+
; | This file has been generated by The Interactive Disassembler (IDA) |
; +-------------------------------------------------------------------------+
;
; Input MD5 : 1A03D017D8A1BBA575865473C53B776B
; Input CRC32 : 53863590
; ---------------------------------------------------------------------------
; File Name : E:\user\Downloads\Test.hex
; Format : Intel Hex Object Format
; Processor : AVR [AT90S2313]
; Target assembler: AVR Assembler
; =====================
; Segment type: Pure code
.CSEG ; ROM
.org 0
rjmp __RESET ; Processor reset
.org 1
; =============== S U B R O U T I N E =====================
; External Interrupt Request 0
; public INT0_
INT0_:
reti
; End of function INT0_
.org 2
; =============== S U B R O U T I N E =====================
; External Interrupt Request 1
; public INT1_
INT1_:
reti
; End of function INT1_
.org 3
; =============== S U B R O U T I N E =====================
; Timer/Counter1 Capture Event
; public TIMER1_CAPT1
TIMER1_CAPT1:
reti
; End of function TIMER1_CAPT1
.org 4
; =============== S U B R O U T I N E =====================
; Timer/Counter1 Compare Match
; public TIMER1_COMP1
TIMER1_COMP1:
reti
; End of function TIMER1_COMP1
.org 5
; =============== S U B R O U T I N E =====================
; Timer/Counter1 Overflow
; public TIMER1_OVF1
TIMER1_OVF1:
reti
; End of function TIMER1_OVF1
; ---------------------------------------------------------------------------
.org 6
rjmp TIMER0_OVF0 ; Timer/Counter0 Overflow
.org 7
; =============== S U B R O U T I N E =====================
; UART, RX Complete
; public UART_RX
UART_RX:
reti
; End of function UART_RX
.org 8
; =============== S U B R O U T I N E =====================
; UART Data Register Empty
; public UART_UDRE
UART_UDRE:
reti
; End of function UART_UDRE
.org 9
; =============== S U B R O U T I N E =====================
; UART, TX Complete
; public UART_TX
UART_TX:
reti
; End of function UART_TX
.org 0xA
; =============== S U B R O U T I N E =====================
; Analog Comparator
; public ANA_COMP
ANA_COMP:
reti
; End of function ANA_COMP
; ---------------------------------------------------------------------------
reti
; ---------------------------------------------------------------------------
reti
; ---------------------------------------------------------------------------
reti
; ---------------------------------------------------------------------------
reti
; ---------------------------------------------------------------------------
reti
; ---------------------------------------------------------------------------
reti
; ---------------------------------------------------------------------------
reti
; ---------------------------------------------------------------------------
reti
; ---------------------------------------------------------------------------
.dw 0xF9C0 ; Ащ
.dw 0xB0A4, 0x9299, 0xF882, 0x9080
; =============== S U B R O U T I N E =====================
; Timer/Counter0 Overflow
; public TIMER0_OVF0
TIMER0_OVF0: ; CODE XREF: ROM:0006j
push r16
push r17
in r16, SREG ; Status Register
push r16
rcall sub_92
ldi r17, 0
cp r12, r17
breq loc_21
lsr r11
loc_21: ; CODE XREF: TIMER0_OVF0+7j
inc r12
ldi r17, 5
cp r12, r17
brcs loc_29
ldi r16, 1
mov r12, r16
ldi r16, 8
mov r11, r16
loc_29: ; CODE XREF: TIMER0_OVF0+Cj
push r11
ldi r17, 1
cp r12, r17
brne loc_2F
lds r11, unk_10006A
loc_2F: ; CODE XREF: TIMER0_OVF0+14j
ldi r17, 2
cp r12, r17
brne loc_34
lds r11, unk_10006B
loc_34: ; CODE XREF: TIMER0_OVF0+19j
ldi r17, 3
cp r12, r17
brne loc_39
lds r11, unk_10006C
loc_39: ; CODE XREF: TIMER0_OVF0+1Ej
ldi r17, 4
cp r12, r17
brne loc_3E
lds r11, unk_10006D
loc_3E: ; CODE XREF: TIMER0_OVF0+23j
ldi r28, 0x60 ; '`'
ldi r29, 0
add r28, r11
ldi r17, 0
adc r29, r17
ld r11, Y
rcall sub_5B
pop r11
rcall sub_97
pop r16
out SREG, r16 ; Status Register
pop r17
pop r16
reti
; End of function TIMER0_OVF0
; =============== S U B R O U T I N E =====================
sub_4C: ; CODE XREF: __RESET+14p
ldi r30, 0x26 ; '&'
ldi r31, 0
ldi r28, 0x60 ; '`'
ldi r29, 0
ldi r18, 0xA
loc_51: ; CODE XREF: sub_4C+8j
lpm r16, Z+
st Y+, r16
dec r18
brne loc_51
ret
; End of function sub_4C
; =============== S U B R O U T I N E =====================
sub_56: ; CODE XREF: __RESET+2p
ser r16
out DDRB, r16 ; Port B Data Direction Register
ldi r16, 0xF
out DDRD, r16 ; Port D Data Direction Register
ret
; End of function sub_56
; =============== S U B R O U T I N E =====================
sub_5B: ; CODE XREF: TIMER0_OVF0+2Cp
ldi r18, 8
loc_5C: ; CODE XREF: sub_5B+35j
lsr r11
brcc loc_77
cpi r18, 8
brne loc_61
sbi PORTD, PORTD0 ; Port D Data Register
loc_61: ; CODE XREF: sub_5B+4j
cpi r18, 7
brne loc_64
sbi PORTD, PORTD1 ; Port D Data Register
loc_64: ; CODE XREF: sub_5B+7j
cpi r18, 6
brne loc_67
sbi PORTB, PORTB3 ; Port B Data Register
loc_67: ; CODE XREF: sub_5B+Aj
cpi r18, 5
brne loc_6A
sbi PORTD, PORTD3 ; Port D Data Register
loc_6A: ; CODE XREF: sub_5B+Dj
cpi r18, 4
brne loc_6D
sbi PORTB, PORTB1 ; Port B Data Register
loc_6D: ; CODE XREF: sub_5B+10j
cpi r18, 3
brne loc_70
sbi PORTB, PORTB5 ; Port B Data Register
loc_70: ; CODE XREF: sub_5B+13j
cpi r18, 2
brne loc_73
sbi PORTB, PORTB6 ; Port B Data Register
loc_73: ; CODE XREF: sub_5B+16j
cpi r18, 1
brne loc_76
sbi PORTD, PORTD6 ; Port D Data Register
loc_76: ; CODE XREF: sub_5B+19j
rjmp loc_8F
; ---------------------------------------------------------------------------
loc_77: ; CODE XREF: sub_5B+2j
cpi r18, 8
brne loc_7A
cbi PORTD, PORTD0 ; Port D Data Register
loc_7A: ; CODE XREF: sub_5B+1Dj
cpi r18, 7
brne loc_7D
cbi PORTD, PORTD1 ; Port D Data Register
loc_7D: ; CODE XREF: sub_5B+20j
cpi r18, 6
brne loc_80
cbi PORTB, PORTB3 ; Port B Data Register
loc_80: ; CODE XREF: sub_5B+23j
cpi r18, 5
brne loc_83
cbi PORTD, PORTD3 ; Port D Data Register
loc_83: ; CODE XREF: sub_5B+26j
cpi r18, 4
brne loc_86
cbi PORTB, PORTB1 ; Port B Data Register
loc_86: ; CODE XREF: sub_5B+29j
cpi r18, 3
brne loc_89
cbi PORTB, PORTB5 ; Port B Data Register
loc_89: ; CODE XREF: sub_5B+2Cj
cpi r18, 2
brne loc_8C
cbi PORTB, PORTB6 ; Port B Data Register
loc_8C: ; CODE XREF: sub_5B+2Fj
cpi r18, 1
brne loc_8F
cbi PORTD, PORTD6 ; Port D Data Register
loc_8F: ; CODE XREF: sub_5B:loc_76j sub_5B+32j
dec r18
brne loc_5C
ret
; End of function sub_5B
; =============== S U B R O U T I N E =====================
sub_92: ; CODE XREF: TIMER0_OVF0+4p
cbi PORTB, PORTB2 ; Port B Data Register
cbi PORTB, PORTB0 ; Port B Data Register
cbi PORTB, PORTB4 ; Port B Data Register
cbi PORTB, PORTB7 ; Port B Data Register
ret
; End of function sub_92
; =============== S U B R O U T I N E =====================
sub_97: ; CODE XREF: TIMER0_OVF0+2Ep
ldi r17, 8
cp r11, r17
brne loc_9B
sbi PORTB, PORTB2 ; Port B Data Register
loc_9B: ; CODE XREF: sub_97+2j
ldi r17, 4
cp r11, r17
brne loc_9F
sbi PORTB, PORTB0 ; Port B Data Register
loc_9F: ; CODE XREF: sub_97+6j
ldi r17, 2
cp r11, r17
brne loc_A3
sbi PORTB, PORTB4 ; Port B Data Register
loc_A3: ; CODE XREF: sub_97+Aj
ldi r17, 1
cp r11, r17
brne locret_A7
sbi PORTB, PORTB7 ; Port B Data Register
locret_A7: ; CODE XREF: sub_97+Ej
ret
; End of function sub_97
; =============== S U B R O U T I N E =====================
; Processor reset
; public __RESET
__RESET: ; CODE XREF: ROM:0000j
ldi r16, 0xDF ; 'Я'
out SPL, r16 ; Stack Pointer
rcall sub_56
ldi r30, 0x60 ; '`'
ldi r31, 0
loc_AD: ; CODE XREF: __RESET+Aj
ldi r16, 0
st Z+, r16
cpi r30, 0xE0 ; 'а'
ldi r17, 0
cpc r31, r17
brne loc_AD
ldi r30, 0x1E
ldi r31, 0
loc_B5: ; CODE XREF: __RESET+Fj
dec r30
st Z, r16
brne loc_B5
ldi r16, 3
out TCCR0, r16 ; Timer/Counter0 Control Register
ldi r16, 2
out TIMSK, r16 ; Timer/Counter Interrupt Mask Register
rcall sub_4C
ldi r16, 8
mov r11, r16
sei
ldi r16, 1
sts unk_10006A, r16
ldi r16, 2
sts unk_10006B, r16
ldi r16, 3
sts unk_10006C, r16
ldi r16, 4
sts unk_10006D, r16
loc_CC: ; CODE XREF: __RESET+25j
nop
rjmp loc_CC
; End of function __RESET
; ---------------------------------------------------------------------------