;
.DEVICE ATmega16
.include "m16def.inc"
.def TMP =r16 ; zadefinujeme pomocnu "premennu"
.equ LED1 =PIND? ; kam je pripojena LED
.equ LED2 =PIND?
.equ SW1 =PIND? ; kam je pripojene tlacitko
.equ SW2 =PIND?
.CSEG ; tu zacina nejaka cast programu
.org 0000 ; konkretne na adrese 0000
START:
ldi TMP,high(RAMEND) ; Zalozenie zasobnika
out SPH,TMP ; (Stack Pointer = SPH + SPL )
ldi TMP,low(RAMEND) ; na koniec RAM (RAMEND)
out SPL,TMP
ldi TMP,0b???????? ;nastav vstupy a vystupy
out DDRD,TMP
ldi TMP,0b???????? ; zhasni LED a zapni pull-upy
out PORTD,TMP ; zapis na port
LOOP: sbis PIND,SW1 ; obskoc ak je stlacene tlacitko
rcall LED1_ON ; zavolaj "podprogram"
sbis PIND,SW2 ; obskoc ak je stlacene tlacitko
rcall LED2_ON
rjmp LOOP ; dokola
LED1_ON:
cbi PORTD,LED1 ; Clear BIt na PORTD, cislo LED1
sbi PORTD,LED2 ; Set BIt na PORTD, cislo LED2
ret ; navrat naspat
LED2_ON:
cbi PORTD,LED2
sbi PORTD,LED1
ret
; koniec