Program AVR02: Rozdiel medzi revíziami
Zo stránky 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... |
Bez shrnutí editace |
||
(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 | |||
.include " | .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