Вс ноя 22, 2009 19:33:01
Вс ноя 22, 2009 20:33:40
Вс ноя 22, 2009 20:41:19
Вс ноя 22, 2009 22:16:06
Вс ноя 22, 2009 23:02:12
MaZaTroN писал(а):Сами должны меняться. И обязательно нада с МК
Вс ноя 22, 2009 23:11:13
Вс ноя 22, 2009 23:22:45
MaZaTroN писал(а):Да, забыл сказать что с общим катодом.
Спасибо! Получаеться дело осталось за прошивкой
Пн ноя 23, 2009 19:33:40
Пн ноя 23, 2009 19:46:36
MaZaTroN писал(а):Вот, блин. Оказываеться мне нужно не то, что я озвучил
Всё намного проще Нужно взять это и сделать так чтобы одновременно на всех зажигались нули, потом единицы и т.д до 9
Попробую сам разобраться, но если что, ждите назад блудного сына
Вт ноя 24, 2009 22:09:42
.include "d:\avr\avrasm\appnotes\2313def.inc"
.def Temp=R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def Temp4=R20
.dseg
Digit: .byte 4
.cseg
.org 0
reset: ldi Temp1,RamEnd ;инициализация стека
out SPL,Temp1
cli
ldi Temp,0b11111111 ;настройка портов
out ddrb,Temp
ldi Temp,0b00001111
out ddrd,Temp
ldi Temp,0
sts Digit ,Temp ;загрузка начальных сначений
IndicCycle: rcall Display ;цикл индикации
rjmp IndicCycle
Display:
;последовательный вывод на индикацию содержимого
;переменной Digit
lds Temp1,Digit ;загружаем 0-ю ячейку
ldi Temp,0b00001110 ;активируем 0-й разряд
;индикации
out PortD,Temp
rcall Decoder ;вызываем 7-сегм. декодер
out PortB,Temp1 ;выводим значение в порт
Decoder:
;преобразование двоичного числа
;в код 7-сегментного индикатора
ldi ZL,Low(DcMatrix*2) ;инициализация массива
ldi ZH,High(DcMatrix*2)
ldi Temp2,0 ;прибавление переменной
add ZL,Temp1 ;к 0-му адресу массива
adc ZH,Temp2
lpm ;загрузка значения
mov Temp1,r0
ret
DcMatrix:
;массив - таблица истинности декодера
; hgfedcba hgfedcba
.db 0b00111111,0b00000110 ;0,1
.db 0b01011011,0b01001111 ;2,3
.db 0b01100110,0b01101101 ;4,5
.db 0b01111101,0b00000111 ;6,7
.db 0b01111111,0b01101111 ;8,9
;*********************************************************
rcall display