- Dział: arts -
elektronika/avr
Progamowanie mikrokontrolerów rodziny AVR
Pierwszy projekt (źródło)
Kod napisany w asemblerze.
;################################
Teraz musimy ten kod przerzucić na nasz mikrokontroler.
;## 10.9.2009 ##
;################################
;## Dawid Urbańki ##
;################################
;## opis:
;##Zapala i gasi piny portu D
;PORTD_0 - led1
;PORTD_1 - led2
;PORTD_2 - led3
;PORTD_3 - led4
;##############################
.nolist
.include "tn2313def.inc"
.list
.listmac
.def acc = r16
.equ del_s = 4 ;del_s = 4 -> 1s
.cseg
.org 0
;inicjacja
cli ;
ldi r16,LOW(RAMEND) ;inicjacja stosu...
out SPL,r16 ;...progamowego
ldi r16,0xFF ;
out DDRD,r16 ; PORTD - wyjscie w stanie wysokim
;##############################
;## pętla gówna programu
Main:
;wyłącz portD
rcall PORTD_OFF
;wł LED1 na 1s
rcall PORTD_0_ON
;czekaj
ldi r19,4
rcall Delay
rcall PORTD_0_OFF
;wł lED4 na 1s
rcall PORTD_3_ON
;czekaj
ldi r19,4
rcall Delay
rcall PORTD_3_OFF
;------------------------------
;wł LED2 na 2s
rcall PORTD_1_ON
;czekaj
ldi r19,8
rcall Delay
rcall PORTD_1_OFF
;wł LED 3 na 2s
rcall PORTD_2_ON
;czekaj
ldi r19,8
rcall Delay
rcall PORTD_2_OFF
;wł LED 2,3 na 1s
rcall PORTD_2_ON
rcall PORTD_3_ON
;czekaj
ldi r19,4
rcall Delay
rcall PORTD_2_OFF
rcall PORTD_3_OFF
;------------------------------
rjmp Main ; powrot do petli
;##############################
;##############################
;## PORTD led swieci
PORTD_ON:
ldi r16,0xFF
out PORTD,r16 ; PORTD - wyjscie w stanie wysokim
ret
PORTD_0_ON:
sbi PORTD,0
ret
PORTD_1_ON:
sbi PORTD,1
ret
PORTD_2_ON:
sbi PORTD,2
ret
PORTd_3_ON:
sbi PORTD,3
ret
PORTD_4_ON:
sbi PORTD,4
ret
PORTD_5_ON:
sbi PORTD,5
ret
;#############################
;## PORTD led NIE swieci
PORTD_OFF:
ldi r16,0x00
out PORTD,r16 ; PORTD - wyjscie w stanie wysokim
ret
PORTD_0_OFF:
cbi PORTD,0
ret
PORTD_1_OFF:
cbi PORTD,1
ret
PORTD_2_OFF:
cbi PORTD,2
ret
PORTd_3_OFF:
cbi PORTD,3
ret
PORTD_4_OFF:
cbi PORTD,4
ret
PORTD_5_OFF:
cbi PORTD,5
ret
;########################################
;## opóźnienie
;## ustawiamy rejestrem 19 'r19'
Delay:
ldi r19,del_s
clr r1
clr r2
delay_loop:
dec r1
brne delay_loop
dec r2
brne delay_loop
dec r19
brne delay_loop
ret
.exit
;-----------------------------------------
- Otwieramy AVR Studio tworzymy nowy projetk w języku asembler.
- Wklejamy powyższy kod. kompikujemy F7.
- Uruchamiamy eXtreme Burner - AVR
- otwieramy 'twoja_nazwa_projektu.hex'
- Wgrywamy na mikrokontroler klikając na guzik 'write all'