Operácie

Program AVR02

Zo stránky SensorWiki

.DEVICE ATmega88

.include "m88def.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


Späť na cvičenie...