Program AVR01: Rozdiel medzi revíziami
Zo stránky SensorWiki
Nová stránka: .include "2313def.inc" ; hlavickovy subor s definiciou registrov .def TMP =r16 ; pomcna premenna bude v registri r16 .equ LED1 =PINB1 ; HW konfiguracia - kde su LEDky a SWi... |
Bez shrnutí editace |
||
(9 medziľahlých úprav od rovnakého používateľa nie je zobrazených.) | |||
Riadok 1: | Riadok 1: | ||
.include " | <source lang="asm"> | ||
.include "m328def.inc" ; hlavickovy subor s definiciou registrov | |||
Riadok 6: | Riadok 7: | ||
.equ LED1 =PINB1 ; HW konfiguracia - kde su LEDky a SWitche | .equ LED1 =PINB1 ; HW konfiguracia - kde su LEDky a SWitche | ||
.equ LED2 =PINB2 | .equ LED2 =PINB2 | ||
.equ SW1 | .equ SW1 =PINB6 | ||
.equ SW2 | .equ SW2 =PINB7 | ||
.CSEG | .CSEG ; nasleduje CODE SEGMENT - program | ||
.ORG 0000 | .ORG 0000 ; program zacina od adresy 0000 | ||
START: ldi | 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 | LOOP: sbis PINB,SW1 ; obskoc ak je stlacene tlacitko | ||
rjmp LED1_ON | |||
LED1_OFF: | LED1_OFF: | ||
sbi PORTB,LED1 ; Set Bit LED1 na porte PB | |||
rjmp LOOP ; skoc zasa dokola | |||
LED1_ON: | LED1_ON: | ||
cbi PORTB,LED1 ; Clear Bit LED1 na porte PB | |||
rjmp LOOP ; dokola | |||
; koniec | ; koniec | ||
</source> | |||
[[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