Anda di halaman 1dari 10

LATIHAN 1 I.

LISTING PROGRAM

#include <avr/io.h>

static void avr_init(void);

int main(void) { avr_init(); unsigned char i=0X01; unsigned char J=1; for(;;) {

J=PINA;

if (J>0X80) {

PORTB=i;

if (i==0X01) { i=0X80; } else { i=i>>1; } } else { PORTB=i;

if (i==0X80) { i=0X01; } else { i=i<<1; } }

} return(0); } static void avr_init(void) { // Initialize device here. DDRA=0X00; DDRB=0XFF; return; }

II. RUNNING PROGRAM 1. Pendeklarasian nilai awal (dapat berupa variable atau konstanta). unsigned char i=0X01; nilai variabael i bernilai 0x01 unsigned char J=1; nilai variable J bernilai 1
2.

Kemudian program akan melakukan looping. for(;;)

3.

Nilai variable J bernilai sama dengan nilai input PINA. J=PINA;

4.

Jika nilai J lebih besar dari 0x80 (if (J>0X80)) (gambar 1),

maka nilai PORTB akan sama dengan i (PORTB=i;). Selanjutnya jika

nilai variable i bernilai sama dengan 0x01 (if (i==0X01)) maka nilai variable i sama dengan 0x80 (i=0X80;) (gambar 2).

(gambar 1)

(gambar 2)

Namun apabila i tidak sama dengan 0x01 maka nilai i akan bergeser 1 poin ke kanan (i=i>>1;) sampai i sama dengan 0x01 atau nilai J kurang dari atau sama dengan 0x80.

5.

Apabila nilai variable J tidak bernilai lebih dari 0x08 maka nilai

PORTB akan sama dengan nilai variable i (PORTB=i;). Kemudian jika nilai variable i sama dengan 0x80 (if (i==0X80)) maka nilai variable i akan bernilai 0x01 (i=0X01;). Dan jika nilai i tidak sama dengan 0x80 maka nilai i akan bergeser 1 poin ke kiri (i=i<<1;) sampai i bernilai sama dengan 0x80 atau J bernilai lebih dari 0x80.

6.

PINA merupakan input dan PINB merupakan output DDRA=0X00; (gambar 3) DDRB=0XFF; (gambar 4)

(gambar 3)

(gambar 4)