y"> rjmp STOP_SHD ; перейти на STOP_SHD, якщо натиснуто
out PORTC, r1; Крутимо двигун вправо
out PORTC, r2PORTC, r3PORTC, r4PORTC, r5PORTC, r6PORTC, r7PORTC, r8Wait1mks; затримка між шагомSHD_R_SHD:
; ***************************************** *******************
; закриття форсунки
CLOSE_SHD:
ldi r1, 0b00001001r2, 0b00000100r3, 0b00001100r4, 0b00000100r5, 0b00000110r6, 0b00000010r7, 0b00000011r8, 0b00000001_L:
out PORTC, r1; Крутимо двигун вліво
out PORTC, r2PORTC, r3PORTC, r4PORTC, r5PORTC, r6PORTC, r7PORTC, r8Wait1mks; затримка між шагомSHD_L
; ***************************************** *****************: CLOSE_SHD; закриваємо форсунку
sbi PORTC, 7; закриваємо вихідний клапанPORTC, 5; закриваємо вхідний клапан
rjump Reset;
. include "LCD4.asm"
Додаток Б
Програма управління дисплеєм
LCD4.asm
; =========== LCD Define ============================ ==========================
. equ DATA_PORT = PORTA ; LCD Data Port
. equ DATA_PIN = PINA
. equ DATA_DDR = DDRA
. equ CMD_PORT = PORTE ; LCD Control Port
. equ CMD_PIN = PINE
. equ CMD_DDR = DDRE
. equ E = 4
. equ RW = 3
. equ RS = 2
. equ SPEED = 14 ; 14 для XTAL = 16MHz, 10 для XTAL = 8MHz,
; 6 для XTAL = 4MHz, 5 для XTAL <4MHz
; ========================================= =================================
; =========== LCD Proc ============================ ============================: CBI CMD_PORT, RS ; Виставляємо потрібні рівні на
; керуючих виводахCMD_PORT, RW; Порти на виходCMD_PORT, E ; І відразу ж виставляються на 1CMD_DDR, RSCMD_DDR, RWCMD_DDR, E
PortIn; Порт даних на вхід
; ========================================= =================================: CLI ; Очікування прапора зайнятості контролера дісплеяPortIn ; Порти на вхід
CMD_PORT, RS ; Йде Команда!
SBI CMD_PORT, RW ; Чи...