Одноплатник на 155-й серии — ЧПУ14.12.2024 19:00
//начинаем опрашивать UART
start:
mov buf,0
mov r2,buf
mov buf,8
mov adr,buf
mov buf,1
mov ram,buf
mov buf,10
mov r1,buf
mov a,p2
mov roma1, rx
mov roma2, rx
jbz0 //если - то переход на прием
// если +
mov roma1, start
mov roma2, start
jmp
rx:
mov a,p2
mov roma1, rx
mov roma2, rx
jbz0 //если - то ждем
// если +
start2:
mov a,p2
mov roma1, rx2
mov roma2, rx2
jbz0 //если - то переход на закончить
// если +
mov a,r1
add r1
mov roma1, up
mov roma2, up
jc //если переполнение
mov roma1, start2
mov roma2, start2
jmp
up:
mov a,r2
add r2
mov r1,buf
mov roma1, start2
mov roma2, start2
jmp
rx2:
mov a,p2
mov roma1, rx2
mov roma2, rx2
jbz0 //если - то ждем
// если +
mov buf,1
mov ram,buf
mov a,r2
mov ROMa1, Xclk
mov ROMa2, Xclk
je //если равны то переход
mov buf,3
mov ram,buf
mov a,r2
mov ROMa1, Yclk
mov ROMa2, Yclk
je //если равны то переход
mov buf,2
mov ram,buf
mov a,r2
mov ROMa1, DIRup
mov ROMa2, DIRup
je //если равны то переход
mov buf,4
mov ram,buf
mov a,r2
mov ROMa1, DIRdown
mov ROMa2, DIRdown
je //если равны то переход
mov buf,5
mov ram,buf
mov a,r2
mov ROMa1, Zdown
mov ROMa2, Zdown
je //если равны то переход
mov buf,6
mov ram,buf
mov a,r2
mov ROMa1, Zup
mov ROMa2, Zup
je //если равны то переход
//иначе ждем следующий байт
mov roma1, loop //указываем координаты для переходов на метку start
mov roma2, loop //указываем координаты для переходов на метку start
jmp //повторим
Zup:
mov buf,8 //1 в буфер
mov p1, buf //отправить в порт 1
mov buf,0
mov r1,buf
delay270:
mov buf,8
mov adr,buf
mov buf,1
mov ram,buf
mov buf,1
mov a,buf
delay27:
add a
mov roma1, vse27
mov roma2, vse27
jc //если регистр а переполнился то закончить задержку
mov roma1, delay27
mov roma2, delay27
jmp
vse27:
mov a,r1
add r1
mov roma1, vse270
mov roma2, vse270
jc //если регистр а переполнился то закончить задержку
mov roma1, delay270
mov roma2, delay270
jmp
vse270:
mov buf,0 //0 в буфер
mov p1, buf //отправить в порт 0
mov roma1, loop //указываем координаты для переходов на метку start
mov roma2, loop //указываем координаты для переходов на метку start
jmp //повторим
Zdown:
mov buf,8 //1 в буфер
mov p1, buf //отправить в порт 1
mov buf,1
mov r1,buf
delay2701:
mov buf,8
mov adr,buf
mov buf,1
mov ram,buf
mov buf,1
mov a,buf
delay271:
add a
mov roma1, vse271
mov roma2, vse271
jc //если регистр а переполнился то закончить задержку
mov roma1, delay271
mov roma2, delay271
jmp
vse271:
mov a,r1
add r1
mov roma1, vse2701
mov roma2, vse2701
jc //если регистр а переполнился то закончить задержку
mov roma1, delay2701
mov roma2, delay2701
jmp
vse2701:
mov buf,0 //0 в буфер
mov p1, buf //отправить в порт 0
mov roma1, loop //указываем координаты для переходов на метку start
mov roma2, loop //указываем координаты для переходов на метку start
jmp //повторим
DIRup:
mov buf,2 //выбор направления вращения DIR
mov p1,buf
mov buf,10 //сохраняем выбор направления вращения DIR
mov adr,buf
mov buf,1
mov ram,buf
mov roma1, loop //указываем координаты для переходов на метку start
mov roma2, loop //указываем координаты для переходов на метку start
jmp //повторим
DIRdown:
mov buf,10 //сохраняем выбор направления вращения DIR
mov adr,buf
mov buf,0 //выбор направления вращения DIR
mov p1,buf
mov ram,buf
mov roma1, loop //указываем координаты для переходов на метку start
mov roma2, loop //указываем координаты для переходов на метку start
jmp //повторим
Yclk:
mov buf,10
mov adr,buf
mov a,ram
mov roma1, lab2
mov roma2, lab2
jbz0 //если 0 то переход
mov buf,6
mov p1,buf
mov roma1, delay
mov roma2, delay
jmp
lab2:
mov a,p2
mov roma1, stepY //указываем координаты для переходов на метку
mov roma2, stepY //указываем координаты для переходов на метку
jbz2 //если - то переход (концевик не сработал, Y>0)
// теперь Y=0
mov roma1, delay
mov roma2, delay
jmp
stepY:
mov buf,4
mov p1,buf
mov roma1, delay
mov roma2, delay
jmp
Xclk:
mov buf,10
mov adr,buf
mov a,ram
mov roma1, lab1
mov roma2, lab1
jbz0 //если 0 то переход
mov buf,3
mov p1,buf
mov roma1, delay
mov roma2, delay
jmp
lab1:
mov a,p2
mov roma1, stepx //указываем координаты для переходов на метку
mov roma2, stepx //указываем координаты для переходов на метку
jbz1 //если - то переход (концевик не сработал, Х>0)
// если X=0
mov roma1, delay
mov roma2, delay
jmp
stepx:
mov buf,1
mov p1,buf
//вместо delay ------------
delay:
//-
mov buf,8 //-
mov adr,buf //-
mov buf,0 //-
mov r1,buf //-
delay_lab:
//-
mov a,r1 //-
add r1 //-
//-
mov roma1, delay_out //-
mov roma2, delay_out //-
jc //если переполнение
mov roma1, delay_lab //-
mov roma2, delay_lab //-
jmp //-
//------------------------
delay_out:
mov buf,10
mov adr,buf
mov a,ram
mov roma1, label3
mov roma2, label3
jbz0 //если 0 то переход
mov buf,2
mov p1,buf
mov ROMa1, loop
mov ROMa2, loop
jmp
label3:
mov buf,0
mov p1,buf
loop:
mov roma1, start //указываем координаты для переходов на метку start
mov roma2, start //указываем координаты для переходов на метку start
jmp //повторим
© Habrahabr.ru