Нужен был девайс который по нажатию одной кнопочки последовательно переключает 3 светодиода и одновременно с ними 3 мосфета.
Алгоритм такой:
1) Тыкаем кнопку - зажигается 1й светодиод и открывается 1й мосфет.
2) Тыкаем кнопку - зажигается 2й светодиод, гаснет 1й и открывается 2й мосфет (1й открыт).
3) Тыкаем кнопку - зажигается 3й светодиод, гаснет 2й и открывается 3й мосфет (1й и 2й открыты).
4) Тыкаем кнопку - всё гаснет.
Кот
Код: Выделить всё
.include "c:\avr\avrasm\appnotes\2313def.inc"
.def Temp=R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def Temp4=R20
.cseg
.org 0
ldi Temp, 0b11111110 ;присвоение константы
out DDRD,Temp ;вывод
ldi Temp, 0b11111111 ;присвоение константы
out DDRB,Temp ;вывод
ldi Temp, 0b00000000 ;присвоение константы
Begin: in Temp1,PinD ;читаем порт D
cpi Temp1,0b00000001 ;сравниваем с константой
ldi Temp3,0 ;задержка запуска после сброса
ldi Temp4,0
breq Count
rjmp Begin
Count: andi Temp,0b00000011;отсечка лишних разрядов счётчика
cpi Temp,0b00000000 ;сравниваем с константой
breq Power
cpi Temp,0b00000001 ;сравниваем с константой
breq Engine
cpi Temp,0b00000010 ;сравниваем с константой
breq Start
cpi Temp,0b00000011 ;сравниваем с константой
breq PowerOff
rjmp Begin
Power: ldi Temp2, 0b00001001 ;присвоение константы
dec Temp3
brne Power
dec Temp4
brne Power
out PortB,Temp2 ;вывод на индикацию
inc Temp ;увеличиваем значение счётчика на 1
rjmp Begin
Engine: ldi Temp2, 0b00011010 ;присвоение константы
dec Temp3
brne Engine
dec Temp4
brne Engine
out PortB,Temp2 ;вывод на индикацию
inc Temp ;увеличиваем значение счётчика на 1
rjmp Begin
Start: ldi Temp2, 0b00111100 ;присвоение константы
dec Temp3
brne Start
dec Temp4
brne Start
out PortB,Temp2 ;вывод на индикацию
inc Temp ;увеличиваем значение счётчика на 1
rjmp Begin
PowerOff: ldi Temp2, 0b00000000 ;присвоение константы
dec Temp3
brne PowerOff
dec Temp4
brne PowerOff
out PortB,Temp2 ;вывод на индикацию
inc Temp ;увеличиваем значение счётчика на 1
rjmp Begin
В протеусе работает на ура, в железе нет =(
может где то ошибка или десять
В архиве протеусовский файл и всё необходимое.
Заранее спасибо.
ЗЫ: земля на печатке подведена и 5в через резистор на резет.




