Program AVR01: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace |
Bez shrnutí editace |
||
(5 medziľahlých úprav od rovnakého používateľa nie je zobrazených.) | |||
Riadok 1: | Riadok 1: | ||
<source lang="asm"> | <source lang="asm"> | ||
.include " | .include "m328def.inc" ; hlavickovy subor s definiciou registrov | ||
Riadok 13: | Riadok 13: | ||
.ORG 0000 ; program zacina od adresy 0000 | .ORG 0000 ; program zacina od adresy 0000 | ||
START: ldi TMP, | START: | ||
ldi r16,high(RAMEND) ; Set Stack Pointer (= SPH + SPL )to top of RAM (RAMEND) | |||
out SPH,r16 ; | |||
ldi r16,low(RAMEND) | |||
out SPL,r16 | |||
ldi TMP,0b00000110 ; nakonfiguruj co su vstupy a vystupy | |||
out DDRB,TMP ; zapis do registra | out DDRB,TMP ; zapis do registra | ||
Riadok 34: | Riadok 40: | ||
[[CADRS_Cvi%C4%8Denie_7#Postup|Späť na cvičenie...]] | [[CADRS_Cvi%C4%8Denie_7#Postup|Späť na cvičenie...]] | ||
[[Category:AVR]][[Category:CAD_RS]] |
Aktuálna revízia z 09:19, 28. september 2012
.include "m328def.inc" ; hlavickovy subor s definiciou registrov
.def TMP =r16 ; pomcna premenna bude v registri r16
.equ LED1 =PINB1 ; HW konfiguracia - kde su LEDky a SWitche
.equ LED2 =PINB2
.equ SW1 =PINB6
.equ SW2 =PINB7
.CSEG ; nasleduje CODE SEGMENT - program
.ORG 0000 ; program zacina od adresy 0000
START:
ldi r16,high(RAMEND) ; Set Stack Pointer (= SPH + SPL )to top of RAM (RAMEND)
out SPH,r16 ;
ldi r16,low(RAMEND)
out SPL,r16
ldi TMP,0b00000110 ; nakonfiguruj co su vstupy a vystupy
out DDRB,TMP ; zapis do registra
ldi TMP,0x0F0 ; zapni pull-upy a zhasni LED
out PORTB,TMP ; zapis na port
LOOP: sbis PINB,SW1 ; obskoc ak je stlacene tlacitko
rjmp LED1_ON
LED1_OFF:
sbi PORTB,LED1 ; Set Bit LED1 na porte PB
rjmp LOOP ; skoc zasa dokola
LED1_ON:
cbi PORTB,LED1 ; Clear Bit LED1 na porte PB
rjmp LOOP ; dokola
; koniec