Подскажите пожалуйста, как мне исправить программу, чтобы при нажатии кнопки 1, мотор вращался в одну сторону, при повторном нажатии напряжение переставало поступать и он останавливался сам через время. При нажатии кнопки 2 мотор должен вращаться в другую сторону, при повторном нажатии напряжение переставало поступать и он останавливался сам через время. При нажатии кнопки 3, запускался второй мотор и при повторном нажатии напряжение переставало поступать и он останавливался сам через время. Мне пожалуйста только на ассемблере.
Вот схема в Proteus:
cxem.net.rar 19,65 Кб
14 раз скачано
Вот пример моего кода:
Раздел: AVR
Вот схема в Proteus:
cxem.net.rar 19,65 Кб
14 раз скачано
Вот пример моего кода:
.cseg
.org 0
.def a=r16
.def b=r17
.def c=r18
.def d=r20
.def e=r21
.def f=r22
.def g=r23
.def h=r24
.def i=r25
.equ const1=0b00000001
.equ const2=0b00000010
.equ const3=0b00000100
.equ const4=0b00001000
.equ const5=0b00010000
.equ const6=0b00100000
.equ const7=0b01000000
.equ const8=0b10000000
ldi a,low(RAMEND)
out SPL,a
ldi a,high(RAMEND)
out SPH,a
ldi a,$00
out ddrb,a
ldi a,0b11111111
out ddrd,a
clr a
nop
rjmp reset
reset:
; проверка нажатий
sbis pinb,0
rjmp b2
rjmp clk1
b2:
sbis pinb,1
rjmp b3
rjmp clk2
b3:
sbis pinb,2
rjmp reset
rjmp clk3
;обработка нажатий
clk1:
ldi a,const1
out portd,a
clr a
nop
rjmp reset
clk2:
ldi a,0b00000010
out portd,a
clr a
nop
rjmp reset
clk3:
ldi a,0b00000100
out portd,a
clr a
nop
rjmp reset
Раздел: AVR