Вт сен 11, 2012 23:48:07
.include "m8def.inc" ; Header files
.def tempp=r20
.def temp=r16
.equ BUTTON_ON = 0b00000001
;********************************************************************
; Инициализация контроллера
;********************************************************************
.org 0x0000 ; Вектор сброса
rjmp reset ; процессора
;********************************************************************
reset:
;********************************************************************
; Настройка портов
;********************************************************************
ldi temp, 0b00000001 ; Порты PВ на ввод кроме нулевого
out DDRB, temp ;
ldi temp, 0b00000010 ; Подтягивание кнопки (PB1)
out PORTB, temp ;
ldi tempp, 0b00000010 ; заготовка для моргания светодиодом
nop
nop
;********************************************************************
; Основная программа
;********************************************************************
OFF_LOOP:
sbic PINB, BUTTON_ON ; ждать когда нажмется кнопка
rjmp OFF_LOOP
MAIN_LOOP:
out portB,tempp ; заготовка для моргания светодиодом
rjmp OFF_LOOP
Ср сен 12, 2012 00:50:33
out portB,tempp ; заготовка для моргания светодиодом
sbi PORTB, 0 ; Зажечь светодиод на ноге PB0
cbi PORTB, 0 ;Потушить светодиод на ноге PB0
Ср сен 12, 2012 11:30:33
Ср сен 12, 2012 12:33:20
;reset:
;********************************************************************
; Настройка портов
;********************************************************************
LDI R17, 0b00000011 ; Порты PВ на ввод кроме нулевого и первого для студии
OUT DDRB,R17 ;
ldi temp, 0b00000010 ; Подтягивание кнопки (PB1)
out PORTB, temp ;
ldi temp, 0b00000001 ; Порты PВ на ввод кроме нулевого
out DDRB, temp ;
LDI R20, 0b00000011 ; заготовка для моргания светодиодом
OUT PORTB,R20 ; светик нужно погасить, не потеряв при этом подтяжки
LDI R21, 0b00000001 ; заготовка для моргания светодиодом
OFF_LOOP:
RCALL PAUSE
SBIC PINB, BUTTON_ON ; ждать когда нажмется кнопка
RJMP OFF_LOOP
EOR R20,R21 ; кто-то нажал кнопку, значит
OUT PORTB,R20 ; светик нужно переключить, не потеряв при этом подтяжки
WAIT:
SBIS PINB, BUTTON_ON ; ждать когда отпустится кнопка
RJMP WAIT
RJMP OFF_LOOP
PAUSE:
LDI YH,0
LDI YL,255
WAIT_PAUSE:
SBIW YH:YL,1
BRNE WAIT_PAUSE
RET
Ср сен 12, 2012 21:31:48
Ср сен 12, 2012 22:26:06
Чт сен 13, 2012 10:24:11