4 BAB 2 LANDASAN TEORI Dalam Proses perancangan Tugas akhir ini saya menggunakan berbagai Sumber Landasan Teori yang saling dihubungkan menjadi 1 kesatuan sehingga Rancangan tersebut dapat bekerja sesuai dengan apa yang diinginkan. Berikut ini akan saya jelaskan satu per satu dari Landasan Teori yang akan saya gunakan untuk Penulisan Tugas akhir ini. 2.1 Programmable Logic Control (PLC) PLC pada dasarnya adalah sebuah Komputer yang di design untuk dipakai di mesin Control, tetapi PLC bukan benar benar Komputer PC karena PLC dirancang untuk beroperasi di lingkungan Industri & disertai dengan Input / Output & bahasa pemrograman Control tersendiri. Pada awalnya PLC dipakai untuk menggantikan perangkat keras Relai Logika, tetapi karena perkembangan dari fungsi yang dipakai, sehingga aplikasi yangt dapat berjalan di PLC juga semakin Kompleks. Struktur PLC yang hampir sama dengan Komputer menyebabkan PLC mampu untuk menjalankan tidak hanya Relai Switching tetapi juga aplikasi lain seperti Timer, Counter, Comparator & lain lain. Keuntungan penggunaan PLC dibanding perangkat keras Relai Logika antara lain : • Ukuran yang Relatif lebih kecil. • Kemampuan untuk diprogram. • Relatif lebih murah. • Beberapa jenis PLC dapat diperbanyak Modul modulnya. • Dapat digunakan untuk memonitor jalannya Proses pengendalian yang sedang berlangsung. 2.1.1 Bagian Bagian PLC Pada dasarnya bagian bagian PLC dapat dibagi menjadi 4 bagian utama, yaitu : • CPU • Modul Input / Output • Power Supply • Programming Device 4 5 CPU adalah Otak dari sebuah Sistem PLC yang berfungsi untuk mengeksekusi Program yang ditanam oleh Programming Device, mengontrol Komunikasi antar Modul & melakukan perubahan Status I/O berdasarkan Program yang ada di Memori. Power Supply adalah Komponen PLC yang berfungsi untuk memberikan Arus Listrik ke Komponen PLC yang lain. Pada beberapa PLC arus listrik yang diberikan ke PLC dibedakan dengan arus listrik untuk Device External. Modul Input & Output adalah antarmuka PLC dengan Device External. Antarmuka ini mengkonversi sinyal yang diterimanya dari Device External menjadi Sinyal Logika yang dapat dimengerti Oleh CPU Programming Device adalah alat untuk membuat Program yang nantinya akan ditanam di Memori Program PLC. Programming Device dapat berupa Personal Komputer ataupun Hand Held unit. Untuk dapat membuat Program yang dapat menjalan sebuah Sistem PLC Ada 2 jenis PLC dilihat dari bentuknya yaitu PLC Modular & PLC Fixed seperti terlihat pada gambar dibawah ini Gambar 2.1.1 Jenis-jenis PLC PLC yang kecil & memiliki I/O yang sedikit biasanya hadir dalam bentuk PLC Fixed. PLC jenis ini hadir dalam 1 paket, semua komponennya seperti CPU, antarmuka I/O, Power Supply & Port Komunikasi terintegrasi di dalamnya. Kelebihan utama dari PLC ini adalah harganya yang lebih murah & biasanya jenis serta jumlah I/O dapat ditambah dengan membeli Unit tambahannya (Expander Unit). Kelemahan PLC ini adalah keterbatasan Fitur yang tersedia, Jumlah I/O yang sedikit & yang paling utama jika terjadi kegagalan dalam 1 komponen Sistemnya maka komponen yang lain juga akan mengalami hal yang sama. PLC Modular adalah PLC dengan Fitur yang Relatif lengkap, jumlah & jenis I/O yang banyak, Fungsi yang dapat dijalankan juga banyak. Pada PLC ini Komponen Komponen terpisah 5 6 menjadi Modul Modul. Setiap Modul memiliki fungsi tersendiri & terpisah dari Modul yang lain. Sebuah Back Plan mengkoneksikan Modul Modul tersebut secara Elektrik sehingga dapat berkomunikasi 1 sama lain. 2.1.2 Prinsip Operasi PLC PLC bekerja dengan melakukan Scanning Program secara Kontinyu berulang ulang. Proses Scanning terdiri dari 3 langkah yaitu : • Cek Status masukkan Modul Masukkan menerima Sinyal dari Device External & mengkonversikannya ke Sinyal Logika yang dapat dimengerti oleh CPU serta menyimpannya dalam Register Input. • Eksekusi Program CPU menjalankan Program Aplikasi Kontrol yang terdapat pada Memori dengan sinyal Logika yang ada di Register Modul Input sebagai masukkan dari Program tersebut. • Update Status keluaran Setelah mengeksekusi Program Aplikasi maka PLC akan mengupdate sinyal Logika pada Register Modul Keluaran. Modul keluaran mengkonversi Sinyal Logika yang ada di Register Keluaran menjadi Sinyal yang dapat dipakai untuk mengkontrol External Device yang lain. Setelah itu kembali lagi ke langkah pertama secara terus menerus & berulang ulang. Waktu untuk menjalankan ketiga Proses Scanning tersebut selama 1 kali disebut waktu Respon dari PLC. Waktu Respon ini berpengaruh terhadap kesalahan pembacaan Status input, semakin kecil waktu Respon PLC maka semakin kecil kemungkinan terjadi kesalahan pembacaan Status masukkan. Urutannya dapat dilihat pada Flowchart di bawah ini. 6 7 Gambar 2.1.2 Flow Chart PLC 2.1.3 Modul Output PLC PLC memiliki 3 jenis Modul Output yang dapat digunakan untuk keperluan yang berbeda beda tergantung kebutuhan. 3 jenis Modul Output tersebut adalah : o Output Relai o Output Transistor o Output TRIAC 2.2 Relai Relai adalah sebuah Switch yang dibentuk dari sebuah plat inti yang dapat menempel pada plat lainnya yang berada di sebelah kiri & kanannya. Posisi default dari kondisi plat inti adalah menempel pada Plat yang berada di sebelah kanannya karena terdapat sebuah pegas yang mendorongnya ke arah kanan. Plat sebelah kiri menempel sebuah kumparan yang dapat berfungsi sebagai Magnet penarik Plat Inti. Apabila kumparan tersebut mendapatkan tegangan & Ground maka kumparan tersebut akan menjadi Magnit yang akan menarik Plat inti untuk menempel ke plat sebelah kiri & tidak menempel ke plat yang sebelah kanan. Relai mempunyai 5 buah kaki dengan fungsi : 1. Coil1 yang harus mendapat +VCC 24 Volt. 7 8 2. Coil2 yang harus mendapat Ground. 3. Common yaitu kaki untuk dihubungkan pada arus input yang ingin dilewatkan pada switch. 4. Normally Open yaitu switch yang belum terhubung pada saat relai belum bekerja. 5. Normally Close yaitu switch yang sudah terhubung pada saat relai belum bekerja. Gb.2.2 Relay 2.3 Transistor Transistor memiliki 3 buah kaki yang masing – masing diberi nama : Emitor, Basis & Kolektor. Transistor terdiri dari 2 jenis yaitu : o Transistor NPN (Negatif-Positif-Negatif) yaitu jenis transistor yang akan bekerja apabila mendapat arus basis positif. Pada saat digunakan kaki emitor mendapat Ground apabila kaki kolektor kita berikan ke beban & sebaliknya jika kaki emitor yang kita berikan ke beban, kaki kolektor harus mendapat +VCC. o Transistor PNP (Positif-Negatif-Positif) yaitu jenis transistor yang akan bekerja apabila mendapat arus basis negative. Pada saat digunakan kaki emitor mendapatkan +VCC apabila kaki kolektor kita berikan ke beban & sebaliknya jika kaki emitor yang kita berikan ke beban, kaki kolektor harus mendapat Ground. Transistor yang digunakan pada Modul Output PLC adalah jenis yang NPN. Transistor ini digunakan sebagai saklar tetapi hanya untuk memberikan Logika 0 saja. Dibawah ini adalah Simbol dari Transistor NPNdan Transistor PNP. (a) 8 9 (b) Gambar 2.3 Blok diagram, skematik, dan simbol (a) dan (b)Transistor PNP Blok diagram, skematik, dan simbol (a)Transistor NPN dan (b)Transistor PNPSebagaimana terlihat pada Gambar 2.3 diatas, terminal-terminal Transistor disebut dengan Emiter (E), Basis (B), dan Kolektor (C). Terminal Emiter didop sangat banyak dengan bagian yang sedang, Basis didop dengan konsentrasi sedikit sekali dengan bagian yang paling tipis, dan Kolektor didop sedang dengan bagian yang besar. Pendopan dan pembagian ini akan bermanfaat untuk mendukung fungsi dan cara kerja Transistor. Pada Gambar.2.3 (c) adalah contoh Transistor yang digunakan adalah S9013 bertipe NPN dengan kapasitas Arus yang dapat melaluinya adalah 500 mA (c) Gambar 2.3 Transistor NPN Gambar 2.3 (d) dibawah ini adalah Urutan kaki yang terdapat pada Transistor S9013 (d) Gambar 2.3 Urutan kaki Transistor NPN pada Transistor S9013 9 10 2.4 TRIAC Gambar 2.4 Simbol TRIAC TRIAC BTA08 adalah sebuah DIAC yang dapat melewatkan tegangan 220 VAC apabila kaki Gate dari TRIAC tersebut mendapatkan Trigger berupa Tegangan 220 VAC yang akan dilewatkan dalam Phase yang sama. Arus yang dilewatkan dapat mencapai 8 Ampere sehingga Arus yang dilewatkan dapat langsung menggerakkan Beban. TRIAC dapat berfungsi sebagai Relai tetapi Khusus hanya untuk melewatkan Tegangan 220 VAC & akan mempunyai banyak sekali kelebihan dibandingkan Relai, yaitu : • Memiliki Umur yang jauh lebih panjang daripada Relai • Kecepatan On & Off dalam waktu yang jauh lebih cepat dibandingkan Relai • Penggunaan Arus yang lebih kecil dibandingkan Relai • Tidak mengeluarkan Bunyi seperti Relai Kekurangan dibandingkan Relai, yaitu : • Relai dapat melewatkan Tegangan AC maupun DC • Relai dapat diaktifkan menggunakan Tegangan DC kecil sehingga Rangkaian akan menjadi lebih Murah Gambar dibawah ini adalah merupakan Simbol dari TRIAC 2.4.a Opto Isolator MOC 3020 Gambar 2.4.a Opto Isolator MOC 3020 10 11 Opto Isolator adalah sebuah IC yang berisi sebuah INFRA LED & sebuah DIAC yang dapat melewatkan Tegangan 220 VAC apabila Kaki Anoda mendapat Tegangan + & Kaki Katoda mendapatkan Ground karena INFRALED tersebut akan memancarkan Sinar Infra Merahnya untuk mengaktifkan DIAC tersebut. Sifat asli dari DIAC adalah akan melewatkan Tegangan yang masuk jika berada diatas batas tegangan karakteristiknya dalam hal ini tegangan yang dapat dilewatkan adalah Tegangan AC. Tetapi di dalam Opto Isolator DIAC yang dimaksud akan dapat melewatkan tegangan apabila mendapatkan pancaran Sinar Infra Merah. Opto Isolator adalah sebuah Komponen yang dapat menghubungkan Tegangan 220 VAC dengan Tegangan DC kecil seperti 5 VDC dan lainnya. Sinyal yang keluar dari Mikrokontroller adalah Tegangan 5 VDC untuk Logika 1 & Ground untuk Logika 0 sehingga untuk dapat merubah Logika 1 tersebut menjadi 220 VAC harus menggunakan MOC3020 ini. MOC3020 pada gambar 2.4.b hanya dapat melewatkan Arus 220 VAC yang kecil saja, jika dilewatkan Arus yang besar komponen ini akan rusak sehingga biasanya Arus yang dilewatkan tidak langsung ke beban tetapi hanya untuk Trigger saja. Kita dapat melihat Simbol dari MOC 3020 dengan Gambar dibawah ini. Gambar 2.4.b Simbol MOC 3020 2.5 Mikrokontroller AT89S52 (MCS – 51 FAMILY) Meskipun termasuk tua, keluarga Mikrokontroler MCS51 adalah Mikrokontroler yang paling populer saat ini. Belakangan ini, pabrik IC Atmel ikut menambah anggota keluarga MCS51. Atmel merupakan pabrik IC yang sangat menguasai teknologi pembuatan Flash ROM, jadi sudah selayaknya kalau Atmel memasukkan Flash PEROM ke dalam mikrokontroler buatannya. Usaha Atmel ini ternyatakan bagaikan menambah ‘darah’ baru bagi keluarga MCS51, dengan adanya Flash ROM yang harganya murah maka tercapailah angan-angan banyak orang untuk membuat alat berbasis mikrokontroler yang sesederhana mungkin dan semurah mungkin. Produksi mikrokontroler MCS51 Atmel dibagi dua macam, yang berkaki 40 setara dengan 8051 yang asli, bedanya mikrokontroler Atmel berisikan Flash ROM dengan kapasitas berlainan. Bentuk dari Mikrokontroller dapat kita lihat pada gambar di bawah ini 11 12 Gambar 2.5 AT89S52 AT89S52 adalah sebuah Mikrokontroller dengan Fitur yang terdapat didalamnya adalah : 1. 8 Kilo Byte Reprogrammable Flash Memory 2. 256 Byte RAM Internal 3. 32 buah Programmable I/O Lines 4. 2 Buah 16 Timer 5. Full Duplex Serial Port 6. On chip Oscilator & Clock Circuit Dibawah ini adalah Datasheet dari AT89S52 PIN AT89S52 Berikut ini adalah Tabel yang berisi Deskripsi Pin dari kaki AT89S52 2.5.1. PIN DESKRIPSI Nomor Nama Pin Pin 20 Ground Alternatif Keterangan - Ground dari Power Supply 12 13 40 VCC - +5 VDC dari Power Supply Port I/O Bit 0 tanpa Internal Pull Up & juga berfungsi 39 P0.0 AD0 sebagai Address 0 & Data 0 jika menggunakan Memori External Port I/O Bit 1 tanpa Internal Pull Up & juga berfungsi 38 P0.1 AD1 sebagai Address 1 & Data 1 jika menggunakan Memori External Port I/O Bit 2 tanpa Internal Pull Up & juga berfungsi 37 P0.2 AD2 sebagai Address 2 & Data 2 jika menggunakan Memori External Port I/O Bit 3 tanpa Internal Pull Up & juga berfungsi 36 P0.3 AD3 sebagai Address 3 & Data 3 jika menggunakan Memori External Port I/O Bit 4 tanpa Internal Pull Up & juga berfungsi 35 P0.4 AD4 sebagai Address 4 & Data 4 jika menggunakan Memori External Port I/O Bit 5 tanpa Internal Pull Up & juga berfungsi 34 P0.5 AD5 sebagai Address 5 & Data 5 jika menggunakan Memori External Port I/O Bit 6 tanpa Internal Pull Up & juga berfungsi 33 P0.6 AD6 sebagai Address 6 & Data 6 jika menggunakan Memori External Port I/O Bit 7 tanpa Internal Pull Up & juga berfungsi 32 P0.7 AD7 sebagai Address 7 & Data 7 jika menggunakan Memori External 1 P1.0 - Port I/O Bit 0 dengan Internal Pull Up 2 P1.1 - Port I/O Bit 1 dengan Internal Pull Up 3 P1.2 - Port I/O Bit 2 dengan Internal Pull Up 4 P1.3 - Port I/O Bit 3 dengan Internal Pull Up 5 P1.4 - Port I/O Bit 4 dengan Internal Pull Up 6 P1.5 - Port I/O Bit 5 dengan Internal Pull Up 7 P1.6 - Port I/O Bit 6 dengan Internal Pull Up 8 P1.7 - Port I/O Bit 7 dengan Internal Pull Up 13 14 21 P2.0 A8 22 P2.1 A9 Port I/O Bit 0 dengan Internal Pull Up & juga berfungsi sebagai Address 8 jika menggunakan Memori External Port I/O Bit 1 dengan Internal Pull Up & juga berfungsi sebagai Address 9 jika menggunakan Memori External Port I/O Bit 2 dengan Internal Pull Up & juga berfungsi 23 P2.2 A10 sebagai Address 10 jika menggunakan Memori External Port I/O Bit 3 dengan Internal Pull Up & juga berfungsi 24 P2.3 A11 sebagai Address 11 jika menggunakan Memori External Port I/O Bit 4 dengan Internal Pull Up & juga berfungsi 25 P2.4 A12 sebagai Address 12 jika menggunakan Memori External Port I/O Bit 5 dengan Internal Pull Up & juga berfungsi 26 P2.5 A13 sebagai Address 13 jika menggunakan Memori External Port I/O Bit 6 dengan Internal Pull Up & juga berfungsi 27 P2.6 A14 sebagai Address 14 jika menggunakan Memori External Port I/O Bit 7 dengan Internal Pull Up & juga berfungsi 28 P2.7 A15 sebagai Address 15 jika menggunakan Memori External 10 P3.0 RXD 11 P3.1 TXD 12 P3.2 INT0 13 P3.3 INT1 14 P3.4 T0 15 P3.5 T1 Port I/O Bit 0 dengan Internal Pull Up & juga berfungsi sebagai Input Serial Port Port I/O Bit 1 dengan Internal Pull Up & juga berfungsi sebagai Output Serial Port Port I/O Bit 2 dengan Internal Pull Up & juga berfungsi sebagai Interrupt External 0 Port I/O Bit 3 dengan Internal Pull Up & juga berfungsi sebagai Interrupt External 1 Port I/O Bit 4 dengan Internal Pull Up & juga berfungsi sebagai Input External Timer 0 Port I/O Bit 5 dengan Internal Pull Up & juga berfungsi 14 15 sebagai Input External Timer 1 16 P3.6 WR 17 P3.7 RD Port I/O Bit 6 dengan Internal Pull Up & juga berfungsi sebagai External Data Memory Write Strobe Port I/O Bit 7 dengan Internal Pull Up & juga berfungsi sebagai External Data Memory Read Strobe Apabila diberikan Logika 1, semua Port akan berlogika 9 Reset - 1 & kembali membaca Instruksi Program dari Address yang paling awal Pada Saat mengakses Memori Internal Pin ini akan mengeluarkan Pulsa sebesar 1/16 dari Frekwensi 30 ALE PROG Oscilator yang sedang digunakan & Pada Saat mengakses Memori External berfungsi untuk me-Latch Low Byte Address 29 Pada saat mengeksekusi Program yang berada pada PSEN Memori External Pin ini akan aktif 2 kali setiap Cycle Jika mendapatkan Logika 1 Mikrokontroller akan mengakses 31 EA VPP Memori mendapatkan mengakses Logika Memori Internal, 0 tetapi pada Mikrokontroller External. Pada Saat saat akan Flash Programming Pin ini akan mendapatkan 12 VDC 19 XTAL1 - Input Oscilator 18 XTAL2 - Output Oscilator Tabel 2.5.1 Pin Deskripsi kaki AT89S52 2.5.2 Konstruksi AT89S52 Memori merupakan bagian yang sangat penting bagi mikrokontroler, oleh karena itu terdapat 2 macam memori yang sifatnya berbeda yaitu : o ROM (Read Only Memory) o RAM (Random Access Memory) Read Only Memory (ROM) adalah jenis Memory yang isinya tidak berubah meskipun IC kehilangan catu daya, dipakai untuk menyimpan program, begitu di-reset mikrokontroler akan langsung bekerja dengan program dalam ROM tersebut. Sesuai dengan keperluannya, dalam susunan MCS51 memori penyimpan program ini dinamakan sebagai MEMORI PROGRAM. 15 16 Random Access Memory (RAM) isinya akan sirna begitu IC kehilangan catu daya, dipakai untuk menyimpan data pada saat program bekerja. Di samping untuk data, RAM dipakai pula untuk Stack. RAM yang dipakai untuk menyimpan data ini disebut pula sebagai MEMORI DATA. Ada berbagai jenis ROM. Untuk mikrokontroler dengan program yang sudah baku dan diproduksi secara massal, program diisikan ke dalam ROM pada saat IC mikrokontroler dicetak di pabrik IC. Untuk keperluan yang jumlahnya tidak banyak biasanya tidak dipakai ROM, tapi dipakai ROM yang bisa di-isi-ulang atau Programable-Eraseable ROM (disingkat menjadi PEROM atau PROM). Dulu banyak dipakai UV-EPROM (Ultra Violet Eraseable Programable ROM) yang kemudian dinilai mahal harganya dan ditinggalkan setelah ada Flash PEROM yang harganya jauh lebih murah. Jenis memori yang dipakai untuk Memori Program AT89S52 adalah Flash ROM, program untuk mengendalikan mikrokontroler diisikan ke memori itu lewat bantuan alat yang dinamakan ISP Programmer. Memori Data yang disediakan dalam chip AT89S52 sebesar 256 byte, meskipun hanya kecil saja tapi untuk banyak keperluan memori kapasitas itu sudah mencukupi. AT89S52 dilengkapi UART (Universal Asynchronous Receiver/Transmiter) yang biasa dipakai untuk komunikasi data secara seri. Jalur untuk komunikasi data seri (RXD dan TXD) diletakan berhimpitan dengan P3.0 dan P3.1 di kaki nomor 10 dan 11, sehingga kalau sarana UART ini dipakai maka P3.0 dan P3.1 tidak lagi bisa dipakai untuk jalur input/output paralel. Timer 0 dan Timer 1 masing-masing adalah untaian pencacah biner 16 bit (16 bit binary counter) di dalam chip yang dipakai sebagai sarana input/output yang bekerja menurut fungsi waktu. Clock penggerak untaian pencacah ini bisa berasal dari oscilator kristal atau clock yang diumpan dari luar lewat T0 dan T1. T0 dan T1 berhimpitan dengan P3.4 dan P3.5, sehingga P3.4 dan P3.5 tidak bisa dipakai untuk jalur input/output paralel kalau T0 dan T1 dipakai. AT89S52 mempunyai 5 sumber pembangkit interupsi, 2 diantaranya adalah sinyal interupsi yang diumpankan ke kaki INT0 dan INT1, kedua kaki ini berhimpitan dengan P3.2 dan P3.3 sehingga tidak bisa dipakai sebagai jalur input/output paralel kalau INT0 dan INT1 dipakai untuk menerima sinyal interupsi. 3 sumber interupsi yang lain berasal dan sarana komunikasi data seri dan dari sistem Timer 0 dan Timer 1. Port 0,Port 1, Port 2, Port3, UART, Timer 0, Timer 1 dan sarana lainnya merupakan register yang secara fisik merupakan RAM khusus, yang ditempatkan di Special Function Register (SFR). 16 17 2.5.3 Oscilator Mikrokontroller AT89S52 membutuhkan Pulsa Generator untuk dapat membaca & menjalankan Instruksi yang terdapat pada Memori Internal maupun Memori External. Oleh karena itu Mikrokontroller membutuhkan sebuah Oscilator External yang dihasilkan oleh XTAL sebesar 11.0592 Mhz yang memiliki 2 buah kaki yang setiap kakinya di Seri dengan sebuah Kapasitor sebesar 33pf untuk dapat menyaring Pulsa yang keluar dari XTAL tersebut sehingga Pulsa yang dihasilkan menjadi lebih sempurna. Cara merangkai Oscilator tersebut berikut dengan Kapasitornya dapat kita lihat pada Gambar dibawah ini Gambar 2.5.3 Osilator External 2.5.4. Reset Pada saat pertama kali Mikrokontroller mendapatkan Power Supply, Mikrokontroller akan langsung membaca Instruksi yang terdapat pada Memori kemudian menjalankannya, tetapi Mikrokontroller akan memulai Proses membaca Memori tidak dari awal melainkan Random. Jadi kita harus memerintahkan Mikrokontroller untuk membaca Memori mulai dari Address yang paling awal yaitu dengan cara Mereset Mikrokontroller yaitu dengan memberikan Logika 1 ke kaki Reset dari Mikrokontroller. Setelah proses Reset selesai Mikrokontroller akan membaca Memori mulai dari Address yang paling awal. Untuk dapat melakukan Proses Reset secara Otomatis, kita harus memberikan Rangkaian Kapasitor ke kaki Reset terhadap VCC. Dengan begitu maka pada saat pertama kali kita memberikan Power Supply, +5VDC akan mengisi ke Kapasitor pada Kutub yang terhubung dengan +5VDC, sedangkan Kutub yang 1 lagi akan melakukan Proses Pembuangan dari Logika 1 menjadi 0. Logika 0 yang digunakan untuk pembuangan didapat dari Resistor yang terhubung ke Ground. Cara merangkai Rangkaian tersebut dapat kita lihat pada Gambar dibawah ini 17 18 Gambar 2.5.4 Rangkaian Reset 2.5.5. Dasar kerja program Program untuk mengendalikan kerja dari mikrokontroler disimpan di dalam memori program. Program pengendali tersebut merupakan kumpulan dari instruksi kerja mikrokontroler, 1 instruksi MCS51 merupakan kode yang panjangnya bisa satu sampai empat byte. Sepanjang mikrokontroler bekerja, instruksi tersebut byte demi byte diambil ke CPU dan selanjutnya dipakai untuk mengatur kerja mikrokontroler. Proses pengambilan instruksi dari memori program dikatakan sebagai ‘fetch cycles’ dan saat-saat CPU melaksanakan instruksi disebuat sebagai ‘execute cycles’. Semua mikrokontroler maupun mikroprosesor dilengkapi sebuah register yang berfungsi khsus untuk mengatur ‘fetch cycles’, register tersebut dinamakan sebagai Program Counter. Nilai Program Counter secara otomatis bertambah satu setiap kali selesai mengambil 1 byte isi memori program, dengan demikian isi memori program bisa berurutan diumpankan ke CPU. Saat MCS51 di-reset, isi Program Counter di-reset menjadi 0000. Artinya sesaat setelah reset isi dari memori program nomor 0 dan seterusnya akan diambil ke CPU dan diperlakukan sebagai instruksi yang akan mengatur kerja mikrokontroler. Dengan demikian, awal dari program pengendali MCS51 harus ditempatkan di memori nomor 0, setelah reset MCS51 menjalankan program mulai dari memori-program nomor 0000, dengan melakukan proses ‘fetch cycles’ dan ‘execute cycles’ terus menerus tanpa henti. Jika sarana interupsi diaktipkan, dan tegangan di kaki INT0 merubah dari ‘1’ menjadi ‘0’, maka proses menjalankan program di atas akan dihentikan sebentar, mikrokontroler melayani dulu permintaan interupsi, selesai melayani permintaan interupsi CPU akan melanjutkan mengerjakan program utama lagi. 18 19 Untuk melaksanakan hal tersebut, pertama-tama CPU menyimpan nilai Program Counter ke Stack (Stack merupakan satu bagian kecil dari data memori – RAM), kemudian mengganti isi Program Counter dengan 0003. Artinya MCS51 akan melaksanakan program yang ditempatkan di memori program mulai byte ke 3 untuk melayani interupsi yang diterima dari kaki INT0. Adalah tugas programer untuk mengatur agar program yang dipakai untuk melayani interupsi lewat INT0 diletakkan disitu. Selesai melayani interupsi, nilai Program Counter yang tadi disimpan ke dalam Stack akan dikembalikan ke Program Counter, dengan demikian CPU bisa melanjutkan pekerjaan di program Utama. Selain INT0, AT89S52 bisa menerima interupsi dari INT1, dari UART dan dari Timer. Agar permintaan interupsi itu bisa dilayani dengan program yang berlainan, maka masingmasing sumber interupsi itu mempunyai nomor awal program untuk layanan interupsi yang berlainan. Nomor-nomor awal tersebut digambarkan dalam Gambar di bawah ini. Gambar 2.5.5 Intrupsi Program 2.5.6. RAM dan Register dalam AT89S52 Bagi mereka yang sudah terbiasa memakai komputer, kapasitas Random Access Memory (RAM) yang dimiliki AT89S52 ‘mengerikan’ karena sangat sedikit, hanya 256 byte! Itupun 19 20 tidak semuanya bisa dipakai sebagai memori penyimpan biasa, lebih dari setengahnya merupakan memori dengan keperluan khusus yang biasa dikenal sebagai register. Meskipun demikian bagi mikrokontroler kapasitas itu sudah mencukupi. Dalam pengertian MCS51, Random Access Memory dalam chip AT89S52 adalah memori-data, yaitu memori yang dipakai untuk menyimpan data, sedangkan Flash PEROM merupakan memori penampung program pengendali AT89S52, dikenal sebagai memoriprogram. Karena kedua memori itu memang dibedakan dengan tegas, maka kedua memori itu mempunyai penomoran yang terpisah. Memori-program dinomori sendiri, pada AT89S52 mulai dari Address 0000H sampai 1FFFH. Sedangkan memori-data yang hanya 256 byte dinomori dari nomor 00H sampai FFH. Gambar 2.5.6 Denah Memori-Data Seperti terlihat dalam denah memori-data Gambar 3, memori-data dibagi menjadi dua bagian, memori nomor 00H sampai 7FH merupakan memori seperti RAM selayaknya meskipun 20 21 beberapa bagian mempunyai kegunaan khusus, sedangkan memori nomor 80H sampai FFH dipakai sangat khusus yang dinamakan sebagai Special Function Register (akan dibahas tersendiri dibagian lain). Memori-data nomor 00H sampai 7FH bisa dipakai sebagai memori penyimpan data biasa, dibagi menjadi 3 bagian: · Memori nomor 00H sampai 18H selain sebagai memori-data biasa, bisa pula dipakai sebagai Register Serba Guna (General Purpose Register). · Memori nomor 20H sampai 2FH selain sebagai memori-data biasa, bisa dipakai untuk menyimpan informasi dalam level bit. · Memori nomor 30H sampai 7FH (sebanyak 80 byte) merupakan memori-data biasa, bisa dipakai untuk menyimpan data maupun dipakai sebagai Stack. 2.5.7 Register Serba Guna Register Serba Guna (General Purpose Register) menempati memori-data nomor 00H sampai 18H, memori sebanyak 32 byte ini dikelompokkan menjadi 4 Kelompok Register (Register Bank), 8 byte memori dari masing-masing Kelompok itu dikenali sebagai Register 0, Register 1 .. Register 7 (R0, R1, R2, R3, R4, R5, R6 dan R7). Dalam penulisan program memori-memori ini bisa langsung disebut sebagai R0, R1, R2, R3, R4, R5, R6 dan R7, tidak lagi dengan nomor memori. Dengan cara ini instruksi yang terbentuk bisa lebih sederhana dan bekerja lebih cepat. Pengertian ini bisa diperjelas dengan contoh 2 instruksi berikut : MOV A,04H MOV A,R4 Instruksi pertama mempunyai makna isi memori-data nomor 4 di-copy-kan ke Akumulator A, sedangkan instruksi kedua artinya isi R4 di-copy-kan ke Akumulator A. Karena R4 menempati memori-data nomor 4, jadi kedua instruksi itu berakibat sama bagi Akumulator A. Tapi saat diterjemahkan ke kode mesin, intruksi pertama dirubah menjadi E5 04 (heksadesimal) dan instruksi kedua menjadi E6 (heksadesimal), jadi instruksi kedua lebih sederhana dari instruksi pertama. Selain itu, khusus untuk Register 0 dan Register 1 (R0 dan R1) masih punya mempunyai kemampuan lain, kedua register ini bisa dipakai sebagai register penampung alamat yang dipakai dalam penyebutan memori secara tidak langsung (indirect memori addressing), hal ini akan dibicarakan lebih lanjut di belakang. 21 22 Empat kelompok Register Serba Guna itu tidak bisa dipakai secara bersamaan, saat setelah reset yang aktip dipakai adalah Kelompok Register 0 (Register Bank 0). Kalau yang diaktipkan adalah Kelompok Register 1, maka yang dianggap sebagai R0 bukan lagi memori-data nomor 0 melainkan memori-data nomor 8, demikian pula kalau yang diaktipkan Kelompok Register 3 maka memori-data nomor 18H yang menjadi R0. Kelompok Register yang aktip dipilih dengan cara mengatur bit RS0 dan RS1 yang ada di dalam Register PSW (Program Status Word), hal ini akan dibicarakan lebih lanjut di bagian lain. 2.5.8. Memori level Bit Memori-data nomor 20H sampai 2FH bisa dipakai menampung informasi dalam level bit. Setiap byte memori di daerah ini bisa dipakai menampung 8 bit informasi yang masing-masing dinomori tersendiri, dengan demikian dari 16 byte memori yang ada bisa dipakai untuk menyimpan 128 bit (16 x 8 bit) yang dinomori dengan bit nomor 00H sampai 7FH. Informasi dalam level bit tersebut masing-masing bisa di-‘1’-kan, di - ‘0’-kan dengan instruksi. Pengertian di atas bisa dipikirkan seolah-olah MCS51 mempunyai jenis memori yang lain, tapi sesungguhnya kedua jenis memori itu tetap sama, hanya saja cara penyebutannya saja yang berlainan. Instruksi SETB 00H mengakibatkan memori-bit nomor 0 menjadi ‘1’, atau sama dengan membuat bit nomor 0 dari memori-data nomor 20H menjadi ‘1’, sedangkan bit-bit lainnya dalam memori nomor 20H tidak berubah nilai. Sedangkan instruksi CLR 7FH mengakibatkan memori-bit nomor 7FH menjadi ‘0’, satau sama dengan membuat bit nomor 7 dari memori-data nomor 2FH menjadi ‘0’, sedangkan bit-bit lainnya dalam memori nomor 2FH tidak berubah nilai. Pengertian ini dipertegas dengn intsruksi-instruksi berikut: MOV 21H,#0FH Sama dengan hasil kerja instruksi-instruksi berikut : SETB 08H SETB 09H SETB 0AH SETB 0BH CLR 0CH CLR 0DH CLR 0EH 22 23 CLR 0FH Instruksi MOV 21H,#0FH mempunyai makna mengisi memori-data nomor 21H dengan nilai 0FH (atau bilangan biner 00001111), berarti mengisi memori-bit nomor 0FH sampai 08H dengan bilangan biner 00001111 yang bisa dinyatakan dengan 8 baris instruksi berikutnya. Special Function Register (SFR) Register Khusus (SFR - Special Function Register) adalah satu daerah RAM dalam IC keluarga MCS51 yang dipakai untuk mengatur perilaku MCS51 dalam hal-hal khusus, misalnya tempat untuk berhubungan dengan port paralel P1 atau P3, dan sarana input/output lainnya, tapi tidak umum dipakai untuk menyimpan data seperti layaknya memori-data. Meskipun demikian, dalam hal penulisan program SFR diperlakukan persis sama dengan memori-data. Untuk mengisi memori-data nomor 60H dengan bilangan 0FH, instruksi yang dipergunakan adalah : MOV 60H,#0FH Sedangkan untuk memenyimpan 0FH ke Port 1 yang di SFR menempati memori-data nomor 90H, instruksi yang dipergunakan adalah : MOV 90H,#0FH Membandingkan kedua instruksi di atas bisa dimengerti dalam segi penulisan program SFR diperlakukan persis sama dengan memori-data. Meskipun demikian, dalam menyebut memori-data bisa dipakai dua cara, yakni penyebutan nomor memori secara langsung (direct memory addressing) dan penyebutan nomor memori secara tidak langsung (indirect memory addressing) lewat bantuan R0 dan R1. Tapi untuk SFR hanya bisa dipakai penyebutan nomor memori secara langsung (direct memory addressing) saja. Hal ini akan dibahas lebih lanjut di bagian lain. 2.5.9. Register Dasar MCS51 Untuk keperluan penulisan program, setiap mikroprosesor/mikrokontroler selalu dilengkapi dengan Register Dasar. Ada beberapa macam register merupakan register baku yang bisa dijumpai disemua jenis mikroprosesor/ mikrokontroler, ada register yang spesifik pada masing-masing prosesor. Yang termasuk Register Baku antara lain Program Counter, Akumulator, Stack Pointer Register, Program Status Register. MCS51 mempunyai semua register baku ini. Sebagai register yang khas MCS51, antara lain adalah Register B, Data Pointer High Byte dan Data Pointer Low Byte. Semua ini digambarkan dalam Gambar 4. 23 24 Di samping itu MCS51 masih mempunyai Register Serba Guna R0..R7 yang sudah disebut dibagian atas. Dalam mikroprosesor/mikrokontroler yang lain, register-register dasar biasanya ditempatkan ditempat tersendiri dalam inti prosesor, tapi dalam MCS51 register-register itu ditempatkan secara terpisah. · Program Counter ditempatkan ditempat tersendiri di dalam inti prosesor · Register Serba Guna R0..R7 ditempatkan di salah satu bagian dari memori-data · Register lainnya ditempatkan dalam Special Function Register (SFR). Gambar 2.5.9 Register Dasar Kegunaan dan pemakaian register-register dasar tersebut antara lain sebagai berikut: 2.5.9.1 Program Counter Program Counter (PC) dalam AT89S52 merupakan register dengan kapasitas 16 bit. Di dalam PC dicatat nomor memori-program yang menyimpan instruksi berikutnya yang akan diambil (fetch) sebagai instruksi untuk dikerjakan (execute). Saat setelah reset PC bernilai 0000h, berarti MCS51 akan segera mengambil isi memoriprogram nomor 0 sebagai instruksi. Nilai PC otomatis bertambah 1 setelah prosesor mengambil instruksi 1 byte. Ada instruksi yang hanya 1 byte, ada instruksi yang sampai 4 byte, dengan demikian pertambahan nilai PC setelah menjalankan instruksi, tergantung pada jumlah byte instruksi bersangkutan. 24 25 2.5.9.2. Akumulator Sesuai dengan namanya, Akumulator adalah sebuah register yang berfungsi untuk menampung (accumulate) hasil hasil pengolahan data dari banyak instruksi MCS51. Akumulator bisa menampung data 8 bit (1 byte) dan merupakan register yang paling banyak kegunaannya, lebih dari setengah instruksi-instruksi MCS51 melibatkan Akumulator. Instruksi-instruksi berikut memperjelas pengertian di atas : MOV A,#20H ADD A,#30H Instruksi pertama menyimpan nilai 20H ke Akumulator, instruksi kedua menambahkan bilangan 30H ke Akumulator, hasil penjumlahan sebesar 50H ditampung di Akumulator. Stack Pointer Register Salah satu bagian dari memori-data dipakai sebagai Stack, yaitu tempat yang dipakai untuk menyimpan sementara nilai PC sebelum prosesor menjalankan sub-rutin, nilai tersebut akan diambil kembali dari Stack dan dikembalikan ke PC saat prosesor selesai menjalankan subrutin. Stack Pointer Register adalah register yang berfungsi untuk mengatur kerja stack, dalam Stack Pointer Register disimpan nomor memori-data yang dipakai untuk operasi Stack berikutnya. 2.5.9.3. Program Status Word Program Status Word (PSW) berfungsi mencatat kondisi prosesor setelah melaksanakan instruksi. Pembahasan tentang PSW secara rinci akan dilakukan dibagian lain. Register B Merupakan register dengan kapasitas 8 bit, merupakan register pembantu Akumulator saat menjalankan instruk perkalian dan pembagian. DPH dan DPL Data Pointer High Byte (DPH) dan Data Pointer Low Byte (DPL) masing-masing merupakan register dengan kapasitas 8 bit, tapi dalam pemakaiannya kedua register ini digabungkan menjadi satu register 16 bit yang dinamakan sebagai Data Pointer Register (DPTR). Sesuai dengan namanya, Register ini dipakai untuk mengalamati data dalam jangkauan yang luas 25 26 2.5.9.4. Special Function Register (SFR) AT89S52 Random Access Memory (RAM) dalam AT89S52 hanya 256 byte, hanya setengahnya yang dipakai sebagai memori-data biasa, setengahnya lagi dipakai untuk register-register untuk mengatur perilaku MCS51 dalam hal-hal khusus, misalnya tempat untuk berhubungan dengan port paralel P1 atau P3, dan sarana input/output lainnya, tapi tidak dipakai untuk menyimpan data seperti layaknya memori-data. Meskipun demikian, dalam hal penulisan program SFR diperlakukan persis sama dengan memori-data. Nomor memori-data yang disediakan untuk Special Function Register mulai dari 80H sampai dengan FFH, area sebanyak 128 byte ini tidak semuanya dipakai, hal ini digambarkan dalam Denah Special Function Register. Masing-masing register dalam Special Function Register mempunyai nomor dan nama. Dianjurkan agar nomor-nomor yang tidak dipakai jangan dipergunakan, karena bisa mengakibatkan terjadinya sesuatu yang tidak terduga. Sebagian register dalam Special Function Register sudah dibicarakan sebagai Register Dasar, merupakan piranti dasar untuk penulisan program. Register-register dasar tersebut antara lain adalah Akumulator (ACC), Stack Pointer Register (SP), Program Status Register (PSW), Register B, Data Pointer High Byte (DPH) dan Data Pointer Low Byte (DPL). Di dalam area Special Function Register. Register-register ini diperlakukan sebagai memori dengan nomor yang sudah tertentu. Akumulator menempati memori-data nomor E0H, Stack Pointer Register menempati memori-data nomor 81H, Program Status Register ada di D0H, Register B di F0H, DPL di 82H dan DPH di 83H. Kemampuan MCS51 untuk menomori memori-data dalam level bit, dipakai juga dalam Special Function Register. Secara keseluruhan nomor bit yang disediakan dalam MCS51 sebanyak 256, nomor bit 0 sampai 127 sudah dipakai untuk nomor bit memori-data nomor 20H sampai 2FH, sisanya sebanyak 128 nomor dipakai di Special Function Register. Special Function Register yang bisa dinomori dengan nomor bit, adalah yang mempunyai nomor memori dengan digit heksadesimal kedua adalah 0 atau 8, misalnya nomor 80H, 88H, 90H, 98H..F0H dan F8H. Akumulator merupakan Special Function Register dengan nomor E0H, sehingga semua bit dalam Akumulator bisa di-nomor-i satu per satu. Dalam penulisan program bit 0 Akumulator bisa dituliskan sebagai A.0, bit 1 Akumulator ditulis sebagai A.1 dan seterusnya. Instuksi SETB A.0 mengakibatkan bit 0 dari Akumulator menjadi ‘1’ sedangkan bit-bit lainnya tidak 26 27 terpengaruh. Instruksi CLR A.6 mengakibatkan bit 6 dari Akumulator menjadi ‘0’ tapi tidak memengaruhi bit-bit yang lain. 2.5.10. Pengelompokan SFR Selain register yang berfungsi sebagai register dasar yang sudah dibicarakan diatas, register-register dalam SFR dipakai untuk mengatur Input/Output dari MCS51 yang dikelompokan menjadi : · Register Penampung Data Input/Output, misalnya data yang diisikan ke register P1 akan diteruskan (di-output-kan) ke Port 1 yang terdapat di kaki IC AT89S52. · Register Pengatur Input/Output dan Register Status Input/Output, misalnya register SCON dipakai untuk mengatur UART dan dipakai untuk memantau kondisi UART, register TCON dipakai untuk mengatur kerja Timer. Gambar 2.5.10 SFR AT89S52 27 28 2.5.10.1. Uraian Singkat SFR Berikut ini dibahas secara singkat fungsi dan sifat masing-masing register dalam Special Function Register, pembahasan secara rinci akan dilakukan dibagian lain. P1 (Port 1, nomor 90H, bisa dinomori dengan nomor bit): merupakan sarana input/output port 1, masing-masing bit dalam register ini setara dengan salah satu kaki IC AT89S52. Misalnya bit 3 dari register P1 terhubung ke kaki P1.3 (kaki nomor 15 AT89S52), instruksi SETB P1.3 mengakibatkan kaki nomor 15 tersebut menjadi ‘1’ dan instruksi CLR P1.3 akan membuatnya menjadi ‘0’. P3 (Port 3, nomor B0H, bisa dinomori dengan nomor bit): merupakan sarana input/output port 3, masing-masing bit dalam register ini setara dengan salah satu kaki IC AT89S52. Misalnya bit 5 dari register P3 terhubung ke kaki P3.5 (kaki nomor 9 AT89S52), instruksi SETB P3.5 mengakibatkan kaki nomor 9 tersebut menjadi ‘1’ dan instruksi CLR P3.5 akan membuatnya menjadi ‘0’. SBUF (Serial Buffer, nomor 99H): Register Serial Buffer (SBUF) dipakai untuk mengirim data dan menerima data dengan UART yang terdapat dalam IC AT89S52. Angka yang disimpan ke SBUF akan dikirim keluar secara seri lewat kaki TXD (kaki nomor 3 IC AT89S52). Sebaliknya data seri yang diterima di kaki RXD (kaki nomor 2 IC AT89S52) bisa diambil di register SBUF. Jadi SBUF akan berfungsi sebagai port output pada saat register ini diisi data, dan SBUF akan menjadi port input kalau isinya diambil. SCON (Serial Control, nomor 98H, bisa dinomori dengan nomor bit): register SCON dipakai untuk mengatur perilaku UART di dalam IC AT89S52, hal-hal yang diatur meliputi penentuan kecepatan pengiriman data seri (baud rate); mengakitpkan fasilitas penerimaan data seri (fasilitas pengiriman data seri tidak perlu di atur), disamping itu register ini dipakai pula untuk memantau proses pengiriman data seri dan proses penerimaan data seri. TL0/TH0 (Timer 0 Low/High, nomor 8AH/8CH): Kedua register ini bersama membentuk Timer 0, yang merupakan pencacah naik (count up counter). Perilaku kedua register ini diatur oleh register TMOD dan register TCON. Hal-hal yang bisa diatur antara lain adalah sumber clock untuk pencacah, nilai awal pencacah, bilamana proses pencacahan mulai atau berhenti, dan lain sebagainya. TL1/TH1 (Timer 1 Low/High, nomor 8BH/8DH): Kedua register ini bersama membentuk Timer 1, yang merupakan pencacah naik (count up counter). Perilaku kedua register ini diatur oleh register TMOD dan register TCON. Hal-hal yang bisa diatur antara lain adalah sumber clock untuk pencacah, nilai awal pencacah, bilamana proses pencacahan mulai atau berhenti, dan lain sebagainya. 28 29 TMOD (Timer Mode, nomor 89H): register TMOD dipakai untuk mengatur mode kerja Timer 0 dan Timer 1, lewat register ini masing-masing timer bisa diatur menjadi timer 16-bit, timer 13-bit, timer 8-bit yang bisa isi ulang secara otomatis, atau 2 buah timer 8 bit yang terpisah. Di samping itu bisa diatur agar proses proses pencacahan timer bisa dikendalikan lewat sinyal dari luar IC AT89S52, atau timer dipakai untuk mencacah sinyal-sinyal dari luar IC. TCON (Timer Control, nomor 88H, bisa dinomori dengan nomor bit): register TCON dipakai untuk memulai atau menghentikan proses pencacahan timer dan dipakai untuk memantau apakah terjadi limpahan dalam proses pencacahan. Disamping itu masih tersisa 4 bit dalam register TCON yang tidak dipakai untuk mengatur Timer, melainkan dipakai untuk mengatur sinyal interupsi yang diterima di INT0 (kaki nomor 6) atau INT1 (kaki nomor 7), dan dipakai untuk memantau apakah ada permintaan interupsi pada kedua kaki itu. IE (Interrupt Enable, nomor A8H, bisa dinomori dengan nomor bit): register ini dipakai untuk mengaktipkan atau me-non-aktipkan sarana interupsi, bit 0 sampai bit 6 dari register IE (IE.0..IE.6) dipakai untuk mengatur masing-masing sumber interupsi (sesungguhnya IE.6 tidak dipakai) sedangkan IE.7 dipakai untuk mengatur sistem interupsi secara keseluruhan, jika IE.7 =’0’ akan sistem interupsi menjadi non-aktip tidak mempedulikan keadaan IE.0.. IE.6. IP (Interrupt Priority, nomor B8H, bisa dinomori dengan nomor bit): register ini dipakai untuk mengatur perioritas dari masing-masing sumber interupsi. Masing-masing sumber interupsi bisa diberi perioritas tinggi dengan memberi nilai ‘1’ pada bit bersangkutan dalam register ini. Sumber interupsi yang perioritasnya tinggi bisa menginterupsi proses interupsi dari sumber interupsi yang perioritasnya lebih rendah. PCON (Power Control, nomor 87H): Register PCON dipakai untuk mengatur pemakaian daya IC AT89S52, dengan cara ‘menidurkan’ IC tersebut sehingga memerlukan arus kerja yang sangat kecil. Satu satu bit dalam register ini dipakai untuk menggandakan kecepatan pengiriman data seri (baud rate) dari UART di dalam AT89S52. Variasi dari SFR Seperti sering disebut, MCS51 merupakan satu keluarga IC mikrokontroler yang terdiri dari ratusan macam IC, ratusan macam IC tersebut umumnya mempunyai fasilitas input/output yang berlainan. Keragaman ini ditampung dalam Special Function Register. Register baku dalam keluarga MCS51, ada yang tidak dimiliki oleh keluarga AT89S52, register-register tersebut antara lain adalah : P0 (Port 0, nomor 80H, bisa dinomori dengan nomor bit): merupakan sarana input/output port 0, masing-masing bit dalam register ini setara dengan salah satu kaki IC AT89S52. 29 30 P2 (Port 2, nomor A0H, bisa dinomori dengan nomor bit): merupakan sarana input/output port 2, masing-masing bit dalam register ini setara dengan salah satu kaki IC AT89S52. Di samping dipakai sebagai port input/output, Port 0 dan Port 2 bisa pula dipakai untuk saluran-data (data bus) dan saluran-alamat (address bus) yang diperlukan AT89S52 untuk bisa menambah memori diluar chip. 2.6. AT89S ISP Programmer a. ISP singkatan dari In System Programming. ISP Programmer berbentuk sebuah kabel yang diujungnya terdapat sebuah Rangkaian yang sudah dikemas menggunakan Casing yang menutupi DB25 Male. Kabel AT89S ISP Programmer dapat kita lihat bentuknya pada gambar 2.6 (a) di bawah ini Gambar 2.6(a) Kabel ISP Salah satu ujung yang besar yang terdapat Rangkaian Elektronik untuk Proses pengisian Memori Mikrokontroller berupa konektor DB25 Male sedangkan pada Komputer PC, sarana yang digunakan adalah Paralel Port seperti pada gambar 2.6(b) yang Konektornya berupa DB25 FEMALE seperti gambar di bawah ini. Gambar 2.6(b) Pararel Port Untuk mengisi Program ke dalam Memori Internal dari Mikrokontroller adalah dengan cara menghubungkan Kabel AT89S ISP Programmer dengan Komputer PC seperti gambar 2.6.(c) di bawah ini 30 31 Gambar 2.6 (c) ISP Connector Untuk menghubungkan Pin yang terdapat pada Mikrokontroller dengan Kabel AT89S ISP Programmer, perlu diperhatikan Pin out dari Konektor ISP supaya tidak salah menghubungkannya,terlihat pada gambar 2.6 (d) dan gambar 2.6 (e) berikut: Gambar 2.6 (d) Pin ISP Kelebihan menggunakan AT89Sxx Kelebihan dari menggunakan AT89S52 adalah dapat mengisikan Program ke dalam Memori Internalnya tanpa harus mencabut IC dari kedudukannya, melainkan cukup menghubungkan 31 32 kabel ISP sesuai dengan ketentuan konektornya dengan AT89S52 kemudian buka Program untuk mengisinya, membuka Program yang sudah di assembly lalu Program. Gambar 2.6 (e) ISP Connector 32