; частота кристалла 1 МГц .include "m8def.inc" .def temp=r16 .def temp1=r17 .equ count=300 .cseg .org 0 ; инициализация стека ldi temp,low(ramend) out spl,temp ldi temp,high(ramend) out sph,temp ; ИНИЦИАЛИЗАЦИЯ ПОРТОВ ;-------------------------- ldi temp,0b11111110 out ddrd,temp ldi temp,0b11111111 out portd,temp ldi temp,0b11111111 out ddrb,temp ldi temp,0b00000000 out portb,temp ;------------------------ ;инициализация таймера Т1 ; пределитель 1024 ldi temp,0x05 out TCCR1B,temp ;программа main: in temp,pind sbrs temp,0 ; пропускаем если кнопка отжата rjmp vlevo ;сдвиг вправо ldi temp, 0b00000001 out portb,temp flag1: rcall delay lsl temp out portb,temp brcc flag1 rjmp main ;сдвиг влево vlevo: ldi temp, 0b10000000 out portb,temp flag2: rcall delay lsr temp out portb,temp brcc flag2 rjmp main ;------------------------- ; задержка с использованием счетчика delay: push temp ldi temp,0x00 out TCNT1H,temp out TCNT1L,temp m1: in temp,TCNT1L cpi temp,Low(count) brlo m1 m2: in temp,TCNT1H cpi temp,High(count) brlo m2 pop temp ret