Selasa, 20 September 2011

Pemograman Bahasa C Pada Mikrokontroler AVR ATMega

Pemrograman Bahasa C pada Mikrokontroler AVR ATMega 8535 by. Sukandar S.
Referensi :
Nana Suryana, S.Pd : SMTAVR V2.0 TRAINER MIKROKONTROLER ATMEGA 8535


BAGIAN 1
1. MINIMUM SYSTEM ATMEGA 8535

Gambar 1. Minimum System ATMEGA 8535


2. DIGITAL INPUT
Modul digital input ini terdiri dari delapan buah push button aktif low dengan logik default high. Push button dihubungkan dengan resistor Pull Up, sehingga ketika push button tidak ditekan bit pada PORTx berlogik satu (1), dan ketika push button ditekan bit pada PORTx berlogik nol (0). PORTx yang dimaksud yaitu salah satu dari PORTA, PORTB, PORTC dan PORTD yang digunakan sesuai dengan tuntutan sistem yang kita bangun.
Gambar 2. Skema Digital Input

3. DIGITAL OUTPUT
Modul digital output ini terdiri dari delapan buah LED aktif low dan satu buah buzer aktif low. LED akan menyala ketika data yang dikeluarkan dari mikrokontroler berlogik 0, demikian juga dengan buzer, akan berbunyi ketika diberi logik 0.

Gambar 3. Skema Digital Output


BAGIAN II
MIKROKONTROLER ATMEGA 8535
A. Pendahuluan
Mikrokontroller adalah piranti elektronik berupa IC (Integrated Circuit) yang memiliki kemampuan manipulasi data (informasi) berdasarkan suatu urutan instruksi (program) yang dibuat oleh programmer. Mikrokontroller merupakan contoh suatu sistem komputer sederhana yang masuk dalam kategori embedded komputer. Dalam sebuah struktur mikrokontroller akan kita temukan juga komponenkomponen seperti: processor, memory, clock dll.
Atmega 8535/16/32 merupakan mikrokontroler CMOS 8 bit yang dibangun dengan arsitektur AVR enhanced RICS. Dengan eksekusi instruksi dalam satu siklus clock.
Pada modul ini dipilih mikrokontroller jenis ATMEL AVR RISC dengan pertimbangan sebagai berikut:
• ATMEL AVR RISC memiliki fasilitas dan kefungsian yang lengkap dengan harga yang
relatif murah.
• Kecepatan maksimum eksekusi instruksi mikrokontroller mencapai 16 MIPS (Million
Instruction per Second), yang berarti hanya dibutuhkan 1 clock untuk 1 eksekusi
instruksi.
• Konsumsi daya yang rendah jika dibandingkan dengan kecepatan eksekusi instruksi.
• Ketersediaan kompiler C (CV AVR) yang memudahkan user memprogram menggunakan
bahasa C.


Berikut ini tabel perbandingan kecepatan processor dan efisiensi eksekusi beberapa mikrokontroller:

Dari tabel diatas dapat dilihat, ketika bekerja dengan kecepatan clock yang sama AVR 7 kali lebih cepat dibandingkan dengan PIC16C74, 15 kali lebih cepat daripada 68 HC11, dan 28 kali lebih cepat dibanding 8051. Dari kemampuan dan fasilitas yang dimiliki, AVR RISC cocok dipilih sebagai mikrokontroller untuk membangun bermacam-macam aplikasi embedded sistem. Dalam modul trainer ini dipilih salah satu jenis AVR RISC yaitu ATmega 8535.

B. Fitur ATmega8535
ATmega8535 memiliki fitur sebagai berikut :
• Saluran I/O sebanyak 32 buah, yaitu PORTA, PORTB, PORTC dan PORTD
• 8 kanal ADC dengan resolusi 10 bit
• 3 buah Timer/Counter
• Watchdog timer dengan oscilator internal
• SRAM sebesar 512 byte
• Memori flash sebesar 8k
• Unit interupsi internal dan eksternal
• Port antarmuka SPI
• EEPROM sebesar 512 byte
• Antarmuka komparator analog
• Port USART untuk komunikasi serial


C. Konfigurasi Pin ATmega8535
ATmega 8535 memiliki 40 pin kaki, berikut skema kaki ATmega8535,

Fungsi Pin
• VCC merupakan pin masukan untuk catu daya
• GND merupakan pin ground
• PORTA(PA0..PA7) merupakan pin I/O dua arah dan pin masukan ADC
• PORTB(PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus(timer/counter,
komparator analog dan SPI)
• PORTC(PC0..PC7) merupakan pin I/O dua arah dan fungsi khusus (TWI, komparator
analog dan timer oscilator)
• PORTD(PD0..PD7) merupakan pin I/O dua arah dan fungsi khusus (komparator analog,
interupsi eksternal dan komunikasi serial)
• RESET merupakan pin yang digunakan untuk me-reset mikrokontroler
• XTAL1 dan XTAL2 merupakan pin masukan clock eksternal
• AVCC merupakan pin masukan tegangan untuk ADC
• AREF merupakan pin masukan tegangan referensi ADC

D. Organisasi memori
ATMega8535 memiliki ruang pengalamatan memori data dan memori program yang terpisah. Sebagai tambahan, ATmega8535memiliki fitur suatu EEPROM Memori untuk penyimpanan data.

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 alamat terbawah, yaitu $00 sampai $1F. Sementara itu, register khusus untuk menangani I/O dan control terhadap mikrokontroler menempati 64 alamat berikutnya, yaitu mulai dari $20 hingga $5F. Register tersebut merupakan register yang khusus digunakan untuk mengatur fungsi terhadap berbagai peripheral mikrokontroler, seperti kontrol register, timer/counter, fungsi–fungsi I/O, dan sebagainya. Alamat memori berikutnya digunakan untuk SRAM 512 byte, yaitu pada lokasi $60 sampai dengan $25F. Konfigurasi memori data ditunjukkan pada gambar di bawah ini.

Memori Program
ATmega8535 berisi 8K bytes On-Chip di dalam sistem Memori flash Reprogrammable untuk penyimpanan program. Karena semua AVR 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.

E. Port Sebagai Input / Output Digital
ATmega8535 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD. empat port tersebut merupakan jalur bi-directional 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 pullup akan diaktifkan. Untuk mematikan resistor pullup, 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.
Konfigurasi Pin Port


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).

F. Mengakses PORT


Menyalakan LED di PORTC
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 Program :
1. Menyalakan LED berkedip-kedip selama 1 detik
#include
#include
void main(void)
{
DDRA=0xFF; //Port A sebagai output
//Aplikasi lampu nyala-padam 8 buah
//masing-masing 1 detik
while (1)
{PORTA=0xFF; // lampu padam
delay_ms(1000); // jeda 1 detik
PORTA=0x00; // lampu nyala
delay_ms(1000); } // jeda 1 detik
}

2. LED menyala berjalan
#include
#include
void main()
{
DDRA=0xFF;//Port A sebagai output
while (1)
{PORTA=0b01111111; delay_ms(100);
PORTA=0b10111111; delay_ms(100);
PORTA=0b11011111; delay_ms(100);
PORTA=0b11101111; delay_ms(100);
PORTA=0b11110111; delay_ms(100);
PORTA=0b11111011; delay_ms(100);
PORTA=0b11111101; delay_ms(100);
PORTA=0b11111110; delay_ms(100);}
}

Rabu, 15 Juni 2011

Bahasa Assembly

Bahasa assembly adalah bahasa level rendah dari bahasa pemograman.
Suatu simbol-simbol yang merepresentasikan bahasa mesin (machine language) dari suatu prosessor. Assembly language ini diubah menjadi bahasa mesin melalui assembler. Biasanya setiap baris dari kode bahasa ini merupakan satu instruksi untuk mesin. Pemrograman dalam bahasa mesin ini memakan waktu cukup lama dibandingkan dengan bahasa pemrograman lainnya, dan mudah terjadi kesalahan-kesalahan di dalamnya, tetapi cara ini sangat tepat apabila dilihat efesiensi penggunaan resource yang ada pada mesin.

Selasa, 07 Juni 2011

Soal & Jawab Mikrokontroler

SOAL -SOAL :

1. Sebutkan dan Jelaskan perbedaan antara Mikroprosesor, Mikrokontroler dan Mikrokomputer serta berikan contoh. (20%)
2. Konversikan bilangan dibawah ini (gunakan rumus atau cara konversi, bukan langsung hasil) : (30%)
a. 2510 = …….2
b. 3310 = ……..8
c. 24310 = …..16
d. 110012 = ……10
e. 1101112 = …..8
f. 111000102 = …..16
g. C816 = ……10
h. B716 = ……2
i. 718 = …..10
j. 578 = …..2

3. 1. Buat FlowChart sesuai deskripsi di bawah ini (20% )
Bila tombol input 1h dan input 2h di tekan (ON) maka lampu output 2h akan OFF tapi bila salah satu input 1h or 2h tidak ditekan (OFF) lampu nyala.

2. Buatlah program assembly dari soal no 1. (30%)

Jawab :
1. Perbedaan antara Mikroprosesor, Mikrokomputer dan Mikrokontroler adalah :
Mikroprosesor adalah bagian CPU (central processing unit) ) terdiri dari dua bagian, yaitu unit pengendali (control unit) serta unit aritmatika dan logika (ALU).dari sebuah komputer
Contoh 8088, 80X86 adalah suatu mikroprosesor.
Bila sebuah mikroprosesor dikombinasikan dengan I/O dan memori (RAM/ROM), akan dihasilkan sebuah mikrokomputer.
Contoh : Destop, Laptop. Untuk digunakan secara umum (general)
Mikrokontroler adalah sebuah sistem microprosesor di mana di dalamnya sudah terdapat CPU, ROM, RAM, I/O, Clock dan peralatan internal lainnya yang sudah saling terhubung dan terorganisasi (teralamati) dengan baik oleh pabrik pembuatnya dan dikemas dalam satu chip yang siap pakai.
Contoh : AT89C51/52, AT89S51/52, AVR ATMEGA 8/16/32/64/8535. Untuk digunakan pada suatu aplikasi tertentu (khusus).
Diantaranya yang terkenal ialah dari Intel, Maxim, Motorolla , dan ATMEL. Beberapa seri mikrokontroler yang digunakan secara luas ialah 8031, 68HC11, 6502 , 2051 dan 89S51. Mikrokontroler yang mendukung jaringan komputer seperti DS80C400 tampaknya akan menjadi primadona pada tahun-tahun mendatang . Untuk mencoba kit mikrokontrolerDT51, SMART52 berbasiskan 89S52 , SmartAVR

2. Konversi bilangan
a. 2510 = …….2
25/2 = 12 + sisa 1
12/2 = 6 + sisa 0
6/2 = 3 + sisa 0
3/2 = 1 + sisa 1
2/2 = 0 + sisa 1
Jadi ( 25 )10 = ( 11001 )2

b. 3310 = ……..8
33/8 = 4 + 1
4/8 = 0 +4
Jadi 3310 = 418

c. 24310 = …..16
243/16 = 15 sisa 3
15/16 = 0 sisa 15 = F
Jadi 24310 = F316

d. 110012 = ……10
1 x 20 = 1
0 x 21 = 0
0 x 22 = 0
1 x 23 = 8
1 x 24 = 16
-------
2510
Jadi 110012 = 2510
e. 1101112 = …..8
111 = 7
110 = 6
Jadi 1101112 = 678
f. 111000102 = …..16
0010 = 2
1110 = 14 = E
Jadi 111000102 = E216
g. C816 = ……10
8 x 160 = 8
C=12 x 161 = 192
-----
20010
Jadi C816 = 20010
h. B716 = ……2
716 = 710 = 01112
B16 = 1110 = 10112
Jadi B716 = 101101112
i. 718 = …..10
1 x 80 = 1
7 x 81 = 56
---
5710
Jadi 718 = 5710
j. 578 = …..2
7 = 1112
5 = 1012
Jadi 578 = 1011112


3. FlowChart
Bila tombol input 1h dan input 2h di tekan (ON) maka lampu output 2h akan OFF tapi bila salah satu input 1h or 2h tidak ditekan (OFF) lampu nyala




4.Bahasa Assembly
$mod51
ORG 4000H ; Bit 1 dan Bit 2 ON = 0, Bit 1 or Bit 2 Off = 1 (02h)
MOV A,#089H
MOV DPTR,#2003H
MOVX @DPTR,A
;
START: MOV DPTR,#2002H ;Input PortC
MOVX A,@DPTR
CJNE A,#003H,START1
JMP STOP
START1: MOV DPTR,#2002H ; Input PortC
MOVX A,@DPTR
CJNE A,#001H,START2
JMP ON
START2: MOV DPTR,#2002H ; Input PortC
MOVX A,@DPTR
CJNE A,#002H,STOP
ON:
MOV A,#001H
MOV DPTR,#2000H
MOVX @DPTR,A
JMP START
STOP:
MOV A,#000H
MOV DPTR,#2000H
MOVX @DPTR,A
JMP START
END


Praktek :
1.Bila salah satu Saklar: Saklar1 (01H) atau Saklar2 (02H) ditekan lampu nyala (08H) dan bila kedua saklar ditekan atau tidak ditekan lampu padam (PORT A Input DAN port B Output).
Program Assembly:
$mod51
ORG 4000H ; Saklar1 (01H) atau Saklar2 (02H) lampu nyala (08H)
; Kedua saklar ditekan atau tidak ditekan Lampu padam
MOV A,#090H ; Port A = input, Port B = Output
MOV DPTR,#2003H
MOVX @DPTR,A

START: MOV DPTR,#2000H ;Input PortA
MOVX A,@DPTR
CJNE A,#001H,START1
JMP NYALA
START1: MOV DPTR,#2000H ; Input PortA
MOVX A,@DPTR
CJNE A,#002H,START2
JMP NYALA
START2: MOV DPTR,#2000H ; Input PortA
MOVX A,@DPTR
CJNE A,#003H,START
JMP STOP
NYALA:
MOV A,#008H
MOV DPTR,#2001H
MOVX @DPTR,A
JMP START
STOP:
MOV A,#000H
MOV DPTR,#2001H
MOVX @DPTR,A
JMP START
END

2.Pada saat tombol 3(04h) ditekan lampu Hidup (00Ah), saat tombol 2 (02h) ditekan Lampu (00Ah) padam, Jika tombol 1 (01h) ditekan lampu Hidup (0A0h), jika tombol 2(02h) ditekan lampu (0A0h) padam. Dengan Port A sebagai input, Port C sebagai Output.

Program Assembly:
$MOD51
ORG 4000H
MOV A,#090H ; Port A = input, Port C =Output
MOV DPTR,#2003H
MOVX @DPTR,A
START:
MOV DPTR,#2000H ;Saat Tombol 3(04H) ditekan Led (00AH) ON
MOVX A,@DPTR
CJNE A,#004H,START
MOV A,#00AH
MOV DPTR,#2002H ;Output PortC = 00AH
MOVX @DPTR,A
;
STOP:
MOV DPTR,#2000H ;Led OFF saat tombol 2 (002H) ditekan
MOVX A,@DPTR
CJNE A,#002H,STOP
MOV A,#000H
MOV DPTR,#2002H
MOVX @DPTR,A
;
START1:
MOV DPTR,#2000H ;Saat TOmbol 1 (001H) ditekan Led ON
MOVX A,@DPTR
CJNE A,#001H,START1
MOV A,#0A0H
MOV DPTR,#2002H ;Output PortC= 0A0H
MOVX @DPTR,A
;
STOP1:
MOV DPTR,#2000H ;Led OFF saat tombol 2 (002H) ditekan
MOVX A,@DPTR
CJNE A,#002H,STOP1
MOV A,#000H
MOV DPTR,#2002H
MOVX @DPTR,A
JMP START
END

3. Jika input saklar 1 (01h) ditekan hitung A0h / 02h bila hasilnya adalah 50h maka output lampu led pada port A (A0h) akan Nyala, Jika input saklar 2 (02h) ditekan maka hitung 28h x 02h bila hasilnya adalah 50h Lampu Port A (0Ah) akan Nyala. Pada saat saklar tidak ditekan semua lampu led mati.

Program Assembly :
;-------------------------------------------------------------------------;
;Jika input 01h ditekan hitung A0h/02h jika = 50h maka lampu led on 00Ah;
;Jika input 02h ditekan hitung 28hx02h jika = 50h maka lampu led on 0A0h;
;-------------------------------------------------------------------------;
$MOD51
ORG 4000H
MOV A,#089H
MOV DPTR,#2003H
MOVX @DPTR,A
;
START:
MOV DPTR,#2002H ; INPUT PORTc
MOVX A,@DPTR
CJNE A,#001H,START1
MOV A,#0A0h
MOV B,#002h
DIV AB
CJNE A,#050H,START
MOV A,#00AH
MOV DPTR,#2000H
MOVX @DPTR,A
;
START1:
MOV DPTR,#2002H ; INPUT PORTc
MOVX A,@DPTR
CJNE A,#002H,START
MOV A,#028H
MOV B,#002H
MUL AB
CJNE A,#050H,START1
MOV A,#0A0H
MOV DPTR,#2000H
MOVX @DPTR,A
JMP START
END

Minggu, 29 Mei 2011

Mikrokontroller

PERANGKAT KERAS MIKROKONTROLER
Apa perbedaan antara Mikrokomputer?, Mikroprosesor? Dan Mikrokontroler?.
Suatu Mikroprosesor adalah bagian CPU (central processing unit) dari sebuah komputer, tanpa memori, I/O, dan periferal yang dibutuhkan oleh suatu sistem lengkap. Contoh 8088, 80X86 adalah suatu mikroprosesor. Untuk dapat bekerja mikroprosesor membutuhkan perangkat pendukung yang dapat berupa RAM, ROM dan I/O.
Bila sebuah mikroprosesor dikombinasikan dengan I/O dan memori (RAM/ROM), akan dihasilkan sebuah mikrokomputer.
Pada kenyataannya mengkombinasikan CPU dengan memori I/O dapat juga dilakukan dalam level chip. Yang menghasilskan single chip mikrocomputer (SCM) untuk membedakannya dengan mikrokomputer. Selanjutnya SCM disebut mikrokontroler.
Perbedaan yang menonjol antara mikrokomputer dibandingkan dengan SCM adalah pada penggunaan perangkat masukan/keluaran dan juga media penyimpanan program. Mikrokomputer menggunakan disket atau tape (harddisk, flash dll) sebagai media penyimpan program sementara mikrokontroler menggunakan EPROM sebagai media penyimpan programnya.
Diantara keuntungan pemakaian mikrokontroler dibandingkan dengan mikroprosesor adalah pada mikrokontroler sudah terdapat RAM dan peralatan I/O.

1. Perlengkapan dasar Mikroprosesor/Mikrokontroler
CPU (Central Processing Unit)
Unit pengelolah pusat (CPU) terdiri dari dua bagian, yaitu unit pengendali (control unit) serta unit aritmatika dan logika (ALU).
Fungsi utama unit pengendali adalah mengambil, mengkode dan melaksanakan urutan instruksi sebuah program yang tersimpan dalam memori. Unit pengendali mengatur urutan operasi seluruh sistem. Unit ini juga menghasilkan dan mengatur sinyal pengendali yang diperlukan untuk menyerempakkan operasi, juga aliran dan instruksi program.
Unit pengontrol mengendalikan aliran informasi pada bus data dan bus alamat, dilanjutkan dengan menafsirkan dan mengatur sinyal yang terdapat pada bus pengendali.

Alamat
Apabila kita hendak mencari rumah teman kita, yang harus kita tanyakan adalah alamat rumah tersebut. Dengan berbekal alamat tersebut, kita dapat menemukan rumah teman tanpa tersesat. Demikian halnya dengan mikroprose¬sor/mikrokontroler. Apabila suatu alat dihubungkan dengan mikrokontroler tersebut, maka harus ditetapkan terlebih dahulu alamat (address) dari alat ter¬sebut. Hal ini bcrtujuan untuk menghindarkan terjadinya dua nilai yang bekerja secara bersamaan yang mungkin dapat menyebabkan kesalahan/kerusakan.
Alat penyimpan data (memori), baik RAM maupun ROM, juga mempunyai alamat. RAM 8 kbyte memiliki 8 x 1024 alamat, di mana setiap alamat dapat diisi data 1 byte.

Data
CPU mikrokontroler 8031 adalah prosesor 8 bit. Lebar bus data 8031 adalah 8 bit sehingga memerlukan 8 pena (DO...D7). Akan tetapi, karena jumlah pena mikrokontroler terbatas, pena data ini tidak dikeluarkan, hanya didalam chip. Lalu, bagaimana jika akan menggunakan bus data tersebut?
Pena untuk bus data dimultipleks dengan alamat.da Port O. Karena itu, Port 0 seringkali dituliskan sebagai ADO...AD7. Setiap bit data memiliki bobot masing-masing, tergantung pada letaknya. Sebagai contoh, untuk data 8 bit adalah
Data D7 D6 D5 D4 D3 D2 Dl DO
Bobot 80 40 20 10 08 04 02 01 (heksadesimal)
Karena menggunakan bus data yang lebarnya 8 hit, lebar bus data 8 bit juga harus digunakan oleh alat-alat lain, seperti EPROM, RAM, ADC, DAC, PIO, dan lain-lain.
Pengendali
Selain bus alamat dan bus data, mikroprosesor/mikrokontroler dilengkapi juga dengan bus pengendali (control bus). Guna pengendali ini adalah untuk me¬nyerempakkan operasi mikroprosesor/mikrokontroier dengan operasi rangkaian luar.

Pada mikrokontroler 89c51 terdapat beberapa pena yang berguna untuk me¬ngendalikan sistem, di antaranya adalah ALE, PSEN,'WR, RD, interupsi, dan lain-lain. Setelah mikrokontroler mengirim alamat (A0...A7) ke penahan alamat (latch 74LS373), pena pengendali ALE akan dibuat tinggi agar alamat tersebut ditahan. Setelah itu kaki PSEN akan rendah untuk dapat membaca EPROM Karena alamat (A0...A7) sudah ditahan olch latch, Port 0 sekarang dapat digu¬nakan untuk memasukkan data dari EPROM ke mikrokontroler.
Memori
Suatu sistem mikroprosesor/mikrokontroler maupun komputcr memerlukan memori untuk tempat menyimpan program/data. Pada mikroprosesor/mikro¬kontroler, tempat menyimpan program adalah pada ROM/EPROM. Sedangkan pada PC (komputer pribadi) program disimpan dalam disket atau hard disk.
Ada beberapa tingkatan memori, di antaranya adalah register internal, memo¬ri utama, dan memori massal (mass memory). Register internal adalah memori di dalam AEU. Waktu akses register sangat cepat, umumnya kurang dari 100 ns. Memori utama adalah memori suatu sistem. Ukurannya berkisar antara 4 kbyte sampai 64 kbyte. Waktu aksesnya lebih lambat dibandingkan register internal. yaitu antara 200 sampai 1000 ns. Memori massal dipakai untuk penyimpanan berkapasitas tinggi, biasanya berbentuk disket, pita magnetik, atau kaset.

RAM
RAM (random access memory) adalah memori yang dapat dihaca atau
Data dalam RAM akan terhapus (bersifat volatile) bila catu Jaya chhilangkan Oleh karena sifat RAM yang volatile ini, maka program mikroprosesor/mikro¬kontroler tidak disimpan dalam RAM. RAM hanya digunakan untuk menyim¬pan data sementara, yaitu data yang tidak begitu vital bila hilang akibat aliran daya terputus.
Ada dua teknologi yang dipakai untuk membuat RAM, yaitu RAM statik dan RAM dinamik. Dalam RAM statik, satu hit inforrnasi disimpan dalam sebuah flip-flop. RAM statik ini tidak memerlukan penyegar dan penanganannya juga tidak terlalu rurnit. Isi RAM tetap tersimpan selama daya diberikan. Dua contoh RAM statik adalah 6116 dan 6264 yang masing-masing berkapasitas 2 kb dan 8 kb.
RAM dinamik menyimpan bit informasi sebagai muatan. Sel memori ele¬menter dibuat dari kapasitansi gerbang-substrat transistor MOS. Keuntungan RAM dinamik adalah sel-sel memori yang lebih kecil sehingga memerlukan tempat yang lebih sempit, sehingga kapasitas RAM dinamik menjadi lebih bestir dibandingkan dengan RAM statik. Confoh RAM dinamik adalah 4116 yang berkapasitas 16384 x 1 bit

Kerugian penggunaan RAM dinamik adalah bertambahnya kerumitan pada papan memori, karena diperlukannya rangkaian untuk proses penyegaran (refresh). Proses penyegaran untuk kapasitor ini dilakukan setiap 1 atau 2 mili¬detik.

ROM
ROM (read only memory) merupakan memori yang hanya dapat dihaca. Data dalam ROM tidak akan terhapus meskipun cam daya diputuskan (bersifat non¬volatile). Karena sifatnya yang demikian, ROM digunakan untuk menyimpan program.
Ada beherapa tipe ROM, di antaranya adalah ROM mumi. PROM, EPROM, dan EAROM. ROM adalah memori yang sudah diprogram oleh pabrik. PROM dapat diprogram oleh pemakai, tetapi sekali diprogram tidak dapat diprogram Liking. Athenian!' lain adalah menggunakan EPROM (erasable programmable read only memory), yaitu PROM yang dapat diprogram ulang. Isi EPROM dihapus dengan menghadapkan jendela kaca di atas badan IC ke sinar ultra vio¬let (UV) selama 5 sampai 10 menit. lsi EPROM setelah dihapus akan berlogika 1
Pemrograman EPROM adalah mengubah logika 1 menjadi logika 0.


Input/Output
Untuk melakukan hubungan dengan piranti di luar sistem, dibutuhikan alat I/O (input/output). Sesuai dengan namanya, alat I/0 dapat menerima data dari mikroprosesor/mikrokontroler dan dapat pula memberi data ke mikroprose¬sor /mikrokontroler.
Ada dua macam perantara I/O yang dipakai. yaitu peranti untuk hubungan serial (UART) dan peranti untuk hubungan paralel (PIO). Pada mikrokontroler DT-51 89c51 kedua macam I/O tersebut sudah tersedia di dalamnya.
UART adalah perantara serial universal. UART (universal asynchronous receiver-transmitter) merupakan pengirim-penerima tak serempak universal. Kerja UART adalah mengubah masukan serial rnenjadi keluaran paralel dan mengubah masukan paralel menjadi keluaran serial.
PIO (paralel input output) merupakan perantara untuk hubungan data dalam format paralel. PIO adalah alat yang dapat diprogram dan menyediakan peran¬tara masukan dan keluaran dasar untuk data paralel 8 hit. PIO ini diberi nama tersendiri oleh pabriknya, misalnya PIA oleh Motorola. PPI oleh Intel. PDC oleh Rockwell. dan PIO oleh Zilog.