Клеммы, реле, разъемы Degson со склада в России

Программа для анализа работы АЦП на AVR Atmel

Новичок
 
Регистрация: 10.05.2009
Сообщений: 1
Репутация: 10
 
11.05.2009 20:49 #1
программа для анализа работы АЦП на avr Atmel. нужно организовать вычитание двух потенциометров! ADC6-ADC7! вычитание происходит все горит, когда один в макс. а другой в мин. показвает максимальное значение 10! а надо чтобы показвал от -FF ДО FF! ПОМОГИТЕ НАЙТИ ОШИБКУ ИЛЬ ВАШ ВАРИАНТ......... СПАСИБО ЗАРАНЕЕ
разрядность входных сигналов: 10
система счисления: 16


.include "m8535def.inc"
;Назначим новые имена для регистров
.def count=r20 ;Счетчик, позиция
.def takt=r21
.def tmp=r19 ;Регистр буферный
.def znak=r29 ;Знак числа на вывод

.org $0 ;Начальный адрес
rjmp reset
.org $0E
rjmp in_ADC
.cseg ;Начало сегмента кодов (сама программа)
.org $200

;Вектор прерывания от АЦП
;Устанавливаем указатель стека на конец RAM
reset: ldi r16, low(RAMEND)
ldi r17, high(RAMEND)
out spl, r16
out sph, r17
;Конфигурация входов выходов
ldi r16, 0xFE ;0 бит порта А
out DDRB,r16 ;на вход
ldi r16, 0x00 ; все биты порта А
out DDRA, r16 ;устанавливаем на ввод
ldi r16, 0xFF
out DDRC, r16 ;Порт D и порт С устанавливаем
out DDRD, r16 ;на вывод
; out PORTA, r16 ;Подтягивающие резисторы
out PORTB,r16

ldi takt, 1 ;Начальное значение такта
ldi count,1 ;Начальное значение счетчика (позиции)

clr r22
clr r23
clr r25 ;Готовим для вывода знака

;Инициализация АЦП
ldi r16, 0x26
out ADMUX, r16 ;Выравнивание влево, канал 6
ldi r16, 0xEF ;Разрешение работы, циклическая работа,
out ADCSRA, r16 ;разрешение прерывания, КД=128

sei ;Разрешение прерываний

main:
nop
rjmp main ;Ожидание прерывания
;Подрограмма прерывания от АЦП



in_ADC:
in r27,SREG

kanal1:
cpi takt ,2
breq kanal2
ldi r16, 0x26
out ADMUX, r16 ;Выравнивание влево, канал 6
in r16, ADCL ;Младший байт в r16
in r17, ADCH ;Старший байт в r17


;lsr r17

;lsr r17
;формируем число в r17
;lsr r17

andi r17,0xFF
inc takt

rjmp super_prer

kanal2:
ldi r16, 0x27
out ADMUX, r16 ;Выравнивание влево, канал 7
in r22, ADCL ;Младший байт в r22
in r23, ADCH ;Старший байт в r23


;lsr r23

;lsr r23 ;формируем число в r23

;lsr r23

andi takt, 1 ;На первый такт

andi r23, 0xFF

rcall raznost

clr r16

rcall preobr_koda
rcall indic
rjmp super_prer

super_prer:

ldi r16, 0xEF ;Разрешение работы, циклическая работа,
out ADCSRA, r16 ;разрешение прерывания, КД=128
out SREG,r27
reti

raznost:

sbc r17, r23
brlo minus ;разность чисел
rjmp plus

preobr_koda:

subi r17, 0xFF
brlo preobr_chislo
inc r16
rjmp preobr_koda

preobr_chislo:

ldi r18, 0xFF
add r17, r18
swap r16
add r16, r17
ret


plus:
ldi znak,0x00 ;код темноты(плюс)
rjmp rezultat

minus:
ldi znak,0x40 ;код минуса
neg r17
rjmp rezultat



rezultat:
ret

indic:
cpi count, 2 ;Если позиция 2, то
breq cifir_2 ;на выдачу старшей цифры
cpi count, 3 ;Если позиция 3, то
breq cifir_3 ;на выдачу знака числа

cifir_1:
mov tmp, r16 ;Иначе выделяем младшую цифру
andi tmp, 0x0F
inc count
ldi r26,0x01
rjmp konec_rasch ;Переходим на конец выделения цифры

cifir_2:
mov tmp, r16 ;Выделяем старшую цифру
swap tmp
andi tmp, 0x0F
inc count
ldi r26,0x02
rjmp konec_rasch ;Переходим на конец выделения цифры

cifir_3:
mov tmp,znak
ldi count,1
ldi r26,0x04
out PORTD, r26 ;Выдача кода позиции
out PORTC, tmp
ret
konec_rasch:
ldi r31,$01
ldi r30,$00 ;чтение
add r30, tmp
clr tmp
lpm
mov tmp,r0

out PORTD, r26 ;Выдача кода позиции
out PORTC, tmp
ret ;Иначе сразу возврат из п/п прерывания
.org $80 ;запись в PZU
.db $3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F,$77,$7C,$3 9,$5E,$79,$71
Оценка
Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO.
Ответ
Похожие темы
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Скидки, кэшбэк и бесплатная доставка от ТМ Электроникс
Часовой пояс GMT +3, время: 08:37.
Обратная связь РадиоЛоцман Вверх