Witam. Zainteresował mnie niedawno temat mikrokontrolerów, postanowiłem zacząć naukę programowania. Wybór padł na rodzinę AVR (ze względu na popularność). Na forum wiele osób polecało na początek Assemblera, tak też wybrałem. Przedstawiam jeden z moich pierwszych programów, jest to programowo zrealizowane "dwukanałowe", 8-bitowe PWM. Proszę o ocenę tego programu, krytykę, oraz porady na przyszłość. Każda sugestia będzie bardzo mile widziana
.nolist
.include "m8def.inc"
.list
.def red = R16 ;PD0
.def green = R17 ;PD1
.def pomocniczy = R18
.def licz = R19 ;licznik PWM
RJMP main
niskiR:
CBI PORTD,0
RJMP dalej2
niskiG:
CBI PORTD,1
RJMP dalej3
main:
LDI red,0b01111111 ;współczynnik wypełnienia PWM, PORTD.0
LDI green,0b01000000 ;współczynnik wypełnienia PWM, PORTD.1
LDI pomocniczy,0xFF
OUT DDRD,pomocniczy
LDI pomocniczy,HIGH(RAMEND)
OUT SPH,pomocniczy
LDI pomocniczy,LOW(RAMEND)
OUT SPL,pomocniczy
LDI pomocniczy,0xFF
petla:
OUT PORTD,pomocniczy
czas:
INC licz
CP licz,red
BREQ niskiR
dalej2:
cp licz,green
BREQ niskiG
dalej3:
CPI licz,255
BREQ petla
RJMP czas