Программа написанная на ассемблере. Простой пример управдения двигателями (сигналы подаются на специальный драйвер двигателей L293D). (для меги8)
Dir_motor.asm:
.include "m8def.inc"
.def temp=r16 .def temp1=r17 .def temp2=r18
init:
;******************************************************** ldi temp,0b11111111 ;настройка порта C 1-выход 0-вход out DDRC,temp ldi temp,0b00000000 ;настройка порта C out PORTC,temp ldi temp,0b11111111 ;настройка порта D 1-выход 0-вход out DDRD,temp ldi temp,0b00000000 ;настройка порта D out PORTD,temp ldi temp,0b11111111 ;настройка порта B 1-выход 0-вход out DDRB,temp ldi temp,0b00000000 ;настройка порта B PB2-inv_OE out PORTB,temp
time_2s_1: ;**************************************** dec temp ;**** внутреннее тело цикла 5кц ********* tst temp ;**************************************** breq time_2s_2 ;**************************************** rjmp time_2s_1 ;****************************************
time_2s_2: dec temp1 tst temp1 breq time_2s_3 rjmp time_2s_01
time_2s_3: dec temp2 tst temp2 breq time_2s_end rjmp time_2s_001
time_2s_end:
pop temp2 pop temp1 pop temp
ret ;************************************************************ ;*** Окончание подпрограммы отсчета времени 2с на 8МГц *** ;************************************************************