ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Господа, нужна помощь. собираю схему из обучалки бегущего огня
http://radiokot.ru/start/mcu_fpga/avr/13/ вот. но 8 каналов мне мало и я решил задействовать порт D
добавил строки
типа включил порт D
и на вывод
получилось что порты работают одинаково, что D что B один в один. но я хотел вовсе не это. я хочу чтобы огонек не повторялся а бежал циклически. мне нужно наверное что то с массивом сделать...что думаете?
http://radiokot.ru/start/mcu_fpga/avr/13/ вот. но 8 каналов мне мало и я решил задействовать порт D
добавил строки
Код: Выделить всё
inc ResCnt ;инкремент счетчика сбросов
ldi Temp,0b11111111 ;настройка портa
out DDRB,Temp
ldi Temp,0b11111111 ;настройка портa
out DDRD,Temp
ldi Temp,0b01000000 ;разрешить прерывание компаратора
out TIMSK,Temp
типа включил порт D
и на вывод
Код: Выделить всё
Init: ldi Temp1,0 ;загрузить нач. значение
rjmp SelectArray
Output: out PortB,Temp ;вывод в порт
out PortD,Temp
reti получилось что порты работают одинаково, что D что B один в один. но я хотел вовсе не это. я хочу чтобы огонек не повторялся а бежал циклически. мне нужно наверное что то с массивом сделать...что думаете?
не, ну между коллектором и эмиттером ток ох*енный
- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
Код: Выделить всё
Init: ldi Temp1,0 ;загрузить нач. значение
rjmp SelectArray
Output: out PortB,Temp ;вывод в порт
out PortD,Temp
reti
получаем вот что:
Код: Выделить всё
Init: ldi Temp1,0 ;загрузить нач. значение
rjmp SelectArray
Output: out PortB,Temp ;вывод в порт В регистр Temp
out PortD,Temp ;вывод в порт D регистр Temp
reti Вам надо чтото вроде:
Код: Выделить всё
Output: out PortB,Temp ;вывод в порт В регистр Temp
out PortD,Temp1 ;вывод в порт D регистр Temp1
reti Самое простое - загружать из массива два значения т.е. Temp и Temp1
Код: Выделить всё
ldi ZL, Low(Array*2)
ldi ZH, HIGH(Array*2)
add ZL, "сдвиг"
lpm temp, Z+
lpm temp1, Z
ret
ARRAY:
.db 0b10000000, 0
.db 0b01000000, 0
;.............................
;.............................
;.............................
;.............................
.db 0b00000001, 0
.db 0, 0b10000000 Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
компилятор ругается на строчку
Pooher, скажите, почему в массиве 8 чисел, а не 15? мы же используем 15 портов...
Код: Выделить всё
add ZL, "сдвиг" Pooher, скажите, почему в массиве 8 чисел, а не 15? мы же используем 15 портов...
не, ну между коллектором и эмиттером ток ох*енный
- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
В массиве не 8 чисел, просто строками ;....
показано, что между указанными, есть числа. Ну не писать же мне их все, я пояснил смысл.
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
хорошо, вместо слова сдвиг надо писать число? я недавно начал программировать, не смейтесь
про восемь чисел я имел ввиду что .db 0b10000000, 0 это восемь
а к примеру .db 0b100000000000000, 0 это пятнадцать. или неверно? у нас же будет задействовано все 15 портов?
про восемь чисел я имел ввиду что .db 0b10000000, 0 это восемь
а к примеру .db 0b100000000000000, 0 это пятнадцать. или неверно? у нас же будет задействовано все 15 портов?
не, ну между коллектором и эмиттером ток ох*енный
- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
0b10000000, 0 - это 0b10000000, 0b00000000, т. е. 2 байта. 1-й байт пишется в один порт, второй-во второй.
надо писать так
затем вызываем подпрограмму чтения массива, затем подпрограмму вывода в проты, после чего идёт задержка (если не заморачиваться с прерываниями) и запись другово числа в tmp.
А вообще, срочно в обучалку, и методично, по пунктам...
вместо слова сдвиг надо писать число?
надо писать так
Код: Выделить всё
ldi tmp, 2 ; ваше число(здесь 2) заисать в РОН tmp
затем вызываем подпрограмму чтения массива, затем подпрограмму вывода в проты, после чего идёт задержка (если не заморачиваться с прерываниями) и запись другово числа в tmp.
А вообще, срочно в обучалку, и методично, по пунктам...
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
товарищ Pooher уже все объяснил, что непонятного в его коде или словах? довольно простой алгоритм. как вариант, без массивов, завести два регистра, которые будут постоянно выводиться в порты, а через определенные промежутки времени в этих двух регистрах циклично сдвигается логическая единичка. как вам?
Ставим плюсы: )
плохая сигнатура
Найдена плохая сигнатура ! (Unknown FF-FF-FF),подскажите что делать,куда глядеть!