アセンブリでLチカ

p.110
今わかっている範囲でLチカをしてみる。

.org 0
    ldi r16, high(ramend)
    out SPH, r16
    ldi r16, low(ramend)
    out SPL, r16
    ;
    ldi r16, 0xff
    out DDRB, r16 ; ポートBのIOを全部OUTにして、
back:
    ldi r16, 0b00000010
    out PORTB, r16 ; PB1からHを出力して、
    call delay_1s  ; 待って、
    ldi r16, 0 
    out PORTB, r16 ; ポートBの全部のピンからLを出力して、
    call delay_1s  ; 待って、
    rjmp back      ; を繰り返す。rjmpのrはrelative。
;
delay_1s:
    ldi r20, 64
l1:
    ldi r21, 100
l2:
    ldi r22, 250
l3:
    nop
    nop
    dec r22
    brne l3
    ;
    dec r21
    brne l2
    ;
    dec r20
    brne l1
    ret

f:id:ti-nspire:20200319145400p:plain:w500