Обявления |
---|
Для полноценной работы рекомендуется пройти регистрацию. Рекламные сообщения будут удаляться вместе с пользователем. Что есть реклама - буду решать я. |
nicron писал(а):ДДо включения индикаора питание с 15 до 8-10 В падает, на мк ~3,6 В, потом снова 15 и на мк 5В.
nicron писал(а):Не могу понять, как на 11 (ISP) входе мк может установиться низкий логический уровень, если туда постоянно подается +5 В через резисторную сборку DR1?
max64rus писал(а):Огромное спасибо Fram_err за подсказку по поводу строчки длительности индикации. Попробовал с начало в протеусе увеличил до десяти и по осциллограммам получил то чего хотел ну за исключением что один импульс на четвертую цифру мне не нужен так как использую только три.
;вывод на индикатор
DISP: wdr ;
in r1, SREG ;
push r16 ;
push r17 ;
push r18 ;
push r19 ;
push r20 ;
push r21 ;
push r26 ;
push r27 ;
lds r18, 0x0068 ;счетчик АЦП
tst r18 ; Проверить счетчик
breq d1 ; если 0 перейти на d1
dec r18 ; иначе -1
sts 0x0068, r18 ;и запись в счетчик
d1: lds r18, 0x0069 ;счетчик тиков 8.1 мс
tst r18 ;
breq d2 ;
dec r18 ;
sts 0x0069, r18 ;
d2: lds r18, 0x006a ;счетчик тиков
clc ;
cpi r18, 0x3e ;Сравнить c константой
brsh d3 ;больше или равно 61
inc r18 ;меньше 61
sts 0x006a, r18 ;счетчик тиков
ser r18 ; установить все биты регистра
sts 0x0060, r18 ;установка маски
rjmp d4 ;
d3: clc ;больше 61
cpi r18, 0x7a ;
brsh d8 ;больше или равно 122
inc r18 ;меньше 122
sts 0x006a, r18 ;счетчик тиков
clr r18 ;
sts 0x0060, r18 ;сброс маски
rjmp d4 ;
d8: clr r18 ;больше 122
sts 0x006a, r18 ;сброс счетчика
d4: ldi r16, 0x04 ;кол-во индикаторов
lds r17, 0x0080 ;счетчик индикаторов
tst r17 ;
brne d11 ;
ldi r17, 0x01 ;первый индикатор
d11: lsl r17 ;следующий индикатор Логически сдвинуть влево
cpi r17, 0x10;
brlo d10 ; меньше 00010000
ldi r17, 0x01 ;первый индикатор
d10: sts 0x0080, r17 ;
clr r27 ;
ldi r26, 0x61 ;начальный адрес ОЗУ индикатора
d7: in r18, PORTD ;
andi r18, 0xf0 ;
or r18, r17 ;выделение номера индикатора
out PORTD, r18 ;включение индикатора
ld r19, X+ ;загрузка семисегментного кода
lds r20, 0x0067 ;маска индикаторов
or r19, r20 ;
out PORTB, r19 ;включение сегментов
pop r27 ;
pop r26 ;
pop r21 ;
pop r20 ;
pop r19 ;
pop r18 ;
pop r17 ;
pop r16 ;
out SREG, r1 ;
reti
max64rus писал(а): Мерцания видны не вооруженным взглядом плюс ко всему при инициализации загораются все восьемерки а при работе на всех индикаторах одна и таже цифра из какого именно разряда не понятно. тоесть 111, 222, 333, 444 .... ну и т д как то так.
;вывод на индикатор
DISP: wdr ;
in r1, SREG ;
push r16 ;
push r17 ;
push r18 ;
push r19 ;
push r20 ;
push r21 ;
push r26 ;
push r27 ;
lds r18, 0x0068 ;счетчик АЦП
tst r18 ; Проверить счетчик
breq d1 ; если 0 перейти на d1
dec r18 ; иначе -1
sts 0x0068, r18 ;и запись в счетчик
d1: lds r18, 0x0069 ;счетчик тиков 8.1 мс
tst r18 ;
breq d2 ;
dec r18 ;
sts 0x0069, r18 ;
d2: lds r18, 0x006a ;счетчик тиков
clc ;
cpi r18, 0x3e ;Сравнить c константой
brsh d3 ;больше или равно 61
inc r18 ;меньше 61
sts 0x006a, r18 ;счетчик тиков
ser r18 ; установить все биты регистра
sts 0x0060, r18 ;установка маски
rjmp d4 ;
d3: clc ;больше 61
cpi r18, 0x7a ;
brsh d8 ;больше или равно 122
inc r18 ;меньше 122
sts 0x006a, r18 ;счетчик тиков
clr r18 ;
sts 0x0060, r18 ;сброс маски
rjmp d4 ;
d8: clr r18 ;больше 122
sts 0x006a, r18 ;сброс счетчика
d4: ldi r16, 0x04 ;кол-во индикаторов
lds r17, 0x0080 ;счетчик текущего индикатора (0-3)
inc r17 ; увеличиваем на 1
cpi r17,0x03 ; сравниваем с 4
brlo d10 ; если меньше - записываем в память
clr r17 ; если 4 - присваиваем 0
d10: sts 0x0080, r17 ;
clr r27 ; Регистр косвенной адресации X=R27:R26
ldi r26, 0x61 ;начальный адрес ОЗУ индикатора
add r26, r17 ;
mov r18, r17 ; Копировать r17 в r18
ldi r17,0x01 ;
d11: tst r18 ;
breq d7 ;
lsl r17 ;следующий индикатор Логически сдвинуть влево
dec r18 ;
rjmp d11 ;
;
d7: in r18, PORTD ;
andi r18, 0xf0 ;
or r18, r17 ;выделение номера индикатора
out PORTD, r18 ;включение индикатора
ld r19, X ;загрузка семисегментного кода
lds r20, 0x0067 ;маска индикаторов
or r19, r20 ;
out PORTB, r19 ;включение сегментов
pop r27 ;
pop r26 ;
pop r21 ;
pop r20 ;
pop r19 ;
pop r18 ;
pop r17 ;
pop r16 ;
out SREG, r1 ;
reti ;
cpi r17,0x03 ; сравниваем с 3
Сейчас этот форум просматривают: Google [Bot] и гости: 3