|
Помогите разобраться - переведите на си или как-то иначе растолкуйте как это работает.
;------- skip -----------
.def value = r8
.def real_value = r11
.def tbl_index = r12
.def tbl_value = r13
.def temp = r16
.def byte = r18
;------- skip -----------
Interpolate:
mov tbl_index,real_value
lsr tbl_index
lsr tbl_index
lsr tbl_index
ldi temp,0x1F
add tbl_index,temp
ee_loop:
sbic EECR,EEWE
rjmp ee_loop
out EEAR,tbl_index
sbi EECR,EERE
in value,EEDR
ldi temp,7
and temp,real_value
brne Inter2
ret
Inter2:
inc tbl_index
out EEAR,tbl_index
sbi EECR,EERE
in tbl_value,EEDR
mov temp,tbl_value
sub temp,value
clr byte
sbrc real_value,0
add byte,temp
lsl temp
sbrc real_value,1
add byte,temp
lsl temp
sbrc real_value,2
add byte,temp
asr byte
asr byte
asr byte
add value,byte
ret
;------- skip -----------
.ESEG
.org 0x1F
Calibration:
.db 4
.db 8
.db 12
.db 16
.db 20
.db 24
.db 36
.db 75
.db 82
.db 99
.db 105
.db 134
.db 152
.db 176
.db 181
.db 190
.db 192
.db 192
.db 192
.db 175
.db 165
.db 155
.db 144
.db 133
.db 122
.db 111
.db 167
E-mail: info@telesys.ru