Struktur Perangkat Keras AT89S51 Sistem Interupsi

Special Function Register di alamat 8EH ALE hanya akan aktif pada saat mengakses memori ekster- nal MOVX MOVC 29 PSEN Pin ini berfungsi pada saat mengeksekusi program yang ter- letak pada memori eksternal. PSEN akan aktif dua kali setiap cycle 31 EA Pada kondisi low maka pin ini akan berfungsi sebagai EA yaitu mikrokontroler akan menjalankan program yang ada pada memori eksternal setelah sistem direset Apabila berkondisi high maka pin ini akan berfungsi untuk menjalankan program yang ada pada memori internal 18 XTAL1 Input Oscillator 19 XTAL2 Output Oscillator

2.1.3 Struktur Perangkat Keras AT89S51

Struktur mikrokontroler AT89S51 diotaki oleh CPU 8 bit yang terhubung melalui satu jalur bus dengan memori prnyimpanan berupa Ram dan ROM serta jalur IO berupa port bit IO dan port serial. Selain itu terdapat fasilitas timercounter internal dan jalur interface address dan data ke memori ekstermal. Blok diagram dan struktur mikrokontroler AT89S51 adalah sebagai berikut : Gambar 2.2 Blok Diagram AT89S51

2.1.4 Struktur Memori

Dalam pengertian MCS51, Random Access Memory dalam chip AT89x51 adalah memoridata, yaitu memori yang dipakai untuk menyimpan data, sedangkan Flash PEROM merupakan memori penampung program pengendali AT89x51, dikenal sebagai memori-program. Karena kedua memori itu memang dibedakan dengan tegas, maka kedua memori itu mempunyai penomoran yang terpisah. Memori-program dinomori sendiri, pada AT89S51 mulai dari nomor 0000 sampai 0FFF. Sedangkan memori-data yang hanya 256 byte dinomori dari nomor 00 sampai FF. Gambar 5 Denah Memori-data Seperti terlihat dalam denah memori-data Gambar 5, memori-data dibagi menjadi dua bagian, memori nomor 00 sampai 7F merupakan memori seperti RAM selayaknya meskipun beberapa bagian mempunyai kegunaan khusus, sedangkan memori nomor 80 sampai FF dipakai sangat khusus yang dinamakan sebagai Special Function Register Pelatihan Mikrokontroler. Gambar 2.3 Denah Memori Data Seperti terlihat dalam denah memori-data Gambar 5, memori-data dibagi menjadi dua bagian, memori nomor 00 sampai 7F merupakan memori seperti RAM selayaknya meskipun beberapa bagian mempunyai kegunaan khusus, sedangkan memori nomor 80 sampai FF dipakai sangat khusus yang dinamakan sebagai Special Function Register. Memori-data nomor 00 sampai 7F bisa dipakai sebagai memori penyimpan data biasa, dibagi menjadi 3 bagian:  Memori nomor 00 sampai 18 selain sebagai memori-data biasa, bisa pula dipakai sebagai Register Serba Guna General Purpose Register.  Memori nomor 20 sampai 2F selain sebagai memori-data biasa, bisa dipakai untuk menyimpan informasi dalam level bit.  Memori nomor 30 sampai 7F sebanyak 80 byte merupakan memori-data biasa, bisa dipakai untuk menyimpan data maupun dipakai sebagai Stack.

A. Register Serba Guna

Register Serba Guna General Purpose Register menempati memori-data nomor 00 sampai 18, 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.

B. Memori Level Bit

Memori-data nomor 20 sampai 2F 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 00 sampai 7F. Informasi dalam level bit tersebut masing-masing bisa di-‘1’-kan, di - ‘0’-kan dengan instruksi.

C. 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 inputoutput 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.

2.1.5 Register Mikrokontroler

AT89S51 Untuk keperluan penulisan program, setiap mikroprosesormikrokontroler 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. Di samping itu MCS51 masih mempunyai Register Serba Guna R0..R7 yang sudah disebut dibagian atas. Dalam mikroprosesormikrokontroler 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.4 Susunan Register Dasar MCS51 Kegunaan dan pemakaian register-register dasar tersebut antara lain sebagai berikut:

A. Program Counter

Program Counter PC dalam AT89S51 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 memori-program 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.

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

C. 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 sub-rutin. 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.

D. Program Status Word

Program Status Word PSW berfungsi mencatat kondisi prosesor setelah melaksanakan instruksi. Pembahasan tentang PSW secara rinci akan dilakukan dibagian lain.

E. Register B

Merupakan register dengan kapasitas 8 bit, merupakan register pembantu Akumulator saat menjalankan instruk perkalian dan pembagian.

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

2.1.6 PewaktuPencacah TimerCounter

Timer sangat diperlukan untuk membuat delaytundaan waktu. AT89S51 menyediakan fasilitas timer 16 bit sebanyak 2 buah yaitu Timer 0 dan Timer 2. Timer ini juga bisa di fungsikan sebagai counterpencacah.

A. Timer bekerja dengan cara menghitung pulsa clock internal mikrokontroler

yang dihasilkan dari rangkaian osilator. Jumlah pulsa clock akan dibandingkan dengan sebuah nilai yang terdapat dalam register timer TH dan TL. Jika jumlah pulsa clock sama dengan nilai timer, maka sebuah interrupt akan terjadi ditandai oleh flag TF. Interrupt ini dapat dipantau oleh program sebagai tanda bahwa timer telah overflow.

B. Counter bekerja dengan cara menghitung pulsa eksternal pada P3.4 T0

dan P3.5 T1. Jumlah pulsa ini akan disimpan dalam register timer TH dan TL. Gambar 2.5 TimerCounter Logic A. Timer akan menghitung pulsa clock dari osilator yang sebelumnya telah dibagi 12. Agar berfungsi sebagai timer maka : Bit CT dalam TMOD harus 0 timer operation Bit TRx dalam TCON harus 1 timer run Bit Gate dalam TMOD harus 0 atau pin INTx harus 1.

B. Counter menghitung pulsa dari pin input T0 dan T1. Agar

berfungsi sebagai counter maka : Bit CT dalam TMOD harus 1 counter operation. Bit TRx dalam TCON harus 1 timer run Bit Gate dalam TMOD harus 0 atau pin INTx harus 1.

C. Register TCON

Gambar 2.6 TCON Timer Control Special Function Register Keterangan : Tabel 2.2 TCON Timer Control Special Function Register Bit Symbol Fuction 7 TF1 Timer 1 overflow flag. Set saat timer berubah dari satu ke nol. Clear saat prosesor mengeksekusi interrupt service routine pada address 001Bh 6 TR1 Timer 1 run control bit. Set 1 oleh program agar timer mulai menghitung. Clear oleh program untuk menghentikan timer, bukan me-reset timer. 5 TF0 Timer 0 overflow flag. Set saat timer berubah dari satu ke nol. Clear saat prosesor mengeksekusi interrupt service routine pada address 000Bh. 4 TR0 Timer 0 run control bit. Set 1 oleh program agar timer mulai Menghitung. Clear oleh program untuk menghentikan timer, bukan me-reset timer. 3 IE1 External interrupt 1 edge flag. Set 1 pada saat transisi sinyal high ke low diterima oleh port3 pin 3.3 INT1. Clear saat prosesor mengeksekusi interrupt service routine pada address 0013h.Tidak terkait dengan operasi timer. 2 IT1 External interrupt 1 signal type control bit. Set 1 oleh program untuk mengaktifkan external interrupt 1 yang dipicu oleh sisi turun sinyal falling edgetransisi high ke low. Clear oleh program untuk mengaktifkan sinyal low pada external interrupt 1 untuk menghasilkan sebuah interrupt. 1 IE0 External interrupt 0 edge flag. Set 1 pada saat transisi sinyal high ke low diterima oleh port3 pin 3.2 INT0. Clear saat prosesor mengeksekusi interrupt service routine pada address 0003h.Tidak terkait dengan operasi timer. IT0 External interrupt 0 signal type control bit. Set 1 oleh program untuk mengaktifkan external interrupt 0 yang dipicu oleh sisi turun sinyal falling edgetransisi high ke low. Clear oleh program untuk mengaktifkan sinyal low pada external interrupt 0 untuk menghasilkan sebuah interrupt.

D. Register TMOD

Gambar 2.7 TMOD Timer Mode Special Function Register Keterangan : Tabel 2.3 TMOD Timer Mode Special Function Register Bit Symbol Fuction 73 Gate OR gate enable bit. Mengendalikan RUNSTOP timer 10. Set oleh program untuk mengaktifkan timer RUN jika bit TR10 pada TCON=1 dan sinyal pada pin INT01 high. Clear oleh program untuk mengaktifkan timerR UN jika bit TR10 pada TCON=1. 62 CT Set oleh program untuk membuat time1r 0 berfungsi sebagai counter yang akan menghitung pulsa eksternal pada pin3 .5 T1 atau 3.4 T0. Clear oleh program untuk membuat timer1 0 berfungsi sebagai timer yang akan menghitung pulsa clock intern.al 51 M1 Timercounter operating mode select bit . Setclear oleh program untuk memilih mode 40 M0 Timercounter operating mode select bit . Setclear oleh program untuk memilih mode

E. TimerCounter Interrupt

TimerCounter pada AT89S51 adalah sebuah Up Counter, nilai counternya akan naik increment dari nilai awalnya sampai nilai maksimumnya dan kembali ke nilai nol. Saat bergulir menjadi nol overflow, maka sebuah timer flag akan bernilai 1. Flag ini dapat diuji oleh program untuk menandakan bahwa counter telah selesai menghitung, atau flag tersebut bisa digunakan untuk meng-interrupt program. Nilai awal timercounter harus dimasukkan dulu ke dalam timer register Timer High TH dan Timer Low TL sebelum timercounter dijalankan. Gambar 2.8 16-Bit Up Counter Gambar 2.9 Mode Operasi Timer Pemilihan mode operasi timer ditentukan pada bit M1 dan M0 dalam register TMOD. Ada 4 mode operasi yaitu :

A. Mode 0 : 13-bit TimerCounter

Dengan mensetting M1M0 = 00 dalam TMOD menyebabkan register THx berfungsi sebagai counter 8 bit dan register TLx berfungsi sebagai counter 5 bit. Ketika overflow, TF1x akan 1. Nilai maksimumnya adalah 8191d atau 1FFFh.

B. Timer Mode 1. 16-bit TimerCounter

Register THx dan TLx masing-masing berfungsi sebagai counter 8 bit. Ketika overflow, TF1x akan 1 .Nilai maksimumnya adalah 65535d atau FFFFh.

C. Timer Mode 2. 8-bit Autoreload TimerCounter

Register TLx berfungsi sebagai counter 8 bit. Register THx berfungsi mengisi ulang autoreload register TLx ketika terjadi overflow TFx=1.

D. Timer Mode 3. Two 8 bit TimerCounter

Pada mode 3. Timer berfungsi sebagai counter 8 bit yang benar-benar terpisah satu sama lain. Timer 0 berfungsi sebagai timer sekaligus sebagai counter secara terpisah. TL0 digunakan sebagai counter 8 bit yang menghitung pulsa eksternal, dengan timer flag TF0. TH0 digunakan sebagai timer 8 bit yang menghitung pulsa clock internal, dengan timer flag TF1.

2.1.7 Sistem Interupsi

Interrupt adalah suatu kejadian atau peristiwa yang menyebabkan mikrokontroler berhenti sejenak untuk melayani interrupt tersebut. Program yang dijalankan pada saat melayani interrupt tersebut. Yang harus diperhatikan untuk menguanakan interupsi adalah, kita harus tahu sumber-sumber interupsi, vektor layanan interupsa dan yang terpenting rutin layanan interupsi, yaitu subrutin yang akan dikerjakan bila terjadi interupsi Gambar 2.10 Analogi Sistem Interupsi Pada AT89S51, ada 5 sumber interrupt yaitu a. System reset B. External 0 C. Timer 0 D. External 1 E. Timer 1 F. Serial Port.

2.2 Motor DC

Pada sebuah robot, motor ini merupakan bagian penggerak utama di mana hampir setiap robot pasti selalu menggunakan motor DC. Kecuali beberapa robot yang menggunakan pneumatic, muscle wire atau motor AC. Motor DC terdiri dari sebuah magnet permanen dengan dua kutub dan kumparan, cincin belah yang berfungsi sebagai komutator pemutus arus a. Arus mengalir dari sisi kiri cincin belah ke sisi kanan. Arus ini akan dilanjutkan ke kumparan yang terkait pada cincin belah b. Arus mengalir dalam kumparan menimbulkan medan magnet dan membentuk kutub-kutub magnet pada kumparan c. Kutub magnet yang sama dengan kutub magnet permanen akan saling tolak menolak dan kumparan akan bergerak memutar hingga kumparan berada pada posisi di mana kedua kutubnya berbeda dengan kutub magnet permanen. S U Magnet permanen Kumparan Cincin Belah 1 Arus mengalir kutub kiri ke kutub kanan 2 Arus mengalir pada kumparan 3 Gerakan memutar terjadi Sikat Gambar 2.11 Fase 1 dari Motor DC