Selasa, 26 April 2011

Microprosesor AVR Studio 4 - Contoh Program 2

PROGRAM MENYALAKAN LED DARI LSB KE MSB HINGGA SEMUA LED MENYALA, DAN SETERUSNYA

.include"8535def.inc"
.org 0x0000
rjmp mulai

mulai:

ser r16                ; set register 16 jadi logika 1 semua
out porta, r16
clc                ; carry di set jadi 0

ldi r17,0x01
ldi r18,0x09            ; untuk perulangan


ulangi:
    cp r18, r17        ; bandingkan r18 dengan r17
    brlo mulai        ; juka r18 < r17, maka jump ke mulai (di set kondisi awal)

    out porta, r16        ; salin r16 ke port a (nilai r16 yang menjadikan led menyala)
    lsl r16            ; geser logika 0 ke lsb, dan msb masuk ke carry

    dec r18            ; perulangan berkurang 1

rjmp ulangi            ; jump ke ulangi

akhir:
rjmp akhir


PROGRAM MENYALAKAN LED DARI MSB KE LSB HINGGA SEMUA LED MENYALA, DAN SETERUSNYA

.include"8535def.inc"
.org 0x0000
rjmp mulai

mulai:

out porta, r16
clc                ; carry di set jadi 0

ldi r17,0x01
ldi r18,0x09            ; untuk perulangan
ser r16                ; set register 16 jadi logika 1 semua
out porta, r16
clc                ; carry di set jadi 0

ldi r17,0x01
ldi r18,0x09            ; untuk perulangan


ulangi:
    cp r18, r17        ; bandingkan r18 dengan r17
    brlo mulai        ; juka r18 < r17, maka jump ke mulai (di set kondisi awal)

    out porta, r16        ; salin r16 ke port a (nilai r16 yang menjadikan led menyala)
    lsr r16            ; geser logika 0 ke lsb, dan msb masuk ke carry

    dec r18            ; perulangan berkurang 1

rjmp ulangi            ; jump ke ulangi

akhir:
rjmp akhir


PROGRAM MEMATIKAN LED DARI LSB DAN BERPINDAH HINGGA KE MSB, DAN SETERUSNYA

.include"8535def.inc"
.org 0x0000
rjmp mulai

mulai:

ldi r16, 0x00            ; set register 16 jadi logika 0 semua
out porta, r16            ; menyalin r16 kle porta (berarti semua porta dalam keadanaan menyala)
sec                ; set carry menjadi berlogika 1
ulangi:

    out porta, r16        ; salin r16 ke port a (nilai r16 yang menjadikan led menyala)
    rol r16            ; rotasi logika nilai carry ke lsb, dan msb masuk ke carry
    dec r18            ; perulangan berkurang 1

rjmp ulangi            ; jump ke ulangi

akhir:
rjmp akhir


PROGRAM MEMATIKAN LED DARI MSB DAN BERPINDAH KE LSB, DAN SETERUSNYA

.include"8535def.inc"
.org 0x0000
rjmp mulai

mulai:

ldi r16, 0x00            ; set register 16 jadi logika 0 semua
out porta, r16            ; menyalin r16 kle porta (berarti semua porta dalam keadanaan menyala)
sec                ; set carry menjadi berlogika 1
ulangi:

    out porta, r16        ; salin r16 ke port a (nilai r16 yang menjadikan led menyala)
    roR r16            ; rotasi logika nilai carry ke lsb, dan msb masuk ke carry
    dec r18            ; perulangan berkurang 1

rjmp ulangi            ; jump ke ulangi

akhir:
rjmp akhir

PROGRAM MENYALAKAN LED DARI LSB DAN BERPINDAH HINGGA KE MSB DAN SETERUSNYA

.include"8535def.inc"
.org 0x0000
rjmp mulai

mulai:

ldi r16, 0xFF            ; set register 16 jadi logika 1 semua
out porta, r16            ; menyalin r16 kle porta (berarti semua porta dalam keadanaan menyala)
clc                ; set carry menjadi berlogika 1

ulangi:
    out porta, r16        ; salin r16 ke port a (nilai r16 yang menjadikan led menyala)
    roL r16            ; rotasi logika nilai carry ke lsb, dan msb masuk ke carry
    dec r18            ; perulangan berkurang 1

rjmp ulangi            ; jump ke ulangi

akhir:
rjmp akhir


PROGRAM MENYALAKAN LED DARI MSB DAN BERPINDAH HINGGA KE LSB DAN SETERUSNYA

.include"8535def.inc"
.org 0x0000
rjmp mulai

mulai:

ldi r16, 0xFF            ; set register 16 jadi logika 1 semua
out porta, r16            ; menyalin r16 kle porta (berarti semua porta dalam keadanaan menyala)
clc                ; set carry menjadi berlogika 1
ulangi:

    out porta, r16        ; salin r16 ke port a (nilai r16 yang menjadikan led menyala)
    roR r16            ; rotasi logika nilai carry ke lsb, dan msb masuk ke carry
    dec r18            ; perulangan berkurang 1

rjmp ulangi            ; jump ke ulangi

akhir:
rjmp akhir

Tidak ada komentar:

Posting Komentar