Jawabanmu

2014-04-19T23:11:38+07:00
Pada kali ini kita kan menggunakan mikrokontroler PIC16F877A yang termasuk mikrokontroler keluarga PICmicro buatan Microchip.Inc dimana dalam memprogramnya menggunakan bahasa tingkat tinggi yaitu bahasa C lebih tepatnya disini kita akan menggunakan software  MikroC Compiler.        Kita akan membuat program lampu lalu lintas tepatnya traffic light / lampu lalu lintas 3 simpang dimana algoritma pemrogramannya sama seperti kita memprogram dengan bascom avr, Tasm51 dan codevisionavr hanya saja disini mikroC compiler menggunakan bahasa c. Disini kita tidak perlu menginisialisasikan mikrokontroler apa yang kita pakai ataupun crystal yang kita gunakan karena kita tinggal mengatur pada project settingnya.Contoh TRISB = 0x00; yang artinya menset Port B sebagai output, ini berbeda dengan codevisionavr dimana code DDRB=0xFF yang kita gunakan untuk mengatur port B sebagai output. Dan kebaliknnya TRISB = 0xFF; artinya mengatur portB sebagai input. Di mikroC compiler sama seperti pada program-program lainnya dimana ketika kita mengcompile program yang kita buat jika terjadi kesalahan maka mikroC compiler akan memberitahu bahwa terjadi kesalahan/error.        Setelah itu program di compile dan disini kita akan menggunakan PIC simulator sebagai pengompile programnya lalu ekstensi .HEX yang didownloadkan pada PIC simulator dan di PIC simulator sudah tersedia visualisasi untuk led, seven segment, LCD, Osiloskope, function generator sehingga kita tinggal memanggil dan mensetnya dan jangan lupa untuk mengatur kembali crystal yang kita gunakan pada PIC simulator ini serta mengubah warna led sesuai dengan lampu merah yaitu merah,  kuning dan hijau. Dan setelah silahkan dirun dan lihat hasilnya.
Berikut Program Lampu lalu lintas dengan MikroC compiler pada PIC16F877A :

void main() {  TRISB = 0x00;            //PortB sebagai Output  TRISC = 0x00;            //PortC sebagai Output  TRISD = 0x00;            //PortD sebagai Output  do {       PORTB = 0x04;    PORTC = 0x01;    PORTD = 0x01;    Delay_ms(2000);
    PORTB = 0x02;    PORTC = 0x02;    PORTD = 0x01;    Delay_ms(1000);       PORTB = 0x01;    PORTC = 0x04;    PORTD = 0x01;    Delay_ms(2000);       PORTB = 0x01;    PORTC = 0x02;    PORTD = 0x02;    Delay_ms(1000);       PORTB = 0x01;    PORTC = 0x01;    PORTD = 0x04;    Delay_ms(2000);   
    PORTB = 0x02;    PORTC = 0x01;    PORTD = 0x02;    Delay_ms(1000);
  } while(1);}