FOR Bill (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Fnutik 02 июня 2004 г. 09:05

КОД ПРОГРАММЫ (СБОЙ в ATmega163)
вся программа выполняется (со всем подпрграммами) примерно за 250 мкс
прерывания по INT приходят через 1 мс

.include "m163def.inc"
.def temp = r16 ; регистр временного хранения

.equ RES =PD1 ; импульс сброса для синтезатора
.equ Fup =PD3 ; импульс апдейта для синтезатора
.equ WR =PD4 ; импульс записи в ПЛИС
.equ RD =PD5 ; импульс чтения ПЛИС
.equ V1 =PD6 ; выходы переключения фильтров синтезатора
.equ V2 =PD7 ;

.dseg
.cseg
.org 0
jmp reset ; начальная установка
jmp INT_0 ; внешнее прерывание
reti
reti
LOOP:
sei ; включение прерываний
jmp LOOP ; бесконечный цикл

reset:
cli ; выключение прерываний
ldi temp,0x04 ; иницализация стека
out SPH,temp
ldi temp,0x50
out SPL,temp
ldi temp,0x40 ; разрешение нулевого прерывания
out GIMSK,temp
ldi temp,0x02 ;нулевое прерывание будет срабатывать по падающему фронту
out MCUCR,temp
ldi temp,0x18
out WDTCR, temp ;Процедура отключения
ldi temp,0x10 ;WatchDog Timer'a
out WDTCR, temp ;

ldi temp,0xF3 ; регистр D на вывод за исключением D2 и D3
out DDRD,temp

sbi PORTD,V1 ; начальная установка фильтрующих каналов
cbi PORTD,V2

sbi PORTD,RES ;rising edge
nop
cbi PORTD,RES ;falling edge

ldi temp,0x1F ; регистр B на вывод за исключением B5,B6,B7
out DDRB,temp
ldi temp,0x00 ; регистр C на ввод
out DDRC,temp

; процедура установки внешнего Fup для синтезатора
ldi r19,0x1F ; (запись нуля в 0-ой разряд 1F)
ldi r18,0x00

ldi temp,0x14 ; запись адреса AKP=14h
out PORTB,temp ;
ldi temp,0xFF ; порт С на вывод
out DDRC,temp
out PORTC,r19 ; запоминание адреса AS[5..0] в ПЛИС
sbi PORTD,WR ; импульса WR
cbi PORTD,WR ; снятие WR

out PORTC,r18 ; данные для синтезатора на порту С

ldi temp,0x18 ; выдача импульса WR_S
out PORTB,temp ;
sbi PORTD,WR ; выдача импульса WR
cbi PORTD,WR ; снятие WR

ldi temp,0xFB ; регистр D на вывод
out DDRD,temp ; за исключ. D2

call INI_SYN ; начальная установка синтезатора
nop
call INI_UFD_1_2 ; начальная установка УФД1,УФД2
nop
call INI_ADC ;начальная установка АЦП
nop
jmp LOOP

;*********************************************************************
;* обработка прерывания от ПЛИС: чтение слова состояния,
;* считывание информации из регистров ПЛИС,
;* преобразование информации и пересылка потребителям,
;* выполняется во время строба СПА, что соответствует
;* устаневленному 9 разряду в слове состояния
;*********************************************************************
INT_0:
cli ; выключение прерываний
ldi temp,0x00 ; порт С на ввод
out DDRC,temp ;
ldi temp,0x13 ; чтение ст байта сл состояния
call READ_PLIS
mov XH,temp ; ст байт слова состояния ПЛИС
ldi temp,0x12 ; чтение мл байта сл состояния
call READ_PLIS
mov XL,temp ; мл байт слова состояния ПЛИС

; обработка прерывания по загрузке слова ВАРУ
; ВАРУ1к в разрядах 5..0 r8, ВАРУ2к в разрядах 5..0 r7
; значение кода не запоминается в УФД а хранится в промехуточных
; регистрах UFD1,2 поэтому пп РР5 должна вызываться в конце каждого
; цикла обработки прерывания

sbrs XL,0
jmp S1
ldi temp,0x01 ; адрес регистра в ПЛИС
call READ_PLIS ; значение ВАРУ 2к
mov r7,temp
ldi temp,0x00
call READ_PLIS
mov r8,temp ; значение ВАРУ 1к

; загрузка слова АРУ
S1: sbrs XL,1
jmp S2
ldi temp,0x03 ; адрес регистра в ПЛИС
call READ_PLIS ;
mov r17,temp ; значение АРУ 2к в r17
ldi temp,0x02 ; адрес регистра в ПЛИС
call READ_PLIS ;
mov r18,temp ; значение АРУ 1к в r18
call PP6
; коррекция нуля 1-го канала; старший байт в - r18, младший в - r17,
; 10 разрядов, D10=0 канал sin, D10=1 канал cos
S2: sbrs XL,2
jmp S3
ldi temp,0x05 ; адрес регистра старшего байта в ПЛИС
call READ_PLIS ; подпрограмма чтения ПЛИС, обмен через temp;
mov r18,temp ; старший байт (Kz1[10..8]) корр. нуля в r18

ldi temp,0x04 ; адрес регистра младшего байта в ПЛИС
call READ_PLIS ; подпрограмма чтения ПЛИС, обмен через temp
mov r17,temp ; младший байт (Kz1[7..0]) корр. нуля в r17
call PP11


; управление частотой гетеродина
S3:
sbrs XL,3 ; чтение кода гетеродина
jmp S4
ldi temp,0x07
call READ_PLIS ; подпрограмма чтения ПЛИС, обмен через temp
mov r23,temp
ldi temp,0x06
call READ_PLIS ; подпрограмма чтения ПЛИС, обмен через temp
mov r22,temp ; принятый код частоты в регистрах r23:r22
call PP1PP2PP3


; режим НЧ приемника
S4: sbrs XL,4
jmp S5
ldi temp,0x09
call READ_PLIS
ldi temp,0x08 ; D2=один кан/два кан, D1=ВВ/ВП, D0=нетК/Контроль
call READ_PLIS ; подпрограмма чтения ПЛИС, обмен через temp
mov r18,temp ;
ldi r19,0x01
call ADC_W ; установка режима ФИФО
lsl r18 ; D2=ВВ/ВП, D1=нетК/Контроль, D0=0
ldi r19,0x01
call B_UFD1_W ; установка режима УФД1,УФД2
call B_UFD2_W


; коррекция нуля второго канала; старший байт в - r18, младший в - r17,
; 10 разрядов, D10=0 канал sin, D10=1 канал cos
S5: sbrs XL,5
jmp S6

ldi temp,0x0B ; адрес регистра старшего байта в ПЛИС
call READ_PLIS ; подпрограмма чтения ПЛИС, обмен через temp;
mov r18,temp ; старший байт (Kz1[10..8]) корр. нуля в r18

ldi temp,0x0A ; адрес регистра младшего байта в ПЛИС
call READ_PLIS ; подпрограмма чтения ПЛИС, обмен через temp
mov r17,temp ; младший байт (Kz1[7..0]) корр. нуля в r17
call PP12


; количество СИ АЦП
S6: sbrs XL,6
jmp S7
ldi temp,0x0d ; адрес старшего байта слова в ПЛИС
call READ_PLIS
mov r23,temp
ldi temp,0x0c ; адрес младшего байта слова в ПЛИС
call READ_PLIS
mov r22,temp
call PP13 ; принятое количество СИ в регистрах r23:r22

; количество суммирований
S7: ;
sbrs XL,7
jmp S8
ldi temp,0x0f ; адрес старшего байта слова в ПЛИС
call READ_PLIS
mov r23,temp
ldi temp,0x0e ; адрес младшего байта слова в ПЛИС
call READ_PLIS
mov r22,temp
call PP14

; величина сдвига
S8: sbrs XH,0
jmp S9
ldi temp,0x11 ; адрес старшего байта слова в ПЛИС
call READ_PLIS
mov r23,temp
ldi temp,0x10
call READ_PLIS ; адрес младшего байта слова в ПЛИС
mov r22,temp
call PP15

S9: sbrs XH,1 ; переход на ожидание строба СПА
jmp S10
jmp INT_0

; загрузка ВАРУ
S10: call PP5 ; вызов пп загрузки слова ВАРУ
jmp LOOP

;***************************************************************


READ_PLIS:
; п/п чтения ПЛИС,адрес регистра ПЛИС в temp
out PORTB,temp ;
sbi PORTD,RD ;
cbi PORTD,RD
in temp,PINC ; результат чтения в temp
ret

; Загрузка ВАРУ 1 и 2 каналов, в r8 уровень постоянного Вару, в r7 код 00
PP5:
ldi r19,0x00 ; загрузка адреса регистра в УФД
ldi temp,0x1F ; регистр B на вывод за исключением B5,B6,B7
out DDRB,temp ;
ldi temp,0x15 ; запись адреса AKP=15h
out PORTB,temp ;
ldi temp,0xFF ; порт С на вывод
out DDRC,temp
out PORTC,r19 ; запоминание адреса AR[2..0]
ldi temp,0xFB ; регистр D на вывод за исключением D2
out DDRD,temp ; выдача
sbi PORTD,WR ; импульса WR
cbi PORTD,WR ; снятие WR
out PORTC,r8 ; данные для UFD1 на порту С
ret

;*****************************************************************
; Загрузка АРУ в UFD 1к и 2к. В r18 уровень 1к,в r17 уровень 2к
;*****************************************************************
PP6:
ldi r19,0x02 ; запись адреса регистра АРУ в УФД
call B_UFD1_W
mov r18,r17
call B_UFD2_W
ret

;*****************************************************************
; Коррекция нуля первого канала. Старший байт в - r18, младший в - r17,
; 10 разрядов, D10=0 канал sin, D10=1 канал cos
PP11:
call Trans_bytes;
; преобразование типа r18= Х Х Х Х A0 WR b9 b8 r17=b7 b6 b5 b4 b3 b2 b1 b0
; в r18= Х Х A0 0 b9 b8 b7 b6 r17=X X b5 b4 b3 b2 b1 b0

ldi r19,0x03 ; в r19 записали адрес регистра UFD,
mov temp,r18 ; обмен содержимого регистов r17,r18
mov r18,r17
mov r17,temp
call B_UFD1_W ; запись младшего байта
ldi r19,0x04
mov r18,r17
call W_DAC_UFD1; запись в ЦАП старшего байта
ret

;******************************************************************
; Коррекция нуля второго канала. Старший байт в - r18, младший в - r17,
; 10 разрядов, D10=0 канал sin, D10=1 канал cos
PP12:
call Trans_bytes;
; преобразование типа r18= Х Х Х Х A0 WR b9 b8 r17=b7 b6 b5 b4 b3 b2 b1 b0
; в r18= Х Х A0 0 b9 b8 b7 b6 r17=X X b5 b4 b3 b2 b1 b0

ldi r19,0x03 ; в r19 записали адрес регистра UFD,
mov temp,r18 ; обмен содержимого регистов r17,r18
mov r18,r17
mov r17,temp
call B_UFD2_W ; запись младшего байта
ldi r19,0x04
mov r18,r17
call W_DAC_UFD2; запись в ЦАП старшего байта
ret

;**********************************************************************************
;* Подпрограмма записи байта в промежуточный регистр UFD1
;* адрес регистра UFD в r19
;* данные, которые пишцтся в UFD1 - в r18
;***********************************************************************************
B_UFD1_W:

ldi temp,0x1F ; регистр B на вывод за исключением B5,B6,B7
out DDRB,temp ;
ldi temp,0x15 ; запись адреса AKP=15h
out PORTB,temp ;
ldi temp,0xFF ; порт С на вывод
out DDRC,temp
out PORTC,r19 ; запоминание адреса AR[2..0]
ldi temp,0xFB ; регистр D на вывод за исключением D2
out DDRD,temp ; выдача
sbi PORTD,WR ; импульса WR
cbi PORTD,WR ; снятие WR

out PORTC,r18 ; данные для UFD1 на порту С

ldi temp,0x1c ; выдача импульса UFD1
out PORTB,temp ;
sbi PORTD,WR ; выдача импульса WR
nop ; NOP'ы необходимы для удлиненния импульса записи
nop ; идущих в УФД на оптрон
nop
nop
cbi PORTD,WR ; снятие WR
ret

;**********************************************************************************
;* Подпрограмма записи байта в промежуточный регистр UFD2
;* адрес регистра UFD в r19
;* данные, которые пишцтся в UFD2 - в r18
;***********************************************************************************
B_UFD2_W:

ldi temp,0x1F ; регистр B на вывод за исключением B5,B6,B7
out DDRB,temp ;
ldi temp,0x15 ; запись адреса AKP=15h
out PORTB,temp ;
ldi temp,0xFF ; порт С на вывод
out DDRC,temp
out PORTC,r19 ; запоминание адреса AR[2..0]
ldi temp,0xFB ; регистр D на вывод за исключением D2
out DDRD,temp ; выдача
sbi PORTD,WR ; импульса WR
cbi PORTD,WR ; снятие WR

out PORTC,r18 ; данные для UFD1 на порту С

ldi temp,0x1d ; выдача импульса UFD2
out PORTB,temp ;
sbi PORTD,WR ; выдача импульса WR
nop ; NOP'ы необходимы для удлиненния импульса записи
nop ; идущих в УФД на оптрон
nop
nop
cbi PORTD,WR ; снятие WR
ret

;**********************************************************************************
; преобразование типа Х Х Х Х A0 WR b9 b8 b7 b6 b5 b4 b3 b2 b1 b0
; в Х Х A0 0 b9 b8 b7 b6 X X b5 b4 b3 b2 b1 b0
Trans_bytes:
mov temp,r17
andi temp,0xC0 ; операция '&' регистра temp с константой '11000000'
lsr temp ; сдвиг вправо
lsr temp ; сдвиг вправо
swap temp ; перестановка тетрад
mov r4,temp ; в r4 записали результат: 0 0 0 0 0 0 b7 b6

mov temp,r18
lsl temp ; сдвиг влево
lsl temp ; сдвиг влево
add temp,r4 ; сложение temp "Х Х A0 WR b9 b8 0 0" и r4 "0 0 0 0 0 0 b7 b6"
mov r4, temp
andi temp, 0x10
lsl temp
add temp, r4
andi temp,0xEF ; операция '&' регистра temp с константой '11101111'
mov r18,temp ; в r18 пишем результат (Kz[10..6])
ret

;**********************************************************************************
;* Подпрограмма записи в ЦАП UFD1
;* каналы sin (D5=0) cos (D5=1)
;* в r18 (D7...D0) находятся X,X,A0,WR',d9,d8,d7,d6 -старшая тетрада д-х ЦАП
;**********************************************************************************
W_DAC_UFD1:
ldi r19,0x04 ; установка адреса ст регистра ЦАП
cbr r18,0x10 ; установка импульса записи WR' в 0
call B_UFD1_W
ori r18,0x10 ; установка импульса записи WR' в 1
call B_UFD1_W
cbr r18,0x10 ; установка импульса записи WR' в 0
call B_UFD1_W
ret

;**********************************************************************************
;* Подпрограмма записи в ЦАП UFD2
;* каналы sin (D5=0) cos (D5=1)
;* в r18 (D7...D0) находятся X,X,A0,WR',d9,d8,d7,d6 -старшая тетрада д-х ЦАП
;**********************************************************************************
W_DAC_UFD2:
ldi r19,0x04 ; установка адреса ст регистра ЦАП
cbr r18,0x10 ; установка импульса записи WR' в 0
call B_UFD2_W
ori r18,0x10 ; установка импульса записи WR' в 1
call B_UFD2_W
cbr r18,0x10 ; установка импульса записи WR' в 0
call B_UFD2_W
ret

;**********************************************************************************
;* начальная установка УФД1,УФД2; режим air, АРУ = 0,
;* В каналы корр нуля sin и cos записывается значение 200
;**********************************************************************************
INI_UFD_1_2:
; канал 1
ldi r19,0x01
ldi r18,0x00
call B_UFD1_W
ldi r19,0x02
ldi r18,0x00
call B_UFD1_W
ldi r19,0x03
ldi r18,0x00
call B_UFD1_W
ldi r19,0x04 ; коррекция нуля канала sin
ldi r18,0x08
call W_DAC_UFD1
ldi r19,0x04 ; коррекция нуля канала cos
ldi r18,0x28
call W_DAC_UFD1
; канал 2
ldi r19,0x01
ldi r18,0x00
call B_UFD2_W
ldi r19,0x02
ldi r18,0x00
call B_UFD2_W
ldi r19,0x03
ldi r18,0x00
call B_UFD2_W
ldi r19,0x04 ; коррекция нуля канала sin
ldi r18,0x08
call W_DAC_UFD2
ldi r19,0x04 ; коррекция нуля канала cos
ldi r18,0x28
call W_DAC_UFD2
ret
;**********************************************************************************
;* подпрограмма начальной установки синтезатора:
;*
;**********************************************************************************

INI_SYN:
; код частоты загружаемой после сброса м/к и в ходе
; последующей инициализации синтезатора
ldi r19,0x04
ldi r18,0x19
call WR_SYN
ldi r19,0x05
ldi r18,0x99
call WR_SYN
ldi r19,0x06
ldi r18,0x99
call WR_SYN
ldi r19,0x07
ldi r18,0x99
call WR_SYN
ldi r19,0x08
ldi r18,0x99
call WR_SYN
ldi r19,0x09
ldi r18,0x99
call WR_SYN

; контрольные регистры (add 1Dh - 20h), задают режим работы синтезатора
ldi r19,0x1E
ldi r18,0x20
call WR_SYN
ldi r19,0x20
ldi r18,0x40
call WR_SYN
ret

;**********************************************************************************
;* Подпрограмма записи в синтезатор
;* адрес регистра синтезатора в r19
;* данные, которые пишцтся в синтезатор - в r18
;**********************************************************************************
WR_SYN:
ldi temp,0x1F ; регистр B на вывод за исключением B5,B6,B7
out DDRB,temp ;
ldi temp,0x14 ; запись адреса AKP=14h
out PORTB,temp ;
ldi temp,0xFF ; порт С на вывод
out DDRC,temp
out PORTC,r19 ; запоминание адреса AS[5..0] в ПЛИС
ldi temp,0xFB ; регистр D на вывод за исключением D2
out DDRD,temp ; выдача
sbi PORTD,WR ; импульса WR
cbi PORTD,WR ; снятие WR

out PORTC,r18 ; данные для синтезатора на порту С

ldi temp,0x18 ; выдача импульса WR_S
out PORTB,temp ;
sbi PORTD,WR ; выдача импульса WR
cbi PORTD,WR ; снятие WR

; формирование импульса Fup (обновление информации в контрольных регистрах)
sbi PORTD,Fup
cbi PORTD,Fup
ret
;***************************************************************************
; Управление синтезатором
;***************************************************************************
PP1PP2PP3:
call PP1
call PP2PP3
ret

;****************************************************************************
;* дешифрация и преобразование кода частоты,
;* находящегося в r23:r22
;* преобразованный 32 разрядный код в регистрах r13:r12:r11:r10
;****************************************************************************
PP1:push r1
push r2
push r16
push r17
push r18
push r19
push r20
push r21
mov r24,r22 ; запоминание кода частоты
mov r25,r23 ; для сравнения с порогом переключения фильтра
ldi r20,0x33 ; запись мл разряда нормирующего коэффициента
ldi r21,0x58 ; запись ст разряда нормирующего коэффициента
call muls16x16_32 ; умножение кода частоты на нормирующ. коэфф,
; результат (get) в регистрах r19:r18:r17:r16

ldi r20,0x99
ldi r21,0x99
ldi r22,0x99
ldi r23,0x99

sub r20,r16 ; вычитаение из 32 разрядного числа 99999999h
sbc r21,r17 ; преобразованного кода частоты
sbc r22,r18 ; результат - в регистрах r23:r22:r21:r20
sbc r23,r19 ; преобразование: x=99999999-5833*get

mov r13,r23 ; запоминание результата
mov r12,r22 ; в регистрах r13...r10
mov r11,r21 ;
mov r10,r20 ;

pop r21
pop r20
pop r19
pop r18
pop r17
pop r16
pop r2
pop r1

ret

PP2PP3:
ldi r18,0x35 ; ст байт порогового знач частоты фильтра
ldi r17,0xb6 ; мл байт порогового знач частоты фильтра
sub r24,r17 ; сравнение частоты синтезатора с порогом
sbc r25,r18 ; значением 35в6 - соответствует 84055кГц
brlt M1
cbi PORTD,V1 ; переключение фильтров синтезатора
sbi PORTD,V2
jmp M2 ;
M1: sbi PORTD,V1 ; переключение фильтров синтезатора
cbi PORTD,V2 ;
M2: ldi temp,0x01
mov r14,temp
ldi temp,0x99
mov r9,temp
mov r8,temp
; сдвиг вправо 48 разрядного числа на тетраду
; в результате в регистрах r13:r12:r11:r10:r9:r8
; находится код управления синтезатором
ror r14
ror r13
ror r12
ror r11
ror r10
ror r9
ror r8
ror r14
ror r13
ror r12
ror r11
ror r10
ror r9
ror r8
ror r14
ror r13
ror r12
ror r11
ror r10
ror r9
ror r8
ror r14
ror r13
ror r12
ror r11
ror r10
ror r9
ror r8
; пересылка кода управления синтезатором
ldi temp,0x04
mov r19,temp
mov r18,r13
call WR_SYN
ldi temp,0x05
mov r19,temp
mov r18,r12
call WR_SYN
ldi temp,0x06
mov r19,temp
mov r18,r11
call WR_SYN
ldi temp,0x07
mov r19,temp
mov r18,r10
call WR_SYN
ldi temp,0x08
mov r19,temp
mov r18,r9
call WR_SYN
ldi temp,0x09
mov r19,temp
mov r18,r8
call WR_SYN

; инициализация записанного кода выдачей сигнала up_clk
ldi temp,0xFB ; регистр D на вывод
out DDRD,temp ; за исключением D2

sbi PORTD,Fup ; выдача Fup
cbi PORTD,Fup ; снятие Fup
ret

;**********************************************************************************
;*
;* FUNCTION
;* muls16x16_32
;* DECRIPTION
;* Signed multiply of two 16bits numbers with 32bits result.
;* USAGE
;* r19:r18:r17:r16 = r23:r22 * r21:r20
;* STATISTICS
;* Cycles : 19 + ret
;* Words : 15 + ret
;* Register usage: r0 to r2 and r16 to r23 (11 registers)
;* NOTE
;* The routine is non-destructive to the operands.
;*
;**********************************************************************************

muls16x16_32:
clr r2
muls r23, r21 ; (signed)ah * (signed)bh
movw r19:r18, r1:r0
mul r22, r20 ; al * bl
movw r17:r16, r1:r0
mulsu r23, r20 ; (signed)ah * bl
sbc r19, r2
add r17, r0
adc r18, r1
adc r19, r2
mulsu r21, r22 ; (signed)bh * al
sbc r19, r2
add r17, r0
adc r18, r1
adc r19, r2
ret

;**********************************************************************************
;* начальная установка АЦП
;*
;**********************************************************************************
INI_ADC:
ldi r19,0x01 ; режим
ldi r18,0x03
call ADC_W
ldi r19,0x04 ; количество СИ (мл. б.)
ldi r18,0x03
call ADC_W
ldi r19,0x05 ; количество СИ (ст. б.)
ldi r18,0x00
call ADC_W
ldi r19,0x06 ; количество суммирований
ldi r18,0x00
call ADC_W
ldi r19,0x07 ; величина сдвига
ldi r18,0x08
call ADC_W
ret

;**********************************************************************************
;* Подпрограмма записи в АЦП
;* адрес регистра АЦП в r19
;* данные, которые пишцтся в АЦП - в r18
;**********************************************************************************
ADC_W:
ldi temp,0x1F ; регистр B на вывод за исключением B5,B6,B7
out DDRB,temp ;
ldi temp,0x14 ; запись адреса AKP=14h
out PORTB,temp ;
ldi temp,0xFF ; порт С на вывод
out DDRC,temp
out PORTC,r19 ; запоминание адреса Aconv[3..0] в ПЛИС
ldi temp,0xFB ; регистр D на вывод за исключением D2
out DDRD,temp ; выдача
sbi PORTD,WR ; импульса WR
cbi PORTD,WR ; снятие WR

out PORTC,r18 ; данные для АЦП на порту С

ldi temp,0x1B ; выдача импульса WR_AD
out PORTB,temp ;
sbi PORTD,WR ; выдача импульса WR
cbi PORTD,WR ; снятие WR
ret

;*************************************************************
PP13: ; количество СИ АЦП
ldi r19,0x05
mov r18,r23 ; пересылка старшего байта
call ADC_W
ldi r19,0x04
mov r18,r22 ; пересылка младшего байта
call ADC_W
ret
PP14: ; количество суммирований
ldi r19,0x06
mov r18,r22 ; пересылка младшего байта
call ADC_W
ret
PP15: ; величина сдвига
ldi r19,0x07
mov r18,r22 ; пересылка младшего байта
call ADC_W
ret
;**********************************************************************************

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru