Operácie

Program AVR01: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
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...
 
Balogh (diskusia | príspevky)
Bez shrnutí editace
 
(9 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 1: Riadok 1:
.include "2313def.inc" ; hlavickovy subor s definiciou registrov
<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     =PINB6
.equ SW1 =PINB6
.equ SW2     =PINB7
.equ SW2 =PINB7


.CSEG ; nasleduje CODE SEGMENT - program
.CSEG ; nasleduje CODE SEGMENT - program
.ORG 0000 ; program zacina od adresy 0000
.ORG 0000 ; program zacina od adresy 0000
START: ldi TMP,0b00110000 ; nakonfiguruj co su vstupy a vystupy
START:
out DDRB,TMP ; zapis do registra
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,0x0F0 ; zapni pull-upy a zhasni LED
ldi TMP,0b00000110 ; nakonfiguruj co su vstupy a vystupy
out PORTB,TMP ; zapis na port
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
rjmp LED1_ON


LED1_OFF:
LED1_OFF:
sbi PORTB,LED1 ; Set Bit LED1 na porte PB
sbi PORTB,LED1 ; Set Bit LED1 na porte PB
rjmp LOOP ; skoc zasa dokola
rjmp LOOP ; skoc zasa dokola


LED1_ON:
LED1_ON:
cbi PORTB,LED1 ; Clear Bit LED1 na porte PB
cbi PORTB,LED1 ; Clear Bit LED1 na porte PB
rjmp LOOP ; dokola
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

Späť na cvičenie...