контроллер атмега16а с ножек PB0-PB3 сигнал идет на драйвер L293e.PB6 PB7 подключены светодиоды для индикации режима работы (шаг\полушаг) PD5 переключатель режимов.сейчас у меня оба светодиода горят в раз независимо от положения переключателя
.include"m16def.inc"
rjmp start
.def tmp=R16
.def counter=R17
.def nulreg=R19
.org OC1Aaddr
rjmp Obrabot
.org $30
start:
ldi tmp,High(Ramend)
out SPH,tmp
ldi tmp,Low(Ramend)
out SPL,tmp
ldi tmp,0b11001111
out DDRB,tmp
ldi tmp,~(1<<PD5)
out DDRD,tmp
ldi tmp,(1<<5)
out PORTD,tmp
ldi tmp,(1<<WGM12)|(1<<CS11)|(1<<CS10)
out TCCR1B,tmp
ldi tmp,High(625)
out OCR1AH,tmp
ldi tmp,Low(625)
out OCR1AL,tmp
ldi tmp,(1<<OCIE1A)
out TIMSK,tmp
sei
ldi counter,0
end:
rjmp end
Obrabot:
cpi counter,8
brne Rezhim
ldi counter,0
Rezhim:
sbic PIND,5
Rcall Half_step
sbis PIND,5
Rcall Full_step
reti
Half_step:
ldi ZH,High(Table2)
ldi ZL,Low(Table2)
add ZL,counter
adc ZH,nulreg
lsl ZL
rol ZH
lpm tmp,Z
out PORTB,tmp
inc counter
reti
Full_step:
ldi ZH,High(Table1)
ldi ZL,Low(Table1)
add ZL,counter
adc ZH,nulreg
lsl ZL
rol ZH
lpm tmp,Z
out PORTB,tmp
inc counter
reti
.org $300
Table1:
.dw 0b10001000
.dw 0b10000100
.dw 0b10000010
.dw 0b10000001
.dw 0b10001000
.dw 0b10000100
.dw 0b10000010
.dw 0b10000001
Table2:
.dw 0b01001000
.dw 0b01001100
.dw 0b01000100
.dw 0b01000110
.dw 0b01000010
.dw 0b01000011
.dw 0b01000001
.dw 0b01001001


