Operácie

Program AVR02: Rozdiel medzi revíziami

Z SensorWiki

(Nová stránka: <source lang="asm"> ; .DEVICE ATmega16 .include "m16def.inc" .def TMP =r16 ; zadefinujeme pomocnu "premennu" .equ LED1 =PIND? ; kam je pripojena LED .equ LED2 =PIND? .equ S...)
 
 
(Jedna medziľahlá úprava od rovnakého používateľa nie je zobrazená.)
Riadok 1: Riadok 1:
 
<source lang="asm">
 
<source lang="asm">
;
+
.DEVICE ATmega88
.DEVICE ATmega16
 
  
.include "m16def.inc"
+
.include "m88def.inc"
  
 
.def TMP =r16 ; zadefinujeme pomocnu "premennu"
 
.def TMP =r16 ; zadefinujeme pomocnu "premennu"
Riadok 45: Riadok 44:
  
 
</source>
 
</source>
 +
 +
 +
[[CADRS_Cvi%C4%8Denie_7#Postup|Späť na cvičenie...]]

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