Operácie

Program AVR02: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
Bez shrnutí editace
Balogh (diskusia | príspevky)
Bez shrnutí editace
 
Riadok 1: Riadok 1:
<source lang="asm">
<source lang="asm">
.DEVICE ATmega16
.DEVICE ATmega88


.include "m16def.inc"
.include "m88def.inc"


.def TMP =r16 ; zadefinujeme pomocnu "premennu"
.def TMP =r16 ; zadefinujeme pomocnu "premennu"

Aktuálna revízia z 20:31, 5. november 2008

.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...