• Tidak ada hasil yang ditemukan

SISTEM CLOCK

Dalam dokumen BUKU AJAR SISTEM TERTANAM (Halaman 67-72)

Bahasa C Lanjut Pokok Bahasan:

SISTEM CLOCK

Mikrokontroler, mempunyai sistem pewaktuan CPU, 12 siklus clock. Artinya setiap 12 siklus yang dihasilkan oleh ceramic resonator maka akan menghasilkan satu siklus mesin. Nilai ini yang akan menjadi acuan waktu operasi CPU. Untuk mendesain sistem mikrokontroler kita memerlukan sistem clock, sistem ini bisa di bangun dari clock eksternal maupun clock internal. Untuk clock internal, kita tinggal memasang komponen seperti di bawah ini:

Gambar : Sistem Clock Organisasi memori AVR ATMega8535

AVR ATMega8535 memiliki ruang pengalamatan memori data dan memori program yang terpisah. Sebagai tambahan, ATmega8535memiliki fitur suatu EEPROM Memori untuk penyimpanan data. Semuatiga ruang memori adalah reguler dan linier.

Memori Data

Memori data terbagi menjadi 3 bagian, yaitu 32 register umum,64 buah register I/O,dan 512 byte SRAM Internal.Register keperluan umum menempati space data pada alamatterbawah, yaitu $00 sampai $1F. Sementara itu, register khusus unutk

menangani I/O dan kontrol terhadap mikrokontroler menempati 64alamat berikutnya, yaitu mulai dari $20 hingga $5F. Register tersebutmerupakan register yang khusus digunakan untuk mengatur fungsiterhadap berbagai peripheral mikrokontroler, seperti kontrol register,timer/counter, fungsi – fungsi I/O, dan sebagainya. Register khususalamat memori secara lengkap dapat dilihat pada Tabel 2.2. Alamatmemori berikurnya digunakan untuk SRAM 512 byte, yaitu pada lokasi$60 sampai dengan $25F. Konfigurasi memori data ditunjukkan pada

Bab 6. Pemrograman Mikrokontroler dengan Bahasa C 63

Gambar : Konfigurasi Data AVR AT Mega 8535 Memori Program

ATmega8535 berisi 8K bytes On-Chip di dalam sistem Memoriflash Reprogrammable untuk penyimpanan program. Karena semuaAVR instruksi adalah 16 atau 32 bits lebar, Flash adalah berbentuk 4K x16. Untuk keamanan perangkat lunak, Flash Ruang program memori adalah dibagi menjadi dua bagian, bagian boot program dan bagian aplikasi program dengan alamat mulai dari $000 sampai $FFF.Flash Memori mempunyai suatu daya tahan sedikitnya 10,000write/erase Cycles. ATmega8535 Program Counter (PC) adalah 12 bitlebar, alamat ini 4K lokasi program memori.

Gambar : Memori Program AT Mega 8535 Port Sebagai Input / Output Digital

ATmega8535 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD. Keempat port tersebut merupakan jalur bi-directional

Bab 6. Pemrograman Mikrokontroler dengan Bahasa C 64

dengan pilihan internal pull-up. Tiap port mempunyai tiga buah register bit,

yaitu DDxn, PORTxn, dan PINxn. Huruf „x‟ mewakili nama huruf dari port

sedangkan huruf „n‟ mewakili nomor bit. Bit DDxn terdapat pada I/O

address DDRx, bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada I/O address PINx. Bit DDxn dalam regiter DDRx (Data Direction Register) menentukan arah pin. Bila DDxn diset 1 maka Px berfungsi sebagai pin output. Bila DDxn diset 0 maka Px berfungsi sebagai pin input. Bila PORTxn diset 1 pada saat pin terkonfigurasi

sebagai pin input, maka resistor pull-up akan diaktifkan. Untuk mematikan resistor pull-up, PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port adalah tri-state setelah kondisi reset. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 0. Saat mengubah kondisi port dari kondisi tri- state (DDxn=0, PORTxn=0) ke kondisi output high (DDxn=1, PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisi pull-up enabled (DDxn=0, PORTxn=1)atau kondisi output low (DDxn=1, PORTxn=0). Biasanya, kondisi pull-up enabled dapat diterima sepenuhnya, selama lingkungan impedansi tinggi tidak memperhatikan perbedaan antara sebuah strong high driver

dengan sebuah pull-up. Jika ini bukan suatu masalah, maka bit PUD pada register SFIOR dapat diset 1 untuk mematikan semua pull-up dalam semua port. Peralihan dari kondisi input dengan pull-up ke kondisi output low juga menimbulkan masalah yang sama. Maka harus menggunakan kondisi tri- state (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0) sebagai kondisi transisi. Lebih detil mengenai port ini dapat dilihat pada manual datasheet dari IC ATmega8535.

Bab 6. Pemrograman Mikrokontroler dengan Bahasa C 65

Bit 2 – PUD : Pull-up Disable

Bila bit diset bernilai 1 maka pull-up pada port I/O akan dimatikan walaupun register DDxn dan PORTxn dikonfigurasikan untuk menyalakan pull-up (DDxn=0, PORTxn=1).

6.2. AKSES I/O PORT

Gambar : Menyalakan Lampu di PORT C

Prinsip kerja Hardware, yaitu saat kita memberikan logika 0 pada port C maka kita akan mendapatkan led menyala. Hal ini dikarenakan terjadi perbedaan tegangan pada kaki anoda dan katoda, saat kita memberikan logika 1, maka Led akan padam karena disana kita menggunakan conmmon anoda yang terhubung dengan VCC.

Contoh Programnya:

1. Program Menghidupkan LED di PORTC

//Prog1: Menghidupkan LED di PortC #include<mega8535.h>

void main() {

Bab 6. Pemrograman Mikrokontroler dengan Bahasa C 66

PORTC=0xF0; // keluarkan data F0 di PORT C (cat:F0=11110000) }

2. Program Menghidupkan LED

//Prog2: Menghidupkan LED1,3,5,7 #include<mega8535.h>

void main() {

DDRC=0xff; // inisialisasi PORTC sebagi keluaran PORTC=0xAA; // keluarkan data AA(hex) ke PORTC cat:

AA=10101010 }

3. Program LED Berkedip (memakai delay)

//Prog3: LED berkedip pada Port C #include<mega8535.h>

#include<delay.h> void main()

{

DDRC=0xff; // inisialisasi PORTC sebagi keluaran

while(1) // perulangan yang tidak pernah terpenuhi { PORTC=0x00; delay_ms(1000); PORTC=0xff; delay_ms(1000); } }

4. Program LED Berjalan

//prog4: LED berjalan #include<mega8535.h> #include<delay.h> void main() { char urutan[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; char i; DDRC=0xff;

Bab 6. Pemrograman Mikrokontroler dengan Bahasa C 67 PORTC=0Xff; while(1) { for(i=0;i<8;i++) { PORTC=urutan[i]; delay_ms(500); } } } Penjelasan :

 #include<mega8535.h> : Inisialisasi Mikrokontroller yang dipakai

 DDRn : Menyiapkan PORTn sebagai Keluaran (0xff) jika masukan (0x00)

 PORTn : Keluarkan data di PORTn  n : mewakili A,B,C,dan D (PORT)

Karena common Annoda maka pada saat logika “0”, lampu LED akan

menyala. Untuk penggunaan biner, maka penulisannya adalah 0b10101010. Untuk penggunaan Hexa, maka penulisannya adalah 0Xaa.

Dalam dokumen BUKU AJAR SISTEM TERTANAM (Halaman 67-72)