Program AVR01: Rozdiel medzi revíziami
Z 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...) |
|||
(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