Mikrokontroler

  • Uploaded by: Himatekom Politeknik Madiun
  • 0
  • 0
  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Mikrokontroler as PDF for free.

More details

  • Words: 6,705
  • Pages: 23
Mikrokontroler BAB I Konsep Mikrokontroler Pendahuluan Mikrokontroler adalah salah satu dari bagian dasar dari suatu sistem komputer. Meskipun mempunyai bentuk yang jauh lebih kecil dari suatu komputer pribadi dan komputer mainframe, mikrokontroler dibangun dari elemen-elemen dasar yang sama. Secara sederhana, komputer akan menghasilkan output spesifik berdasarkan inputan yang diterima dan program yang dikerjakan. Seperti umumnya komputer, mikrokontroler adalah alat yang mengerjakan instruksi-instruksi yang diberikan kepadanya. Artinya, bagian terpenting dan utama dari suatu sistem terkomputerisasi adalah program itu sendiri yang dibuat oleh seorang programmer. Program ini menginstruksikan komputer untuk melakukan jalinan yang panjang dari aksi-aksi sederhana untuk melakukan tugas yang lebih kompleks yang diinginkan oleh programmer.

Sistem Input Komputer Piranti input menyediakan informasi kepada sistem komputer dari dunia luar. Dalam sistem komputer pribadi, piranti input yang paling umum adalah keyboard. Komputer mainframe menggunakan keyboard dan pembaca kartu berlubang sebagai piranti inputnya. Sistem dengan mikrokontroler umumnya menggunakan piranti input yang jauh lebih kecil seperti saklar atau keypad kecil. Hampir semua input mikrokontroler hanya dapat memproses sinyal input digital dengan tegangan yang sama dengan tegangan logika dari sumber. Level nol disebut dengan VSS dan tegangan positif sumber (VDD) umumnya adalah 5 volt. Padahal dalam dunia nyata terdapat banyak sinyal analog atau sinyal dengan tegangan level yang bervariasi. Karena itu ada piranti input yang mengkonversikan sinyal analog menjadi sinyal digital sehingga komputer bisa mengerti dan menggunakannya. Ada beberapa mikrokontroler yang dilengkapi dengan piranti konversi ini, yang disebut dengan ADC, dalam satu rangkaian terpadu.

Sistem Output Komputer Piranti output digunakan untuk berkomunikasi informasi maupun aksi dari sistem komputer dengan dunia luar. Dalam sistem komputer pribadi (PC), piranti output yang umum adalah monitor CRT. Sedangkan sistem mikrokontroler mempunyai output yang jauh lebih sederhana seperti lampu indikator atau beeper. Frasa kontroler dari kata mikrokontroler memberikan penegasan bahwa alat ini mengontrol sesuatu. Mikrokontroler atau komputer mengolah sinyal secara digital, sehingga untuk dapat memberikan output analog diperlukan proses konversi dari sinyal digital menjadi analog. Piranti yang dapat melakukan konversi ini disebut dengan DAC (Digital to Analog Converter). CPU (Central Processing Unit) CPU adalah otak dari sistem komputer. Pekerjaan utama dari CPU adalah mengerjakan program yang terdiri atas instruksi-instruksi yang diprogram oleh programmer. Suatu program komputer akan menginstruksikan CPU untuk membaca informasi dari piranti input, membaca informasi dari dan menulis informasi ke memori, dan untuk menulis informasi ke output. Dalam mikrokontroler umumnya hanya ada satu program yang bekerja dalam suatu aplikasi. CPU M68HC05 mengenali hanya 60 instruksi yang berbeda. Karena itu sistem komputer ini sangat cocok dijadikan model untuk mempelajari dasar dari operasi komputer karena dimungkinkan untuk menelaah setiap operasi yang dikerjakan. Clock dan Memori Komputer Sistem komputer menggunakan osilator clock untuk memicu CPU mengerjakan satu instruksi ke instruksi berikutnya dalam alur yang berurutan. Setiap langkah kecil dari operasi mikrokontroler memakan waktu satu atau beberapa clock untuk melakukannya. Ada beberapa macam tipe dari memori komputer yang digunakan untuk beberapa tujuan yang berbeda dalam sistem komputer. Tipe dasar yang sering ditemui dalam mikrokontroler adalah ROM (Read Only Memory) dan RAM (Random Access Memory). ROM digunakan sebagai media penyimpan program dandata permanen yang tidak boleh berubah meskipun tidak ada tegangan yang diberikan pada mikrokontroler. RAM digunakan sebagai tempat penyimpan data sementara dan hasil kalkulasi selama proses operasi. Beberapa mikrokontroler mengikutsertakan tipe lain dari memori seperti EPROM (Erasable Programmable Read Only Memory) dan EEPROM (Electrically Erasable Programmable Read Only Memory). Program Komputer Program digambarkan sebagai awan karena sebenarnya program adalah hasil imajinasi seorang programmer. Komponen utama dari program adalah instruksi-instruksi dari instruksi set CPU. Program disimpan dalam memori dalam sistem komputer di mana mereka dapat secara berurutan dikerjakan oleh CPU. Sistem Mikrokontroler Setelah dipaparkan bagian-bagian dari suatu sistem komputer, sekarang akan dibahas mengenai mikrokontroler. Digambarkan sistem komputer dengan bagian yang dikelilingi oleh garis putusputus. Bagian inilah yang menyusun mikrokontroler. Bagian yang dilingkupi kotak bagian bawah adalah gambar lebih detail dari susunan bagian yang dilingkupi garis putus-putus. Kristal tidak termasuk dalam sistem mikrokontroler tetapi diperlukan dalam sirkuit osilator clock. Suatu mikrokontroler dapat didefinisikan sebagai sistem komputer yang lengkap termasuk sebuah CPU, memori, osilator clock, dan I/O dalam satu rangkaian terpadu. Jika sebagian elemen dihilangkan, yaitu I/O dan memori, maka chip ini akan disebut sebagai mikroprosesor.

BAB II Memori & I/O Paralel Pendahuluan Ide dasar dari semua memori adalah kemampuan untuk menyimpan informasi. Tentu saja informasi yang disimpan dapat dipanggil atau diolah kembali bila diperlukan. Sebagai analogi, memori dimisalkan sebagai sekelompok kotak surat dalam suatu apartemen yang besar. Seseorang dapat meletakkan informasi dalam suatu kotak surat dengan nomor tertentu yang tertera. Jika pemilik ingin mengambil informasi tersebut, pemilik dapat melihat ke kotak suratnya dengan nomor yang tepat dan mengambil informasinya. Dalam CPU 8 bit, setiap kotak surat dalam analogi di atas terdiri dari delapan set saklar on-off. Data atau informasi yang diberikan merupakan kondisi dari setiap saklar. Setiap saklar hanya ada dua kondisi yaitu on dan off, sehingga informasi yang terkandung di dalamnya adalah kombinasi on-off. Dalam delapan saklar tersebut, setiap saklar mewakili satu digit biner (bit). Bit satu mewkili saklar on dan bit nol mewakili saklar off. Setiap satu set 8 saklar mempunyai alamat spesifik sehingga penulisan dan pembacaan data dapat dilakukan dengan tepat dan benar. Dalam analogi, apartemen dapat memiliki nomor kotak surat 100-175 untuk lantai pertama dan 200-275 untuk lantai kedua. Angka desimal ini menggambarkan jumlah orang yang memiliki kotak surat. Karena komputer bekerja dengan sistem biner, maka jumlah alamat dari data di memori merupakan kelipatan dua dari jalur alamat. Misalkan suatu komputer mempunyai empat jalur alamat, maka dia mempunyai 24 atau 16 alamat karena empat bit biner mempunyai kombinasi 16 buah. Komputer ini akan memetakan 16 alamat dari $0 sampai $F. Dalam mikrokontroler MC68HC05 terdapat sepuluh jalur alamat sehingga didapatkan 1024 lokasi memori. Sedangkan mikrokontroler MC68HC11 memiliki 16 jalur alamat sehingga dapat mengalamati 65536 lokasi memori.Komputer 8-bit dengan sepuluh jalur alamat akan mempunyai peta memori dengan 1024 alamat dan masing-masing alamat memiliki 8 bit data. Alamat pertama dari lokasi memori adalah 00 0000 00002 dan alamat akhir 11 1111 11112. Sepuluh bit alamat tersebut pada umumnya dinyatakan dalam heksadesimal, sehingga jangkauan alamat memori tersebut menjadi $0000 sampai $03FF.Komputer menentukan lokasi memori mana yang akan digunakan dengan meletakkan kombinasi biner pada 10 jalur alamat kemudian mengirimkan sinyal read atau write. Hasilnya, informasi yang diinginkan pada alamat memori tertentu di atas akan muncul dalam delapan jalur data. Jenis-jenis Memori Komputer menggunakan beberapa jenis informasi sehingga membutuhkan beberapa jenis memori yang berbeda. Instruksi-instruksi yang mengontrol operasi dari mikrokontroler disimpan dalam memori non-volatile sehingga jika sistem tidak perlu diprogram ulang jika daya sistem hilang. Variabel dan hasil sementara bisa disimpan dalam memori yang dapat ditulis dengan mudah dan cepat saat operasi sedang berlangsung. Tidaklah penting untuk terus mengingat informasi yang ditulis saat tidak ada daya (volatile). RAM (Random Access Memory) adalah suatu bentuk memori volatile yang dapat dibaca dan ditulis oleh CPU. Seperti definisinya, lokasi RAM dapat diakses dalam berbagai urutan (random). Memori jenis ini adalah yang paling umum digunakan oleh komputer pribadi. RAM membutuhkan area chip yang lebih lebar dibandingkan dengan ROM, sehingga RAM yang diikutsertakan dalam sistem mikrokontroler hanyalah sebagian kecil saja. ROM (Read Only Memory) diisi saat proses produksinya. Informasi yang dituliskan harus dipesan oleh pelanggan sebelum chip diberikan. Dalam sistem mikrokontroler, informasi ini dapat dibaca oleh CPU tetapi tidak dapat dirubah. ROM adalah memori yang paling sederhana, kecil, dan

murah. PROM (Programmable ROM) mirip dengan ROM kecuali bahwa dia dapat diprogram setelah proses pembuatah chip. Beberapa variasi dari PROM adalah EPROM, OTP, dan EEPROM. EPROM (Erasable PROM) dapat dihapus dengan menyinarinya dengan cahaya ultraviolet. Mikrokontroler yang EPROM-nya bisa dihapus memiliki jendela kecil tempat proses penyinaran dilakukan. Jumlah proses penghapusan yang diijinkan terbatas tergantung pada beberapa tipe. Prosedur khusus digunakan untuk meprogram informasi ke dalam memori EPROM. Kebanyakan mikrokontroler yang memiliki EPROM menggunakan tegangan +12 volt DC saat operasi penulisan EPROM. CPU tidak dapat menulis data ke lokasi EPROM seperti halnya penulisan yang dilakukan pada RAM. Beberapa mikrokontroler memiliki rangkaian penulis EPROM yang built-in. OTP (One Time Programming) adalah EPROM yang tidak dilengkapi dengan jendela untuk penyinaran ultraviolet. Walaupun isi dari OTP adalah sama dengan EPROM yang memiliki jendela penghapusan, OTP tidak dapat dihapus karena tidak menyediakan jendela. OTP dipasarkan karena harganya lebih murah daripada EPROM yang berjendela. EEPROM (Electrically EPROM) dapat dihapus secara elektris dengan perintah yang ada dalam mikrokontroler. Agar dapat diprogramkan harga baru ke lokasi memori ini, pertama proses penghapusan harus dilakukan kemudian baru dilaksanakan beberapa langkah pemrograman. Walaupun mirip dengan RAM, tetapi EEPROM tetap memiliki sifat non-volatile dari ROM yang tidak hilang datanya walaupun daya hilang. I/O Sebagai Tipe Memori Informasi status dan kontrol dari I/O adalah suatu tipe dari lokasi memori yang mengijinkan sistem komputer untuk mendapatkan informasi dari dan ke dunia luar. Tipe lokasi memori ini tidak seperti memori pada umumnya karena informasi yang ada dapat berubah karena pengaruh selain dari CPU. Jenis paling sederhana dari lokasi memori I/O adalah port input dan port output sederhana. Dalam mikrokontroler 8-bit, port input sederhana terdiri dari delapan kaki yang dapat dibaca oleh CPU. Port output sederhana terdiri dari delapan kaki yang dapat dikontrol oleh CPU. Dalam kenyataannya, port output sederhana diimplementasikan dengan delapan latch dan jalur feedback yang memungkinkan CPU untuk membaca kembali apa yang sebelumnya ditulis ke port output. Gambar di bawah memperlihatkan rangkaian ekuivalen dari satu bit RAM, satu bit port input, dan satu bit port output yang umum dan memiliki kemampuan membaca kembali. Dalam mikrokontroler nyata, rangkaian ini ada delapan untuk membentuk delapan bit RAM, port input, dan port output. Saat snyal clock high, data dari input D menuju output Q. Saat input clock low, data ditahan pada kaki output Q.

Saat CPU menyimpan informasi ke dalam RAM dalam gambar (a), sinyal WRITE diaktifkan untuk menahan data dari jalur data bus ke dalam flip-flop [1]. Latch ini akan terus mengingat data yang telah diberikan sampai terjadi proses penulisan kembali atau jika daya dihilangkan. Saat CPU membaca data dalam RAM ini, sinyal READ diaktifkan, yang kemudian mengaktifkan multiplekser [2]. Multiplekser ini membuat data dari output latch muncul kembali ke jalur data bus. Saat CPU membaca data dari port input seperti pada gambar (b), sinyal READ diaktifkan, yang akan mengaktifkan multiplekser [3]. Multiplekser ini akan mengirimkan data yang ada dalam buffer ke jalur data bus. Sinyal write tidak mempunyai pengaruh dalam rangkaian ini. Saat CPU menyimpan data ke port output seperti pada gambar (c), sinyal WRITE diaktifkan untuk menahan data dari data bus menuju ke flip-flop [4]. Output dari latch ini, yang di-buffer oleh buffer driver [5], muncul sebagai harga digital pada kaki output. Saat CPU akan membaca data dari port output, sinyal READ diaktifkan, yang akan mengaktifkan multiplekser [6]. Multiplekser ini akan menyalurkan data dari output flip-flop ke jalur data bus. Register Kontrol dan Status Internal Register kontrol dan status internal adalah lokasi memori I/O yang spesial. Di samping aksi sensor dan pengontrolan kaki eksternal, register ini juga melakukan aksi sensor dan pengontrolan sinyal level logika internal. Lihat gambar dan bandingkan antara RAM dengan port output. Perbedaan yang tampak hanyalah bahwa port output memiliki buffer untuk menghubungkan state dari flip-flop ke kaki eksternal. Dalam kasus bit kontrol internal, output dari buffer terhubung dengan sinyal kontrol internal tertentu. Suatu bit status internal mirip dengan bit port input tetapi bit status ini hanya melakukan aksi sensor terhadap sinyal register internal. Mikrokontroler M68HC05 memiliki kaki-kaki I/O paralel. Arah jalur dari setiap kaki dapat diprogram dengan bit kontrol melalui software. Gambar di bawah menggambarkan I/O dua arah (bi-directional) dengan latch output dan bit kontrol arah data. Kaki suatu port dikonfigurasi sebagai output jika bit DDR (Data Direction Register) yang bersesuaian diset menjadi logika satu. Suatu kaki dikonfigurasi sebagai input jika bit DDR yang bersesuaian diset menjadi logika nol. Saat pertama kali dihidupkan atau saat reset, semua bit DDR dinolkan, sehingga konfigurasi semua kaki port adalah sebagai input. DDR ini dapat ditulis dan dibaca oleh prosesor.

Peta Memori Karena terdapat ribuan dan bahkan lebih lokasi memori dalam suatu sistem mikrokontroler, menjadi penting untuk memiliki cara yang enak untuk menangani alamat masing-masing data dalam memori. Suatu peta memori adalah penggambaran yang mewakili semua spasi dalam memori mikrokontroler. Gambar di bawah adalah peta memori umum yang menggambarkan memori dalam MC68HC705K1. Empat digit heksadesimal yang terletak pada bagian kiri dari gambar di bawah adalah alamat yang dimulai pada $0000 di atas dan terus bertambahsampai $03F di bagian bawah. Alamat $0000 berhubungan dengan awal lokasi memori sedangkan alamat $03FF berhubungan dengan lokasi memori akhir. Sedangkan ketrangan dalam kotak menunjukkan macam tipe dari memori dan isinya (RAM, EPROM, register I/O, dan sebagainya). Beberapa daerah, seperti register I/O, perlu dijelaskan lebih detail karena penting untuk mengetahui nama dari setiap lokasi. Setiap lokasi memori sebanyak 1024 ini memiliki delapan bit data seperti pada gambar di bawah.

Lokasi memori 256 pertama ($0000-$00FF) dapat diakses oleh komputer dengan cara khusus yang sebut dengan mode pengalamatan langsung (direct addressing mode). Register I/O on-chip dan 32 byte RAM terletak dalam area $0000-$00FF. Dalam peta memori pada gambar di bawah terlihat konfigurasi penempatan pada area ini yang dipaparkan dalam kotak yang terletak di sebelah kanan.

BAB III Arsitektur Komputer Pendahuluan Setiap hal yang dikerjakan CPU dibagi-bagi menjadi beberapa langkah yang sederhana dan berurutan. Osilator clock membangkitkan clock CPU yang digunakan dalam langkah (step) kerja CPU dalam urutan perkerjaannya. Karena clock CPU ini sangat cepat untuk ukuran manusia, sehingga yang terlihat bahwa CPU bekerja secara langsung dan cepat. Mikrokontroler 8-bit dari Motorola M68HC05 dan M68HC11 memiliki organisasi khusus yan disebut dengan arsitektur Von Neumann. Dalam arsitektur ini, CPU dan rangkaian memori diinterkoneksi-kan dengan bus alamat dan bus data. Bus alamat digunakan untuk menentukan lokasi memori yang mana yang akan diakses, dan bus data digunakan untuk mengirim informasi baik dari CPU ke lokasi memori dan sebaliknya. Dalam arsitektur implementasi Motorola ini terdapat beberapa memori spesial yang disebut dengan register CPU yang terletak di dalam CPU itu sendiri. Register ini mirip dengan memori yang dapat menyimpan informasi. Tetapi register ini terjalur langsung di dalam CPU dan bukan bagian dari memori konvensional mikrokontroler. CPU menganggap semua lokasi memori sebagai satu kesatuan walaupun di dalamnya terdapat instruksi program, data variabel, maupun kontrol input-output (I/O). Teknik semacam ini yang disebut dengan memory-mapped I/O. Artinya, semua piranti input-output dari sistem mikrokontroler memiliki alamat tersendiri yang ikut dipetakan dalam peta memori, sehingga dianggap sebagai bagian dari memori itu sendiri. Di dalam CPU juga terdapat komponen ALU atau Arithmatic Logic Unit yang digunakan untuk melakukan kalkulasi aritmatika dan logika yang didefinisikan oleh instruksi. Berbagai macam variasi operasi aritmatika biner dikerjakan dalam ALU ini. Hampir semua operasi aritmatika biner didasarkan pada operasi tambah. Pengurangan dikerjakan sebagai proses tambah dengan salah satu data dikomplemenkan. Perkalian dikerjakan sebagai urutan beberapa proses tambah dan operasi shift dalam ALU. Blok diagram dari CPU M68HC05 ditampilkan dalam gambar 4.1 di bawah ini.

Register-register CPU CPU yang berbeda memiliki set register yang berbeda pula. Perbedaan utama terletak pada jumlah dan ukuran dari register itu sendiri. Dalam gambar 4.1 diperlihatkan register-register CPU yang terdapat dalam mikrokontroler keluarga M68HC05.

Register A berukuran 8 bit, juga dikenal sebagai akumulator karena register ini digunakan untuk menyimpan hasil dari operasi aritmatika dan manipulasi data. Register ini juga dapat langsung diakses untuk operasi non-aritmatika. Akumulator digunakan dalam proses eksekusi dari program saat isi dari beberapa lokasi memori yang digunakan di-load ke akumulator. Demikian juga instruksi penyimpanan akan menyebabkan isi dari akumulator disimpan dalam memori yang telah ditentukan. Register X adalah index register yang berukuran 8 bit. Kegunaan utama dari index register ini adalah untuk menunjukkan suatu area memori di mana CPU akan mengambil atau menuliskan suatu informasi. Kadang-kadang index register juga disebut dengan pointer register. PC atau program counter digunakan CPU untuk menata urutan alamat instruksi yang akan dikerjakan. Saat CPU reset atau baru dihidupkan, PC ini dimuati dengan alamat yang telah ditentukan dalam reset vector. Lokasi reset vector ini berisi alamat dari instruksi pertama yang akan dikerjakan oleh CPU. Saat suatu instruksi dikerjakan, CPU akan menambah isi PC sehingga akan menunjuk ke alamat informasi berikutnya yang akan dibutuhkan CPU. Jumlah bit dari PC sama persis dengan jumlah jalur bus alamat. Isi dari register ini dinyatakan dalam empat digit heksadesimal di mana enam bit teratas selalu nol karena hanya 10 bit jalur bus alamat. CCR atau condition code register adalah register dengan ukuran 8 bit, yang menyimpan indikator status dari hasil operasi CPU sebelumnya. Terdapat tiga bit teratas tidak digunakan dan selalu sama dengan logika satu. Instruksi percabangan menggunakan bit-bit status dalam register ini untuk mengerjakan suatu keputusan percabangan. Isi dari CCR ini adalah sebuah interrupt mask dan empat indikator status seperti pada gambar 4.1. Kelima flag tersebut adalah H atau half cary, N atau negative, Z atau zero, dan C atau carry/borrow. Flag H (half carry) digunakan untuk operasi aritmatika BCD (Binary Coded Decimal) dan dipengaruhi oleh kerja instruksi ADD dan ADC. Bit H ini akan set jika ada carry yang timbul dari digit heksadesimal 0-3 (low order) dan digit desimal 4-7 (high order). Bit I (interrupt mask) bukanlah status flag tetapi merupakan bit yang akan men-nonaktif-kan semua sumber interrupt yang maskable saat bit ini diset. Interrupt baru akan aktif jika bit ini nol. Jika ada interrupt eksternal yang terjadi saat bit I diset, maka interrupt tersebut akan di-latch dan akan diproses saat bit I dinolkan. Karena itu, interrupt yang terjadi tidak akan hilang. Setelah interrupt ditangani, instruksi RTI (return from interrupt) akan menyebabkan register ini dikembalikan ke nilai semula. Umumnya, bit I ini akan menjadi nol setelah instruksi RTI dilaksanakan. Flag N (negative) akan diset jika hasil dari operasi aritmatika, logika, maupun manipulasi data yang terakhir adalah negatif. Nilai negatif dalam two's complement ditandai jika bit MSB adalah

satu. Flag Z (zero) diset jika hasil dari operasi aritmatika, logika, maupun manipulasi data terakhir adalah nol. Instruksi perbandingan (compare) akan mengurangi suatu harga dari suatu lokasi memori yang akan dites. Jika nilainya sama, maka bit Z ini akan diset. Flag C (carry/borrow) digunakan untuk menandai apakah ada carry dari hasil operasi tambah atau ada borrow darioperasi pengurangan. Instruksi shift dan rotate juga dapat memakai bit C ini. SP atau stack pointer digunakan sebagai pointer ke lokasi yang tersedia berikutnya dalam tumpukan stack dalam uruatn LIFO (last-in first-out). Stack ini dapat dianalogikan sebagai tumpukan kartu. Setiap kartu menyimpan satu byte (8 bit) informasi. Dalam suatu saat, CPU dapat menaruh satu kartu di atas tumpukan kartu tersebut maupun mengambil satu kartu dari tumpukan. Kartu di dalam tumpukan tidak dapat diambil kecuali jika kartu di atasnya sudah diambil sebelumnya. Stack mirip dengan tumpukan kartu ini hanya saja dalam fisiknya, stack mempunyai arah tumpukan ke bawah bukan ke atas seperti pada tumpukan kartu. SP akan menunjuk pada alamat stack yang akan tersedia berikutnya. Jika CPU menaruh informasi dalam stack, maka data tersebut akan dituliskan dalam memori yang ditunjukkan oleh nilai SP saat itu, dan kemudian nilai SP akan dikurangi satu sehingga SP akan menunjukkan ke lokasi memori berikutnya yang kosong untuk digunakan sebagai penyimpan berikutnya. Jika CPU mengambil data dari stack, SP akan ditambah satu sehingga menunjukkan ke lokasi stack yang terakhir, dan kemudian data diambil dan dibaca oleh CPU. Saat CPU pertama kali dihidupkan atau setelah instruksi Reset Stack Pointer (RSP), maka SP akan menunjukkan memori tertentu dalam RAM. Reset Reset digunakan untuk memaksa sistem mikrokontroler untuk menuju alamat tertentu. Sistem periperal dan sejumlah bit kontrol dan status juga dipaksa untuk menuju ke state awal sebagai hasil dari proses reset. Aksi-aksi berikut ini yang terjadi akibat proses reset dari mikrokontroler: 1. Semua register data direction (DDR) diset nol (input) 2. Nilai SP dipaksa menjadi $00FF 3. Bit I dalam CCR diset 4. Latch interrupt eksternal dinolkan 5. Latch STOP dinolkan 6. Latch WAIT dinolkan Kondisi-kondisi berikut ini yang akan menyebabkan mikrokontroler M68HC05 menjadi reset: 1. Sinyal input low pada kaki RESET 2. Reset karena pertama kali dihidupkan 3. Timer watchdog COP (computer operating properly) sudah habis 4. Usaha untuk menjalankan perintah dari suatu alamat yang tidak diperbolehkan

BAB IV Pemrograman MC6805 Pendahuluan Kekuatan utama dari setiap komputer terletak pada kemampuannya dalam mengakses memori. Mode pengalamatan dari CPU menyediakan kemampuan ini. Mode pengalamatan mempunyai pengertian bagaimana suatu instruksi akan mendpatkan data yang diperlukannya dalam eksekusi. Karena ada beberapa macam mode pengalamatan yang berbeda, suatu instruksi dapat mengakses operan dalam satu atau beberapa cara yang berbeda. Setiap variasi mode pengalamatan dari suatu instruksi harus memiliki kode operasi (op-code) yang unik, sehingga 62 instruksi dasar mikrokontroler M68HC05 membutuhkan setidaknya 210 kode operasi dari instruksi-instruksinya. CPU M68HC05 menggunakan enam mode pengalamatan. Mode pengalamatan ini adalah inherent, immediate, extended, direct, indexed, dan relative. Dalam mikrokontroler M68HC05 yang terkecil, semua variabel program dan register I/O cukup dalam area $0000 sampai $00FF di memori sehingga mode pengalamatan yang digunakan adalah direct addressing mode. Informasi yang disediakan dalam listing program menggunakan beberapa simbol untuk menentukan tipe dari numerik yang digunakan. Simbol khusus ini adalah:

1. Tanpa simbol mengindikasikan numerik desimal. Angka ini akan diterjemahkan menjadi nilai biner sebelum disimpan dalam memori dan digunakan oleh CPU.

2. Simbol $ mengindikasikan numerik heksadesimal, seperti $24 adalah 2416 dalam heksadesimal yang bernilai sama dengan 36 desimal.

3. Simbol @ mengindikasikan numerik oktal, seperti @10 bernilai sama dengan 8 desimal. 4. Simbol % mengindikasikan numerik biner, seperti %000100 bernilai sama dengan 8 desimal. 5. Simbol ‘ (apostrof) mengindikasikan karakter ASCII tunggal. 6. Simbol # mengindikasikan operand langsung (immediate) dan angka ditemui langsung dalam lokasi memori yang mengikuti kode operasi. Beberapa macam simbol dan ekspresi dapat mengikuti simbol # ini. Mode pengalamatan yang dikenal oleh mikrokontroler keluarga 6805 ada beberapa macam sebagaimana tercantum di bawah ini:

1. Mode Pengalamatan IMEDIATE Dalam mode pengalamatan immediate, operan terkandung di dalam byte yang langsung mengikuti kode operasi. Mode ini digunakan saat suatu harga atau konstanta diketahui saat program dibuat dan tidak akan dirubah selama eksekusi program. Operasi dengan mode ini membutuhkan dua byte instruksi, satu untuk kode operasi dan satu lagi untuk data byte. Contoh: 0200 A6 02 LDA #$02 ; Load konstanta ke akumulator Pertama CPU akan membaca kode operasi $A6 yang menginstruksikan CPU untuk meload akumulator dengan nilai immediate yang mengikuti kode operasi. Kemudian CPU akan membaca data immediate $02 dari lokasi memori dengan alamat $0201 ke dalam akumulator. Tabel 5.1 menampilkan semua instruksi keluarga M68HC05 ang dapat menggunakan mode pengalamatan immediate ini.

Instruksi-instruksi Mode Pengalamatan IMMEDIATE Instruksi

Mnemonic

Add with Carry Add (without carry) Logical AND Bit Test Memory with Accumulator

ADC ADD AND BIT

Compare Accumulator with Memory Compare Index Register with Memory Exclusive OR Memory with Accumulator Load Accumulator from Memory

CMP CPX EOR LDA

Load Index Register from Memory Inclusive OR Substract with Carry Substract (without borrow)

LDX ORA SBC SUB

2. Mode Pengalamatan INHERENT Dalam mode pengalamatan inherent, semua informasi yang dibutuhkan untuk operasi telah diketahui otomatis oleh CPU, dan tidak dibutuhkan operan eksternal dari memori atau dari program. Operan yang digunakan hanyalah register internal dari CPU atau data dalam stack. Karena itu operasi ini hanyalah terdiri dari satu byte instruksi. Contoh: 0200 4C INCA ; increment akumulator Pertama CPU membaca kode operasi $4C yang menginstruksikan CPU untuk menambah harga dari isi akumulator. Kemudian CPU akan menyimpan harga baru ke dalam akumulator dan mengeset bit flag jika dibutuhkan. Tabel 5.2 menampilkan semua instruksi M68HC05 yang dapat menggunakan mode pengalamatan inherent. Instruksi-instruksi Mode Pengalamatan INHERENT Instruksi

Mnemonic

Arithmetic Shift Left Arithmetic Shift Right Clear Carry Bit Clear Interrupt Mask Bit

ASLA, ASLX ASRA, ASRX CLC CLI

Clear Complement (invert all bits) Decrement Increment

CLRA, CLRX COMA, COMX DECA, DECX INCA, INCX

Logical Shift Left Logical Shift Right Multiply Negate (two’s complement)

LSLA, LSLX LSRA, LSRX MUL NEGA, NEGX

No Operation Rotate Left thru Carry Rotate Right thru Carry Reset Stack Pointer

NOP ROLA, ROLX RORA, RORX RSP

Return from Interrupt

RTI

Return from Subroutine Set Carry Bit Set Interrupt Mask Bit

RTS SEC SEI

Enable IRQ, STOP Oscillator Software Interrupt Transfer Accumulator to Index Register Test for Negative Zero

STOP SWI TAX TSTA, TSTX

Transfer Index Register to Accumulator Wait for Interrupt

TXA WAIT

3. Mode Pengalamatan EXTENDED Dalam mode pengalamatan extended, alamat dari operan terkandung dalam dua byte yang mengikuti kode operasi. Pengalamatan extended ini dapat digunakan untuk mengakses semua lokasi dalam memori mikrokontroler termasuk I/O, RAM, ROM, dan EPROM. Karena itu operasi ini membutuhkan tiga byte, satu untuk kode operasi, dan dua untuk alamat dari operan. 0200 C6 03 65 LDA $0365 Pertama CPU akan membaca kode operasi C6 yang menginstruksikan akumulator untuk menggunakan mode pengalamatan extended. Kemudian CPU akan membaca $03 dari lokasi memori $0201dan diterjemahkan sebagai alamat high-order. Setelah itu CPU membaca $65 dari lokasi $0202 dan diterjemahkan sebagai low-order dari alamat. Terakhir, CPU membangun alamat lengkap $0365 dan meletakkannya dalam bus alamat dan kemudian melakukan operasi read sehingga isi memori dengan alamat $0365 akan tersedia dalam bus data. Tabel 5.3 di bawah ini akam memperlihatkan semua instruksi yang dapat digunakan dalam mode pengalamatan extended. Instruksi-instruksi Mode Pengalamatan EXTENDED Instruksi

Mnemonic

Add with Carry Add (without carry) Logical AND Bit Test Memory with Accumulator

ADC ADD AND BIT

Compare Accumulator with Memory Compare Index Register with Memory Exclusive OR Memory with Accumulator Jump

CMP CPX EOR JMP

Jump to Subroutine Load Accumulator from Memory Exclusive OR Memory with Accumulator Jump

JSR LDA LDX ORA

Substract with Carry Store Accumulator in Memory Store Index Register in Memory Substract (without borrow)

SBC STA STX SUB

4. Mode Pengalamatan DIRECT Mode pengalamatan direct mirip dengan mode pengalamatan extended kecuali bahwa upper byte dari alamat operan selalu dianggap $00. Karena itu, hanya lower-byte dari operan yang diperlukan untuk dimasukkan dalam instruksi. Pengalamatan direct menyebabkan efisiensi alamat dalam 256 byte pertama dalam memori. Area ini dinamakan dengan direct page dan mengandung on-chip RAM dan register I/O. Pengalamatan direct ini efisien bagi memori program dan waktu eksekusi. Dalam mode ini instruksi terdiri dari dua byte, satu untuk kode operasi dan satu lagi untuk alamat operan. Contoh: 0200 B6 E0 LDA $E0 Pertama CPU akan membaca kode operasi $B6 yang menginstruksikan CPU untuk menggunakan mode pengalamatan direct. Kemudian CPU membaca $E0 dari lokasi memori dengan alamat $0201. Harga $E0 ini diterjemahkan sebagai low-order dari alamat dalam direct page ($0000 sampai $00FF). Setelah itu CPU menyusun alamat lengkap $00E0 dengan menganggap high-order byte alamat sebagai $00. Alamat lengkap $00E0 ini kemudian diletakkan dalam bus alamat dan kemudian proses pembacaan data pun dikerjakan. Tabel 5.4 menampilkan semua instrusi yang bisa dikerjakan dengan mode pengalamatan direct ini. Instruksi-instruksi Mode Pengalamatan DIRECT Instruksi Add with Carry Add (without carry) Logical AND Arithmetic Shift Left

Mnemonic ADC ADD AND ASL

Arithmetic Shift Right Clear Bit in Memory Bit Test Memory with Accumulator Branch if Bit n is Clear

ASR BCLR BIT BRCLR

Branch if Bit n is Set Set Bit in Memory Clear Compare Accumulator with Memory

BRSET BSET CLR CMP

Complement (invert all bits) Compare Index Register with Memory Decrement Exclusive OR Memory with Accumulator

COM CPX DEC EOR

Increment Jump Jump to Subroutine Load Accumulator from Memory

INC JMP JSR LDA

Load Index Register from Memory Logical Shift Left Logical Shift Right Negate (two’s complement)

LDX LSL LSR NEG

Inclusive OR Rotate Left thru Carry

ORA ROL

Rotate Right thru Carry Substract with Carry

ROR SBC

Store Acuumulator in Memory Strore Index Register in Memory Substract (without borrow) Test for Negative or Zero

STA STX SUB TST

5. Mode Pengalamatan INDEXED Dalam mode pengalamatan indexed, alamat efektif adalah variabel dan tergantung pada dua faktor: 1) isi index register saat itu dan 2) nilai offset yang terkandung dari byte yang mengikuti kode operasi. Terdapat tiga jenis pengalamatan indexed yang didukung oleh CPU keluarga M68HC05, yaitu: no-offset, 8-bit offset, dan 16-bit offset. Dalam mode pengalamatan indexed-no offset, alamat efektif dari operan terkandung dalam index register 8-bit. Karena itu, mode pengalamatan ini dapat mengakses 256 lokasi memori (dari $0000 sampai $00FF). Instruksi mode ini membutuhkan satu byte instruksi. Contoh: 0200 F6 LDA 0,X Pertama CPU akan membaca kode operasi $F6 yang menginstruksikan CPU untuk menggunakan mode pengalamatan indexed-no offset. Kemudian CPU menyusun alamat lengkap dengan menjumlahkan $0000 ke isi dari index register 8-bit (X). Alamat ini kemudian diletakkan dalam bus alamat dan setelah itu dilakukan proses pembacaan data. Tabel 5.5 menampilkan semua instruksi yang dapat menggunakan mode pengalamatan ini. INDEXED-NO OFFSET dan INDEXED-8 BIT OFFSET Instruksi

Mnemonic

Add with Carry Add (without carry) Logical AND Arithmetic Shift Left

ADC ADD AND ASL

Arithmetic Shift Right Bit Test Memory with Accumulator Clear Compare Accumulator with Memory

ASR BIT CLR CMP

Complement (invert all bits) Compare Index Register with Memory Decrement Exclusive OR Memory with Accumulator

COM CPX DEC EOR

Increment Jump Jump to Subroutine Load Accumulator from Memory

INC JMP JSR LDA

Load Index Register from Memory Logical Shift Left Logical Shift Right Negate (two’s complement)

LDX LSL LSR NEG

Inclusive OR Rotate Left thru Carry Rotate Right thru Carry

ORA ROL ROR

Substract with Carry

SBC

Store Acuumulator in Memory Strore Index Register in Memory Substract (without borrow) Test for Negative or Zero

STA STX SUB TST

Dalam mode pengalamatan indexed-8 bit offset, alamat efektif dicapai dengan menambahkan data byte yang mengikuti kode operasi dengan isi dari index register. Harga byte offset yang disediakan dalam instruksi adalah integer tak bertanda 8-bit. Karena itu operasi ini adalah dua byte instruksi di mana offset terkandung dalam byte yang mengikuti kode operasi. Isi dari index register tidak akan dirubah. Contoh: 0200 E6 05 LDA 5,X Pertama CPU akan membaca kode operasi $E6 yang menginstruksikan CPU menggunakan mode pengalamatan indexed 8-bit offset. Kemudian CPU akan membaca 8-bit offset ($05) dari alamat $0201. CPU akan menyusun alamat lengkap dengan menambahkan nilai offset $05 ke isi dari index register 8-bit (X). Setelah itu, alamat diletakkan dalam bus alamat dan opersi pembacaan data ke akumulator dikerjakan. Tabel 5.5 menunjukkan semua instruksi yang mampu menggunakan mode pengalamatan ini. Dalam mode pengalamatan indexed-16 bit offset, alamat efektif dari operan suatu instruksi adalah hasil penjumlahan antara isi dari index register 8-bit dengan dua byte alamat yang mengikuti kode operasi. Isi dari kode operasi tidak dirubah. Instruksi ini memakan tiga byte, satu untuk kode operasi dan dua byte untuk offset 16-bit. Contoh: 0200 D6 03 77 LDA $377,X Pertama CPU akan membaca kode operasi $D6 yang menginstruksikan CPU untuk menggunakan mode pengalamatan indexed –16 bit offset. Kemudian CPU akan membaca high order alamat ($03) dari alamat memori $0201 dan membaca low order alamat ($77) dari alamat $0202. CPU akan menyusun alamat lengkap dengan menambahkan isi dari index register 8-bit dengan 16-bit alamat yang baru saja dibaca. Alamat ini diletakkkan dalam bus alamat dan kemudian operasi pembacaan data dilakukan. Instruksi-instruksi Mode Pengalamatan INDEXED-16 BIT OFFSET Instruksi

Mnemonic

Add with Carry Add (without carry) Logical AND Bit Test Memory with Accumulator

ADC ADD AND BIT

Compare Accumulator with Memory Compare Index Register with Memory Exclusive OR Memory with Accumulator Jump

CMP CPX EOR JMP

Jump to Subroutine Load Accumulator from Memory Exclusive OR Memory with Accumulator Jump

JSR LDA LDX ORA

Substract with Carry Store Accumulator in Memory Store Index Register in Memory Substract (without borrow)

SBC STA STX SUB

6. Mode Pengalamatan RELATIVE Mode pengalamatan relative ini digunakanhanya dalam instruksi percabangan. Instruksi percabangan, selain percabangan instruksi manipulasi bit, membangkitkan dua byte kode mesin: satu untuk kode operasi dan satu untuk offset relatifnya. Karena kemampuannya untuk bercabang ke dua arah, byte offset adalah bilangan bertanda dengan jangkauan –128 sampai +127. Jika kondisi percabangan TRUE, isi dari byte bertanda 8-bit yang mengikuti kode operasi akan ditambahkan dengan isi dari PC untuk membentuk alamat efektif percabangan; jika FALSE maka kontrol program akan terus ke instruksi di bawah instruksi percabangan. Programmer akan menspesifikasikan tujuan dari percabangan sebagai alamat absolute (dengan label atau alamat langsung). Kemudian assembler akan mengkalkulasi offset relatif 8-bit yang akan diletakkan di belakang kode memori dalam memori. Contoh: 0200 27 rr BEQ DEST Pertama CPU akan membaca kode operasi $27. Bit CCR Z akan set jika hasil dari operasi aritmatika atau logika sebelumnya adalah nol. CPU kemudian akan membaca harga offset $rr dari alamat $0201. Setelah siklus ini, PC akan menunjukkan ke byte pertama dari instruksi berikutnya ($0202). Jika bit Z nol, maka tidak ada aksi apa-apa. Program akan terus ke instruksi berikutnya pada alamat $0202. Jika bit Z satu, CPU akan menambahkan nilai offset $rr ke isi dari PC sekarang untuk mendapatkan alamat tujuan dari percabangan. Hal ini menyebabkan eksekusi program berlanjut ke alamat baru (DEST). Tabel 5.7 menunjukkan instruksi yang dapat menggunakan mode pengalamatan relative. Instruksi-instruksi Mode Pengalamatan RELATIVE Instruksi

Mnemonic

Branch Branch Branch Branch

if Carry Clear if Carry Set if Equal if Half-Carry Clear

BCC BCS BEQ BHCC

Branch Branch Branch Branch

if Half-Carry Set if Higher if Higher or Same if Interrupt Line is High

BHCS BHI BHS BIH

Branch Branch Branch Branch

if Interrupt Line is Low if Lower if Lower or Same if Interrupt Mask is Clear

BIL BLO BLS BMC

Branch Branch Branch Branch

if Minus if Interrupt Mask is Set if Not Equal if Plus

BMI BMS BNE BPL

Branch Branch Branch Branch

Always if Bit n is Clear if Bit n is Set Never

Branch to Subroutine

BRA BRCLR BRSET BRN BSR

Assembler Directives ORG (Originate) adalah directive yang digunakan untuk mengeset lokasi PC dari assembler. Assembler akan menterjemahkan statemen program ke dalam kode instruksi mesin dan data pada lokasi memori yang ditunjukkan oleh ORG ini dan kemudian PC akan menunjukkan lokasi memori berikutnya. Setiap program setidaknya mempunyai satu ORG untuk menentukan alamat awal program dalam memori. Program yang lengkap memiliki ORG kedua yang menentukan alamat vektor reset dan vektor interrupt. EQU (Equate) adalah directive yang digunakan untuk mengasosiasikan nilai biner dengan suatu label. Nilai ini bisa 8 bit maupun 16 bit. Directive ini tidak membentuk kode objek apa pun. Dalam proses assembly, assembler harus selalu melihat daftar referensi di mana dia menyimpan nilai biner ekuivalen untuk setiap label. Jika ada label yang muncul dalam program, assembler akan melihat pada referensi untuk mendapatkan nilai biner ekuivalennya. FCB (Form Constant Byte) memiliki argumen berupa label atau angka, yang dipisahkan dengan koma, yang dapat dikonversikan menjadi data-data byte tunggal. Setiap byte yang dispesifikasikan dalam directive FCB menghasilkan sebuah byte kode mesin dalam file objek. Karena itu FCB digunakan untuk mendefinisikan suatu konstanta dalam suatu program. FDB (Form Double Byte) memiliki argumen berupa label atau angka, yang dipisahkan dengan koma, yang dapat dikonversikan menjadi data 16 bit. Setiap argumen yang dispesifikasikan dalam directive FDB, membangkitkan dua byte kode mesin dalam file objek. RMB (Reserve Memory Byte) digunakan untuk mengeset suatu spasi dalam RAM untuk tempat variabel program. Directive RMB ini tidak menghasilkan kode objek. Contoh program yang menggunakan directive dalam assembler adalah: PORTA EQU $00 ORG $0200 DATA FCB $35,$89,$67 ADD_DATA FDB START TEMPA RMB 1 TEMPX RMB 1 File Kode Objek Telah dipelajari bahwa komputer meminta program dalam bentuk nilai 8-bit di dalam memori. Sejauh ini, program yang ditulis terlihat sebagai tulisan manusia, sedangkan yang diinginkan oleh komputer untuk dimuat ke memori adalah yang disebut dengan object code file (file kode objek). Untuk mikrokontroler Motorola, bentuk umum dari file kode objek adalah S-record file. Assembler dapat digunakan untuk menghasilkan listing file maupun file kode objek ini. Suatu file S-record adalah file teks ASCII yang dapat dilihat dengan program teks editor atau pengolah kata biasa. Setiap baris dari file ini adalah sebuah record. Setiap record dimulai dengan huruf kapital S dan diikuti oleh angka-angka kode dari 0 sampai 9. Angka-angka kode yang penting adalah S0, S1, dan S9. S0 adalah header record opsional yang berisi nama dari file untuk kepentingan pemakai yang ingin menggunakan file ini. S1 adalah data record utama. Dan suatu record S9 digunakan untuk menandai akhir dari file S-record. Gambar di bawah menunjukkan sintaks dari S1-record.

Semua angka di dalam file S-record ditulis dalam format heksadesimal. Field length (panjang) adalah jumlah pasangan digit heksadesimal di dalam record tanpa termasuk field type dan length. Field address (alamat) adalah alamat 16-bit di mana byte data pertama akan disimpan di dalam memori. Setiap pasangan dari digit heksadesimal di dalam field object code data adalah kode mesin yang mewakili suatu harga 8-bit yang akan disimpan dalam suatu lokasi di memori. Field checksum adalah harga 8-bit yang mewakili komplemen (1’s complement) dari jumlah semua byte dalam record S untuk mem-verify bahwa data sudah benar dan komplit.

BAB V Periperal On-Chip Port Serial Beberapa keluarga M68HC05 memiliki periperal yang memungkinkan CPU untuk berkomunikasi secara serial dengan piranti eksternal. Dengan menggunakan format bit serial akan membutuhkan lebih sedikit kaki I/O daripada secara paralel. Dua tipe dasar dari port serial yang ada dalam keluarga M68HC05 adalah SCI (Serial Communication Interface) dan SPI (Serial Peripheral Interface). Port SCI adalah sebuah UART (Universal Asynchronous Receiver Transmitter) yang berkomunikasi secara asinkron dengan piranti lain. Tipe port serial ini membutuhkan interface hardware yang paling sederhana. Hanya dua kaki yang digunakan untuk transfer data secara dua arah. Data ditransmisikan oleh mikrokontroler dalam satu pin dan data diterima oleh mikrokontroler dalam pin yang lain. Setiap bagian data yang ditransmisikan atau diterima oleh SCI memiliki start bit, beberapa data bit, dan stop bit. Start dan stop bit ini digunakan untuk mensinkronkan komunikasi antara dua piranti. Tipe interface serial seperti ini sering digunakan jika suatu mikrokontroler harus berkomunikasi melalui jarak yang cukup jauh. Dengan menggunakan konektor RS-232 yang terkoneksi dalam kaki transmisi dan penerima, SCI dapat digunakan untuk berkomunikasi dengan PC (personal computer) atau dengan komputer lain yang lebih besar. Seperti namanya, port SPI digunakan untuk berkomunikasi dengan periperal eksternal secara sinkron dengan peralatan lain dalam dua arah yang membutuhkan setidaknya 3 kaki mikrokontroler. Satu kaki untuk transmiter, satu kaki untuk penerima, dan satu kaki yang lain untuk clock sinkronisasi. Tipe interface serial ini biasanya digunakan untuk berkomunikasi dengan periperal dalam satu board dengan mikrokontroler. ADC (Analog to Digital Converter) Seperti telah dijelaskan di bab-bab awal bahwa banyak sinyal yang ada dalam dunia nyata yang tidak kompatibel dengan kaki-kaki I/O dari mikrokontroler. Dalam kenyataannya, banyak sinyal analog yang berubah-ubah secara kontinu yang tidak dapat diterjemahkan langsung ke logika satu atau logika nol yang dapat dimengerti oleh mikrokontoler. Oleh karena itu beberapa anggota keluarga M68HC05 memiliki suatu piranti ADC yang dapat mengkonversi sinyal analog menjadi angka biner yang dapat dimanipulasi oleh mikrokontroler. EEPROM Karena EEPROM adalah tipe memori, banyak yang tidak memperhitungkannya sebagai bagian dari periperal mikrokontroler. Isi dari EEPROM dapat dirubah saat program berjalan dan tidak hilang walaupun daya dimatikan. Beberapa keluarga dari mikrokontroler M68HC05 memiliki memori EEPROM ini dalam satu chip. Timer Pada gambar 6.1 di bawah ini menunjukkan blok diagaram dari MC68HC705K1 timer multifungsi. Timer ini terdiri dari tiga seksi yang terkoneksi di mana masing-masing mengerjakan fungsi timing yang terpisah.

Pengerjaan timing dimulai dengan clock internal bus dari mikrokontroler, yaitu clock E. Clock E ini berasal dari frekuensi kristal dibagi dua. Clock E ini digunakan untuk mengendalikan prescaler pembagi empat. Dalam gilirannya, output dari clock prescaler ini adalah pencacah 8 bit. Nilai dari counter ini dapat dibaca oleh CPU setiap waktu pada lokasi memori alamat $09, yaitu pada TCR (Timer Counter Register). Walaupun terlihat seperti timer yang sederhana, timer ini sangat berguna dalam aplikasi. Saat pencacah 8-bit overflow dari $FF menuju $00, status bit TOF (Timer Overflow Flag) di dalam TCSR (Timer Control and Status Register) akan diset menjadi satu. State dari flag status ini dapat dites setiap waktu oleh beberapa instruksi CPU. Jika bit TOEI (Timer Overflow Interrupt Enable) dalam TCSR diset, maka saat pencacah overflow akan membangkitkan interrupt CPU. Pencacah akan overflow setiap 1024 siklus clock E. Di samping menyediakan interrupt yang periodik dan potensial, output dari pencacah 8-bit menghasilkan input untuk pencacah 7-bit tambahan. Output dari empat bit terakhir dari pencacah ini dapat digunakan untuk membangkitkan interrupt lain yang juga periodik. Salah satu dari kecepatan interrupt yang diinginkan dapat dipilih dengan menggunakan salah satu dari empat selektor yang dikontrol oleh dua bit kontrol RT1 dan RT0 di dalam TCSR. Tabel 6.1 di bawah ini menunjukkan kecepatan interrupt real-time yang tersedia jika beroperasi dengan mikrokontroler pada clock E berfrekuensi 2.0 MHz. Kecepatan Timer RTI dan COP (Clock E=2.0 MHz) RT1

RT0

Kecepatan RTI

Perioda Minimum COP Reset

0

0

8.2ms

57.3ms

0

1

16.4ms

114.7ms

1

0

32.8ms

229.4ms

1

1

65.5ms

458.8ms

COP (Computer Operating Properly) Stage akhir dari sistem timer multifungsi ini memiliki pencacah 3-bit yang membentuk sistem watchdog COP (Computer Operating Properly). Sistem COP ini dimaksudkan untuk memproteksi

sistem dari kegagalan software. Jika diaktifkan, rentetan proses reset COP harus dilakukan sebelum melewati perioda time-out sehingga COP tidak akan time-out. Jika COP time-out akan mereset mikrokontroler. Untuk menghindari COP dari time-out dan mereset mikrokontroler, bit 0 pada lokasi memori $03F0 (COPR) harus ditulis dengan logika 0 sebelum COP time-out. Karena input dari timer COP berhubungan dengan output dari rangkaian interrupt timer, maka merubah kecepatan RTI akan juga berakibat perubahan terhadap waktu reset dari COP.

Related Documents


More Documents from "Zainal Abidin"