ネットワークコネクタ近くに実装されているLED13という赤いLEDを1秒おきに点滅させます。
LED13はPORTBの第7桁です。1を書き込むと点灯、0で消灯になります。
複数本のデジタル出力が1つのアドレスに同居していますのでちょっと面倒な、回りくどい手順ー読んで、書き換えて、書くーが必要です。まあそれでも3ステップなので、ここはその面倒さをあえて感じていただければと思います。
世の中のCPUではこのような操作を1ステップでできる命令が備わっているのが一般的です。(内部ではこれと同じことをやっています。)
.list
;---
; A Sample Code of Digital I/O Manipulation
;---
dem_cseg
main:
0000 38 46 IN 46 ; read DDRB
0002 87 27 MASK 2, 7 ; set 2(output) to digit 7 for LED13
0004 39 46 OUT 46 ; write DDRB
loop:
0006 38 48 IN 48 ; read PORTB
0008 87 17 MASK 1, 7 ; set 1(light-on) to digit 7
0010 39 48 OUT 48 ; write PORTB
0012 30 10 LDI.b 10 ; 10*0.1s=1s
0014 64 20 SYS sys_pause ; pause
0016 38 48 IN 48 ; read PORTB
0018 87 07 MASK 0, 7 ; set 0(light-off) to digit 7
0020 39 48 OUT 48 ; write PORTB
0022 30 10 LDI.b 10 ; 10*0.1s=1s
0024 64 20 SYS sys_pause ; pause
0026 61 22 JB loop