Modul1
MODUL 1
Tujuan Mengenal Arsitektur dan sistem minimum Mikrokontroler
ATMega 8535. Mengenal Bahasa C dan software CodeVision AVR untuk
pemrograman Mikrokontroler ATMega 8535. Mampu membuat aplikasi
Input/Output dengan LED, push button dan seven segment.Dasar
Teori1.1 Mikrokontroler AVR ATMega 8535Mikrokontroler AVR memiliki
arsitektur RISC 8 bit, dimana semua instruksi dikemas dalam kode
16-bit (16-bits word) dan sebagian besar instruksi dieksekusi dalam
satu siklus clock, berbeda dengan instruksi MCS51 yang membutuhkan
12 siklus clock. Hal ini karena perbedaan arsitektur yang dipakai.
AVR menggunakan arsitektur RISC (Reduced Instruction Set Computing)
sedangkan MCS51 menggunakan arsitektur CISC (Complex Instruction
Set Computing). AVR secara umum dibagi menjadi empat kategori,
yaitu : ATtiny, AT90Sxx, ATmega, dan AT86RFxx. Yang membedakan
keempat kategori diatas secara mendasar ialah ukuran memori,
peripheral, dan fungsinya.Konfigurasi Pin dan Fitur-fitur ATMega
8535Konfigurasi pin ATMega 8535
Gambar 1.1 Konfigurasi pin ATMega 8535Fitur yang tersedia pada
ATMega 8535 adalah : Frekuensi clock maksimum 16 MHz Jalur I/O 32
buah, yang terbagi dalam Port A, Port B, PortC dan Port D CPU 8 bit
yang terdiri dari 32 register ADC 10 bit sebanyak 8 kanal input
Timer/Counter sebanyak 3 buah Watchdog Timer dengan osilator
internal SRAM sebesar 512 byte Memori Flash sebesar 8 Kbyte dengan
kemampuan read while write EEPROM sebesar 512 byte yang dapat
diprogram saat operasi Interrupt internal maupun eksternal Port
komunikasi SPI Komunikasi serial standar USART dengan kecepatan
maksimal 2,5 Mbps Analog ComparatorSistem minimum ATMega 8535Sistem
minimum adalah rangkaian minimum yang dibutuhkan suatu
mikrokontroler agar dapat bekerja. Rangkaian sistem minimum ATMega
8535 dapat dilihat pada gambar 1.2.
Gambar 1.2 Rangkaian sistem minimum ATMega 8535Sistem minimum
terdiri dari blok catu daya, blok oscillator, blok reset, dan
input/output dengan fungsi sebagai berikut : Catu daya : sebagai
sumber power rangkaian. Blok oscillator : sebagai pembangkit sinyal
clock (pewaktu). Blok reset : berfungsi untuk menghentikan kerja
dan mengembalikan stack pointer ke alamat paling awal. Blok reset
terdiri dari sebuah push button sebagai switch, resistor sebagai
pembatas arus,dan sebuah kapasitor sebagai filter. Input/output :
terdiri dari berbagai komponen tergantung kebutuhan penggunaan.
Misalnya push button, keypad dan potensiometer sebagai input serta
motor, LCD, atau sekedar LED sebagai output.
1.2 Pemrograman mikrokontroler dengan bahasa C menggunakan
CodeVision AVRBahasa C luas digunakan untuk pemrograman berbagai
jenis perangkat, termasuk mikrokontroler. Bahasa ini sudah
merupakan bahasa pemrograman tingkat tinggi sehingga memudahkan
programmer menuangkan algoritmanya. Struktur penulisan bahasa C
secara umum terdiri atas empat blok, yaitu header, deklarasi
variabel dan atau konstanta global, fungsi dan program
utama.Struktur PenulisanContoh
Header : berfungsi untuk memanggil library yang akan
digunakan.#include < [library1.h] > #include <
[library2.h] > #define [nama1] [nilai] ; #define [nama2] [nilai]
;
#include #include
Deklarasi variabel dan atau konstanta globalunsigned char dt,
xx;char buf[33];
Deklarasi fungsiFungsi dapat dideklarasikan di atas ataupun di
bawah program utama. Fungsi yang dideklarasikan di bawah (setelah)
program utama harus menggunakan prototype fungsi yang diletakkan
sebelum program utama.unsigned char lampu {PORTA=lampu &
0x3C;}
Program Utamavoid main(void){/* Deklarasi konstanta dan atau
variabel lokal */[Isi Program Utama]}void main (void){char
data;PORTA=0x00;DDRA=0xF0;While (1) { }}
1.3 Operasi Input OutputATMega 8535 mempunyai empat buah port,
yaitu PortA, PortB, PortC, dan PortD. Keempat port tersebut
merupakan jalur bi-directional dengan pilihan internal pull-up.
Setiap port memiliki tiga buah register I/O, yaitu DDRx, PORTx dan
PINx, dimana x mewakili nama port. DDRx (Data Direction Register) :
digunakan untuk memilih arah pin. Jika DDRx = 1 maka Pxn sebagai
pin output dan DDRx = 0 maka Pxn sebagai input. PORTx : digunakan
untuk jalur output atau untuk mengaktifkan resistor pullup.Tabel
1.1 Konfigurasi PORTDDRxnPORTxnI/OPull upMode Tegangan
Referensi
00InputNoPin Pxn sebagai output tanpa resistor pull up
01InputYesPin Pxn sebagai pin input dengan resistor pull up
10OutputNoOutput Low
11OutputNoOutput High
PINx : digunakan sebagai register input.
1.4 LEDLED (Light Emitting Diode) adalah komponen semikonduktor
yang dapat mengemisikan cahaya ketika dialiri arus listrik. LED
terdiri dari 2 kaki yaitu anoda dan katoda, dimana LED akan menyala
jika arus mengalir dari anoda ke katoda.
Gambar 1.3 Bentuk dan simbol LED1.5 Push ButtonAgar push button
dapat memberikan input pada mikrokontroler maka tombol dirangkai
sehingga member perbedaan kondisi pada pin-pinnya ketika tidak
ditekan dan saat ditekan. Pada saat tombol tidak ditekan maka arus
akan mengalir dari Vcc menuju ke port. Sedangkan saat tombol
ditekan, maka tombol akan terhubung ke ground sehingga kondisi push
button akan berlogika low.1.6 Seven SegmentPada dasarnya seven
segment merupakan rangkaian 7 buah LED. Terdapat 2 jenis rangkaian
dasar seven segment, yaitu seven segment Common Anoda (CA) dan
Common Cathoda (CC). Pada display common anoda, untuk mengaktifkan
karakter display seven segment diperlukan logika low (0) pada jalur
A-G dan dot, serta sebaliknya untuk display seven segment common
cathode.
Gambar 1.4 Rangkaian push button
Gambar 1.5 Rangkaian internal seven segmen CA dan CC
PraktikumProgram 1.1Prosedur : Rangkailah peralatan yang
diperlukan seperti pada gambar berikut :
Gambar 1.6 Projek 1.1
Bukalah Code Vision AVR, buat project baru tanpa menggunakan
code wizard, dan tuliskan program berikut :#include #include void
main(void){DDRA = 0xff;PORTA = 0xff;while (1) { PORTA = 0x0f;
delay_ms(300); PORTA = 0x00; delay_ms(300); PORTA = 0xff;
delay_ms(300); }}
Program 1.2Prosedur : Rangkailah peralatan seperti pada program
1, kemudian tuliskan program berikut :#include #include unsigned
char pola[8] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf,
0x7f};void main(void){DDRA = 0xff;PORTA = 0xff;while (1) { int i;
for (i=0;i> 8; TCNT1L=0xD23A & 0xff; data++; //setelah 1
detik increament data}
void main(void){TCCR1A=0x00; TCCR1B=0x05; TCNT1H=0xD2;
TCNT1L=0x3A; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00;
OCR1BH=0x00; OCR1BL=0x00; TIMSK=0x04; // Timer(s)/Counter(s)
Interrupt(s) initializationlcd_init(16); // LCD module
initialization #asm ("sei") // Global enable interrupts
while (1) { if (data==100) { lcd_clear(); data=0; }
lcd_gotoxy(0,0); lcd_putsf("Timer :"); itoa(data,temp);
//menampilkan di LCD lcd_gotoxy(0,1); lcd_puts(temp); };}
Program 4.2Prosedur : Rangkailah peralatan yang diperlukan
seperti pada gambar berikut :
Gambar 4.3 Projek 4.3 Tulis program berikut pada Code Vision AVR
:#include #include #asm .equ __lcd_port=0x15; #endasm #include
unsigned char temp[6];int data;
void main(void){TCCR0=0x06; TCNT0=0x00; OCR0=0x00;ACSR=0x80;
SFIOR=0x00; lcd_init(16); // LCD module initialization
while (1) { data=TCNT0;//hasil counter (TCNT0) dipindah ke data
if (data>=256) { lcd_clear(); } lcd_gotoxy(0,0);
lcd_putsf("*ELEKTRO-UNRIKA*"); itoa(data,temp); //menampilkan di
LCD lcd_gotoxy(0,1); lcd_puts(temp); };}
Program 4.3Prosedur : Rangkailah peralatan yang diperlukan
seperti pada gambar berikut :
Gambar 4.3 Projek 4.3 Tulis program berikut pada Code Vision AVR
:#include #include
#include #include
unsigned char dt=0x01;void InisialisasiINT0();void main (void){
DDRA=0xff; InisialisasiINT0(); #asm ("sei"); while(1) { PORTA=dt;
delay_ms(300); dt=dt