Buka software codevisionAVR. Buatlah new project. Setelah disimpan, hapus saja semua tetapi sisakan header dan void main() nya saja.
contoh programnya sesuai logika berfikir di postingan sebelumnya:
#include <mega16.h> // ini library untuk chip ATmega 16.
#include <delay.h> // ini untuk perintah tundaan.
// delay_ms(100); tunda selama 100 millisecond
// delay_us(100); tunda selama 100 microsecond
void main(void)
{
//pertama kita membuat inisialisasi port
DDRC=0xff; // DDRC=0xff; = DDRC=0b11111111;
/* | | |_ _ _ PORTC.0 = output
| |_ _ _ _ PORTC.1 sampai PORTC.6 = output
|_ _ _ PORTC.7 = output
DDR = data direction, untuk mengatur port sebagai input
atau dijadikan output */
DDR = data direction, untuk mengatur port sebagai input
atau dijadikan output */
// setelah inisialisasi selanjutnya kita realisasikan logika berfikirnya
while (1){ // <-------- perulangan tiada henti.
PORTC=0b00000000; // matikan semua led
delay_ms(500); // tunda 0.5 detik
PORTC=0b00000001; // nyalakan led di PORC.0
delay_ms(500); // tunda 0.5 detik
PORTC=0b00000010; // matikan led di PORC.0 nyalakan led di PORC.1
delay_ms(500); // tunda 0.5 detik
PORTC=0b00000100; // matikan led di PORC.1 nyalakan led di PORC.2
delay_ms(500); // tunda 0.5 detik
PORTC=0b00001000; // matikan led di PORC.2 nyalakan led di PORC.3
delay_ms(500); // tunda 0.5 detik
PORTC=0b00010000; // matikan led di PORC.3 nyalakan led di PORC.4
delay_ms(500); // tunda 0.5 detik
PORTC=0b00100000; // matikan led di PORC.4 nyalakan led di PORC.5
delay_ms(500); // tunda 0.5 detik
PORTC=0b01000000; // matikan led di PORC.5 nyalakan led di PORC.6
delay_ms(500); // tunda 0.5 detik
PORTC=0b10000000; // matikan led di PORC.6 nyalakan led di PORC.7
delay_ms(500); // tunda 0.5 detik
}; // <------sampai disini program diulangi lg dari while (1)
};// <------end void main.
/*
Catatan:
dalam bahasa pemrograman C setiap menulis pernyataan harus diakhiri dengan tanda ” ; ”.
DDR adalah register untuk mengatur i/o sebagai input atau output.
Cara penulisan : DDR<NAMAPORT> atau DDR<NAMA PORT>.<NOMOR PORT>
CONTOH: DDRA=0x0f; ß- artinya (PORTD.0 s/d PORTD.3 = sebagai output.
dan PORTD.4 s/d PORTD.7 = sebagai input).
jika ada yang sebagai input, kita tambahkan perintah PORT di bawahnya yang nilainya kebalikan dari DDR, untuk mengaktifkan resistor pull-up internal.
CONTOH: DDRA=0x0f; CONTOH LAGI: DDRA.1=0; lagi : DDRC=0b01001001;
PORTA=0xf0; PORTA.1=1; PORTC=0b10110110;
Perintah PORTC digunakan untuk akses keseluruhan (8 bit PORTC). Jika satu port saja cara penulisan: PORT<NAMA PORT>.<NOMOR PORT>
CONTOH : PORTA.1=0; ß- Artinya keluarkan logika 0 di PORTA.1 saja.
PORTD=0xf0; ß- artinya keluarkan Ob11110000 di PORTD.
(PORTD.0 s/d PORTD.3 = 0 dan PORTD.4 s/d PORTD.7 = 1).
Untuk input :
PIN < NAMA PORT > atau PIN < NAMA PORT >.< NOMOR PORT >
CONTOH: data=PIND; ß- Artinya variabel data bernilai dari semua PORTD.
data=PIND.0; ß- artinya variable data bernilai PIND.0 saja.
*/
Build program diatas, kemudian di coba / disimulasikan.
Bagai mana mengubah arah nyalanya led? Misal ini menyala kekanan bagaimana supaya menyala kekiri?.. nah lo.. bingung?.