Led Berjalan 2-PORT (PART1)

Tutorial menyalakan 2 PORT sekaligus, misalnya membuat program sederhana untuk menyalakan LED pada PORTC dan PORTA secara bersamaan seperti pada gambar dibawah:

1. rangkaian

catatan: rangkaian tidak digambarkan semua. seperti kaki VCC dan Ground pada IC mikrokontroler ATMega16 tidak digambarkan.

2. kode program

#include <io.h>
#include <delay.h>
 
void main(void)
{
PORTA=0xFF;
DDRA=0xFF;
PORTC=0xFF;
DDRC=0xFF;
 
while (1)
    { 
 
    PORTA=0x00;
    PORTC=0x00;
    delay_ms(300);
    PORTA=0x80;
    PORTC=0x01;
    delay_ms(300);
    PORTA=0x40;
    PORTC=0x02;
    delay_ms(300);
    PORTA=0x20;
    PORTC=0x04;
    delay_ms(300);
    PORTA=0x10;
    PORTC=0x08;
    delay_ms(300);
    PORTA=0x08;
    PORTC=0x10;
    delay_ms(300);
    PORTA=0x04;
    PORTC=0x20;
    delay_ms(300);
    PORTA=0x02;
    PORTC=0x40;
    delay_ms(300);
    PORTA=0x01;
    PORTC=0x80;
    delay_ms(300);
    }
}

3. pembahasan

PORTA=0xFF;
DDRA=0xFF;
PORTC=0xFF;
DDRC=0xFF;

PORTA dan PORTC digunakan sebagai output untuk menyalakan LED. Sehingga DDRA dan DDRC diberi bilangan hexsa 0xFF.


    PORTA=0x00;
    PORTC=0x00;
    delay_ms(300);

Pertama LED pada PORTA & C mati semua maka dari itu PORTA & PORTC diberi bilangan hexsa 0x00; kemudian disusul perintah delay selama 0,3 detik.


    PORTA=0x80;
    PORTC=0x01;
    delay_ms(300);

Selanjutnya PORTC LED pada PORTC paling kanan pada PORTC.0 maka PORTC diberi data biner 0x00000001 bila dikonfersi ke hexsa = 0x01. sedangkan PORTA sama nyala LED berada disebelah kanan, tapi bila diperhatikan LED yang menyala pada PORTA adalah PORTA.7 bukan PORTA.0 . Jadi nyala LED PORTA sebenarnya kebalikan PORTC, maka dari itu PORTA diberi data biner 0b10000000 dikonfersi ke hexsa = 0x80.

Untuk kode program pada baris 20 dan seterusnya silakan mencoba diartikan secara mandiri.