P. 1
Modul Pelatihan Mikrokontroler AT89S51

Modul Pelatihan Mikrokontroler AT89S51

|Views: 340|Likes:
Published by Hannasy Arif

More info:

Published by: Hannasy Arif on Mar 31, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

04/05/2014

pdf

text

original

Sections

  • Features 8-bit Microcontroller with 4K Bytes Flash
  • TENTANG MICROCONTROLLER
  • DISKRIPSI
  • MICROCONTROLLER MARKET
  • 8 BIT MIKROKONTROLER
  • RESET VALUE
  • SISTEMCLOCK
  • Register Serba Guna
  • Memori level Bit
  • Special Function Register (SFR)
  • Register Dasar MCS51
  • Akumulator
  • Stack Pointer Register
  • ProgramStatus Word
  • Register B
  • DPH dan DPL
  • ASEMBBLY OPERATION &SINTAX PROGRAM
  • ARITHMETIC OPERATIONS
  • Mnemonic Description Bytes Cycles
  • LOGICAL OPERATIONS
  • DATA TRANSFER
  • BOOLEAN VARIABLE MANIPULATION
  • Mnemonic Description Bytes Cycles
  • PROGRAMAND MACHINE CONTROL
  • Notes on data addressing modes
  • Notes on programaddressing modes
  • Hardware Conection
  • Penjelasan
  • Penjelasan
  • PORT PARALEL UNTUK MASUKAN
  • Prinsip kerja hardware,
  • Tampilan P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 Hexa angka g dot c b a f e d
  • Sarana Timer/Counter dalamMCS51
  • Mengatur Timer
  • Sumber interupsi:
  • Alamat vektor interupsi
  • TEKNIK ANTARMUKA DENGAN ADC 0804
  • Antar Muka dengan Motor Stepper
  • ANTAR MUKA DENGAN LCD 16x2
  • RELAY

HIMPUNAN MAHASISWA TEKNIK ELEKTRO PROGRAM DIPLOMA TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS GADJAH MADA

1

INTRODUCTION OF MICROCONTROLLERS AT89S51
Features 8-bit Microcontroller with 4K Bytes Flash • Compatible with MCS-51® Products • 4K Bytes of In-System Programmable (ISP) Flash Memory – Endurance: 1000 Write/Erase Cycles *) • 4.0V to 5.5V Operating Range • Fully Static Operation: 0 Hz to 33 MHz *) • Three-level Program Memory Lock • 128 x 8-bit Internal RAM • 32 Programmable I/O Lines • Two 16-bit Timer/Counters • Six Interrupt Sources • Full Duplex UART Serial Channel • Low-power Idle and Power-down Modes • Interrupt Recovery from Power-down Mode *) • Watchdog Timer *) • Dual Data Pointer *) • Power-off Flag *) • Fast Programming Time *) Ket: *) Tidak diperoleh di versi sebelumnya yaitu AT89C51 TENTANG MICROCONTROLLER DISKRIPSI Pada tahun 1970 mikroposesor (‘computer on a chip’) intel 4004 pertama diproduksi secara masal, pertumbuhannya sangat cepat. Pengembangan mikoprosesor dengan menggunakan teknik pabrikasi yang sama dan konsep pemrograman yang sama melahirkan mikrokontroler. Mikrokontroler tidak dikenal secara luas karena hanya ditujukan untuk komunitas teknik. Mikroprosesor adalah cpu computer, untuk dapat digunakan secara umum,masih diperlukan: • Memory (RAM, ROM) dan juga decoder memory • I/O dan decoder I/O • Piranti khusus (Interupsi, timer, counter, etc) • Clock Generator Mikrokontroler didesain sebagai True computer on a chip, jadi mikrokontroler sudah mempunyai piranti-piranti tambahan untuk membangun suatu sistem computer digital. Mikrokontroler dirancang dengan dengan intruksi yang bisa mengakses piranti terprogram dan dioptimalkan untuk instruksi bit dan byte, sementara computer PC didesain dengan instruksi untuk mengases data data multy byte.
Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006

2 MICROCONTROLLER MARKET 4 bit Mikrokontroler mikrokontroler terlaris dengan minimal pin dan ukuran sehingga murah sudah cukup “cerdas” untuk mengendalikan peralatan sederhana Manufacture Hitachi National OKI TI TOSHIBA Model HMCS COP420 MSM6411 TMS1000 TLCS47 Pins 28 28 16 28 42 i/o 10 23 11 23 35 Counter 0 1 0 0 2 Ram 32 64 32 64 128 Rom 512 1K 1K 1K 2K Feature

8 BIT MIKROKONTROLER Transisi antara volume besar 4bit dengan performa tinggi 16 bit dan 32 bit Mampu menangani data dalam byte dan bisa digunakan untuk komputasi sederhana. Digunakam untuk pengendalian lebih komplek seperti pengendalian mesin-mesin dan kolektor data. Diproduksi baik dengan ROM, EPROM, maupun ROMless, bahkan beberapa uC dilengkapi dengan piranti tambahan., seperti ADC dan DAC. Manufacture Intel National Motorola TI Zilog Model 8051 COP820 68HC11 TMS370 Z8820 Pins 40 28 52 68 44 I/O 32 24 40 55 40 Counter 2 1 2 2 2 RAM 128 64 256 256 272 ROM 4K 1K 4K 4K 8K Feature

ADC,WDT

Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006

3

ARSITEKTUR MIKROKONTROLER AT89S51

Gambar 1. Arsitektur

Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006

4 RESET VALUE berikut: Saat mikrokontroler di reset, maka nilai dari register-register mikrokontroler adalah sebagai

Mikrokontroler dapat di reset dengan memberikan sinyal ‘high’ (1) pada kaki reset (pin 9) untuk periode tertentu, besarnya periode ini adalah 2 periode siklus mesin. Dibawah ini adalah sistem minimum agar mikrokontroler bisa bekerja dengan normal.

Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006

Sistem Clock Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . Sistem minimum Sistem diatas bekerja sebagai berikut: Kapasitor C1 dan Resistor R1 digunakan untuk sistem Reset. Nilai ini yang akan menjadi acuan waktu operasi CPU. Nilai dari clok ini tergantung dari keramik resonator (x-tal) yang diberikan SISTEM CLOCK Mikrokontroler. Setelah itu pin 9 akan berlogika 0 kembali.5 Gambar 2. Kapasitor C2 dan C3. dipasang bersamaan dengan keramik resonator (x-tal) untuk menghasilkan Clock internal. mempunyai sistem pewaktuan CPU. kita tinggal memasang komponen seperti di bawah ini: Gambar 3. selama 2 siklus mesin. 12 siklus clock. Artinya setiap 12 siklus yang dihasilkan oleh ceramic resonator maka akan menghasilkan satu siklus mesin. saat pertama suplay diberikan ke mikrokontroler maka kaki 9 akan berlogika 1. sistem ini bisa di bangun dari clock eksternal maupun clock internal. Untuk mendesain sistem mikrokontroler kita memerlukan sistem clock. Untuk clock internal. Proses seperti ini bisa terjadi berdasarkan proses pengisian dan pengosongan kapasitor.

7. atau sebagai high order address.28 10.39 1..3 P3. P2.0.0 P1..1 P3..A0 alamat rendah dan bus data untuk memori eksternal Sebagai port I/0 biasa.8 21.. pin ini berguna saat flash programming. juga bisa sebagai A7. mempunyai internal pull up dan berfungsi sebagai input dengan memberikan logika 1 Terdapat pin MISO. P0.. namun juga mempunyai fungsi khusus RXD Port serial input TXD Port serial output INT0 External Interupt 0 INT1 External Interupt 1 T0 External timer 0 input Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 Alternatif .7 P2. pada saat mengakakses memori eksternal. dan SCK. MOSI.4 Ket Sebagai Kaki Suplay GND Sebagai Kaki Suplay VCC D7...6 FUNGSI MASING-MASING PIN Gambar 4. Sebagai I/O biasa. MOSI. A15 Port 0 sebagai I/0 biasa..17 10 11 12 13 14 Nama GND VCC P0. Artinya mikrokontroler ini mampu diprogram meskipun dalam kondiasi bekerja. Diwah ini disajikan fungsi pin untuk mikrokontroler AT89S51 Nomor 20 40 32.D0 & Port 0 dapat berfungsi sebagai I/0 biasa. fungsinya sama seperti pada seri sebelumnya. Deskripsi Pin Yang membedakan mikrokontroler AT89S51 dengan C51(seri sebelumnya) adalah cara pengisian program (flash programming). Letak perbedaan pada hardware adalah adanya MOSI.0. Adapun fungsi dari pin pin yang lain.7 Port 3 P3. P1.2 P3. SCK A8...0 P3. Pada mikrokontroler AT89S51 terdapat fasilitas ISP (In System Programming).

5 P3.6 P3.7 RST ALE T1 WR RD Prog External timer 1 input External data memory write strobe External data memory read strobe Reset aktiv dengan logika 1 minimal 2 siklus Pin ini dapat berfungsi sebagai Address Latch Enable (ALE) yang me-latch low byte address pada saat mengakses memori eksternal Sedangkan pada saat Flash Programming (PROG) berfungsi sebagai pulse input untuk Pada operasi normal ALE akan mengeluarkan sinyal clock sebesar 1/16 frekwensi oscillator kecuali pada saat mengakses memori eksternal Sinyal clock pada pin ini dapat pula didisable dengan men-set bit 0 dari Special Function Register di alamat 8EH ALE hanya akan aktif pada saat mengakses memori eksternal (MOVX & MOVC) Pin ini berfungsi pada saat mengeksekusi program yang terletak pada memori eksternal. PSEN akan aktif dua kali setiap cycle 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 Input Oscillator Output Oscillator 29 PSEN 31 EA 18 19 XTAL1 XTAL2 Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 .7 15 16 17 9 30 P3.

8 STRUKTUR MEMORI Dalam pengertian MCS51. pada AT89S51 mulai dari nomor $0000 sampai $0FFF. Memori-program dinomori sendiri. memori-data dibagi menjadi dua bagian. maka kedua memori itu mempunyai penomoran yang terpisah. Random Access Memory dalam chip AT89x51 adalah memoridata. sedangkan Flash PEROM merupakan memori penampung program pengendali AT89x51. sedangkan memori nomor $80 sampai $FF dipakai sangat khusus yang dinamakan sebagai Special Function Register Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . yaitu memori yang dipakai untuk menyimpan data. 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 nomor $00 sampai $7F merupakan memori seperti RAM selayaknya meskipun beberapa bagian mempunyai kegunaan khusus. Karena kedua memori itu memang dibedakan dengan tegas. dikenal sebagai memori-program.

tidak lagi dengan nomor memori. Pengertian ini bisa diperjelas dengan contoh 2 instruksi berikut : MOV A. • Memori nomor $20 sampai $2F selain sebagai memori-data biasa. bisa dipakai untuk menyimpan data maupun dipakai sebagai Stack. R4..R4 Instruksi pertama mempunyai makna isi memori-data nomor 4 di-copy-kan ke Akumulator A. Selain itu. maka yang dianggap sebagai R0 bukan lagi memori-data nomor 0 melainkan memori-data nomor 8. 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. R5. R3. R3. R4. R6 dan R7. Dengan cara ini instruksi yang terbentuk bisa lebih sederhana dan bekerja lebih cepat. Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . Karena R4 menempati memori-data nomor 4. jadi kedua instruksi itu berakibat sama bagi Akumulator A. bisa dipakai untuk menyimpan informasi dalam level bit. Register 1 . R1.9 Memori-data nomor $00 sampai $7F bisa dipakai sebagai memori penyimpan data biasa. R6 dan R7). • Memori nomor $30 sampai $7F (sebanyak 80 byte) merupakan memori-data biasa. dibagi menjadi 3 bagian: • Memori nomor $00 sampai $18 selain sebagai memori-data biasa. Tapi saat diterjemahkan ke kode mesin. demikian pula kalau yang diaktifkan Kelompok Register 3 maka memori-data nomor 18h yang menjadi R0.04H MOV A. Register 7 (R0. Empat kelompok Register Serba Guna itu tidak bisa dipakai secara bersamaan. Dalam penulisan program memori-memori ini bisa langsung disebut sebagai R0. saat setelah reset yang aktif dipakai adalah Kelompok Register 0 (Register Bank 0). Kalau yang diaktifkan adalah Kelompok Register 1. khusus untuk Register 0 dan Register 1 (R0 dan R1) masih punya mempunyai kemampuan lain. Setiap byte memori di daerah ini bisa dipakai menampung 8 bit informasi yang masing-masing dinomori tersendiri. sedangkan instruksi kedua artinya isi R4 di-copy-kan ke Akumulator A. 8 byte memori dari masing-masing Kelompok itu dikenali sebagai Register 0. bisa pula dipakai sebagai Register Serba Guna (General Purpose Register). Kelompok Register yang aktif dipilih dengan cara mengatur bit RS0 dan RS1 yang ada di dalam Register PSW (Program Status Word).‘0’-kan dengan instruksi. jadi instruksi kedua lebih sederhana dari instruksi pertama. memori sebanyak 32 byte ini dikelompokkan menjadi 4 Kelompok Register (Register Bank). hal ini akan dibicarakan lebih lanjut di belakang. R1. di . kedua register ini bisa dipakai sebagai register penampung alamat yang dipakai dalam penyebutan memori secara tidak langsung (indirect memori addressing). Informasi dalam level bit tersebut masing-masing bisa di-‘1’-kan. R2. R5. intruksi pertama dirubah menjadi E5 04 (heksadesimal) dan instruksi kedua menjadi E6 (heksadesimal). Register Serba Guna Register Serba Guna (General Purpose Register) menempati memori-data nomor $00 sampai $18. R2. Memori level Bit Memori-data nomor $20 sampai $2F bisa dipakai menampung informasi dalam level bit.

Pengertian ini dipertegas dengn intsruksi-instruksi berikut: MOV 21H. atau sama dengan membuat bit nomor 0 dari memori-data nomor $20 menjadi ‘1’. yakni penyebutan nomor memori secara langsung (direct memory addressing) dan penyebutan nomor memori secara tidak langsung (indirect memory addressing) lewat bantuan R0 dan R1. sedangkan bit-bit lainnya dalam memori nomor $2F tidak berubah nilai.#0FH Sama dengan hasil kerja instruksi-instruksi berikut : SETB SETB SETB SETB CLR CLR CLR CLR 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH Instruksi MOV 21H. Hal ini akan dibahas lebih lanjut di bagian lain. dalam menyebut memori-data bisa dipakai dua cara. Instruksi SETB $00 mengakibatkan memori-bit nomor 0 menjadi ‘1’. Sedangkan instruksi CLR $7F mengakibatkan memori-bit nomor $7F menjadi ‘0’. #0FH Sedangkan untuk memenyimpan 0FH ke Port 1 yang di SFR menempati memori-data nomor 90H. dalam hal penulisan program SFR diperlakukan persis sama dengan memoridata. Special Function Register (SFR) Register Khusus (SFR . hanya saja cara penyebutannya saja yang berlainan.10 Pengertian di atas bisa dipikirkan seolah-olah MCS51 mempunyai jenis memori yang lain. satau sama dengan membuat bit nomor 7 dari memori-data nomor $2F menjadi ‘0’. Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . misalnya tempat untuk berhubungan dengan port paralel P1 atau P3. instruksi yang dipergunakan adalah : MOV 90H. instruksi yang dipergunakan adalah : MOV 60H. Meskipun demikian.Special Function Register) adalah satu daerah RAM dalam IC keluarga MCS51 yang dipakai untuk mengatur perilaku MCS51 dalam hal-hal khusus. dan sarana input/output lainnya. berarti mengisi memori-bit nomor 0FH sampai 08H dengan bilangan biner 00001111 yang bisa dinyatakan dengan 8 baris instruksi berikutnya. tapi sesungguhnya kedua jenis memori itu tetap sama. tapi tidak umum dipakai untuk menyimpan data seperti layaknya memori-data. Untuk mengisi memori-data nomor 60H dengan bilangan 0FH. #0FH Membandingkan kedua instruksi di atas bisa dimengerti dalam segi penulisan program SFR diperlakukan persis sama dengan memori-data. Meskipun demikian. sedangkan bit-bit lainnya dalam memori nomor $20 tidak berubah nilai.#0FH mempunyai makna mengisi memori-data nomor 21H dengan nilai 0FH (atau bilangan biner 00001111). Tapi untuk SFR hanya bisa dipakai penyebutan nomor memori secara langsung (direct memory addressing) saja.

Stack Pointer Register. Program Status Register. Akumulator. MCS51 mempunyai semua register baku ini. antara lain adalah Register B. Ada instruksi yang hanya 1 byte. dengan demikian pertambahan nilai PC setelah menjalankan instruksi. Di samping itu MCS51 masih mempunyai Register Serba Guna R0. Nilai PC otomatis bertambah 1 setelah prosesor mengambil instruksi 1 byte.. Gambar 6 Susunan Register Dasar MCS51 Kegunaan dan pemakaian register-register dasar tersebut antara lain sebagai berikut: Program Counter Program Counter (PC) dalam AT89S51 merupakan register dengan kapasitas 16 bit. Ada beberapa macam register merupakan register baku yang bisa dijumpai disemua jenis mikroprosesor/ mikrokontroler. ada instruksi yang sampai 4 byte. register-register dasar biasanya ditempatkan ditempat tersendiri dalam inti prosesor. Di dalam PC dicatat nomor memori-program yang menyimpan instruksi berikutnya yang akan diambil (fetch) sebagai instruksi untuk dikerjakan (execute). setiap mikroprosesor/mikrokontroler selalu dilengkapi dengan Register Dasar. ada register yang spesifik pada masing-masing prosesor. Sebagai register yang khas MCS51. Saat setelah reset PC bernilai 0000h.11 Register Dasar MCS51 Untuk keperluan penulisan program. • Program Counter ditempatkan ditempat tersendiri di dalam inti prosesor • Register Serba Guna R0. Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . tapi dalam MCS51 register-register itu ditempatkan secara terpisah. tergantung pada jumlah byte instruksi bersangkutan. Dalam mikroprosesor/mikrokontroler yang lain. Data Pointer High Byte dan Data Pointer Low Byte.R7 ditempatkan di salah satu bagian dari memori-data • Register lainnya ditempatkan dalam Special Function Register (SFR).. berarti MCS51 akan segera mengambil isi memori-program nomor 0 sebagai instruksi. Semua ini digambarkan dalam Gambar 4. Yang termasuk Register Baku antara lain Program Counter.R7 yang sudah disebut dibagian atas.

Stack Pointer Register adalah register yang berfungsi untuk mengatur kerja stack. Sesuai dengan namanya. hasil penjumlahan sebesar 50H ditampung di Akumulator.#20H ADD A. Pembahasan tentang PSW secara rinci akan dilakukan dibagian lain. nilai tersebut akan diambil kembali dari Stack dan dikembalikan ke PC saat prosesor selesai menjalankan sub-rutin. Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . Akumulator adalah sebuah register yang berfungsi untuk menampung (accumulate) hasil hasil pengolahan data dari banyak instruksi MCS51. merupakan register pembantu Akumulator saat menjalankan instruk perkalian dan pembagian. tapi dalam pemakaiannya kedua register ini digabungkan menjadi satu register 16 bit yang dinamakan sebagai Data Pointer Register (DPTR). Register B Merupakan register dengan kapasitas 8 bit.12 Akumulator Sesuai dengan namanya. dalam Stack Pointer Register disimpan nomor memori-data yang dipakai untuk operasi Stack berikutnya. DPH dan DPL Data Pointer High Byte (DPH) dan Data Pointer Low Byte (DPL) masing-masing merupakan register dengan kapasitas 8 bit. Stack Pointer Register Salah satu bagian dari memori-data dipakai sebagai Stack. instruksi kedua menambahkan bilangan 30H ke Akumulator. Program Status Word Program Status Word (PSW) berfungsi mencatat kondisi prosesor setelah melaksanakan instruksi. Akumulator bisa menampung data 8 bit (1 byte) dan merupakan register yang paling banyak kegunaannya. Register ini dipakai untuk mengalamati data dalam jangkauan yang luas. lebih dari setengah instruksi-instruksi MCS51 melibatkan Akumulator. yaitu tempat yang dipakai untuk menyimpan sementara nilai PC sebelum prosesor menjalankan sub-rutin. Instruksi-instruksi berikut memperjelas pengertian di atas : MOV A.#30H Instruksi pertama menyimpan nilai 20H ke Akumulator.

@Ri ANL A.#data XRL A. ADD A.Rn SUBB A.Rn XRL A.A ANL direct.#data ORL A.#data ORL direct.direct Description AND register to A AND direct byte to A AND indirect RAM to A AND immediate data to A AND A to direct byte AND immediate data to direct byte OR register to A OR direct byte to A OR indirect RAM to A OR immediate data to A OR A to direct byte OR immediate data to direct byte Exclusive-OR register to A Exclusive-OR direct byte to A Bytes Cycles 1 1 2 1 1 1 2 1 2 1 3 2 1 1 2 1 1 1 2 1 2 1 3 2 1 1 2 1 Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 .#data INC A INC Rn INC direct INC @Ri DEC A DEC Rn DEC direct DEC @Ri INC DPTR MUL AB DIV AB DA A Description Add register to A direct Add direct byte to A @Ri Add indirect RAM to A Add immediate data to A Add register to A with Carry Add direct byte to A with Carry Add indirect RAM to A with Carry Add immediate data to A with Carry Subtract register from A with Borrow Subtract direct byte from A with Borrow Subtract indirect RAM from A with Borrow Subtract immediate data from A with Borrow Increment A Increment register Increment direct byte Increment indirect RAM Decrement A Decrement register Decrement direct byte Decrement indirect RAM Increment Data Pointer Multiply A & B (A x B => BA) Divide A by B (A/B => A + B) Decimal Adjust A Bytes Cycles 1 1 2 1 1 1 2 1 1 1 2 1 1 1 2 1 1 1 2 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 2 1 4 1 4 1 1 LOGICAL OPERATIONS Mnemonic ANL A.Rn ORL A.Rn ADDC A.@Ri ADDC A.@Ri ORL A. ADD A.#data ADDC A.13 ASEMBBLY OPERATION & SINTAX PROGRAM ARITHMETIC OPERATIONS Mnemonic ADD A.A ORL direct.direct ADDC A.@Ri SUBB A.direct SUBB A.#data SUBB A.direct ANL A.Rn ANL A.Rn ADD A.#data ANL direct.direct ORL A.

A XRL direct.Rn XCH A.A MOV direct.A PUSH direct POP direct XCH A.@A+DPTR MOVC A.@DPTR MOVX @Ri.@Ri MOV direct.direct XCH A.@Ri MOV A.#data MOV DPTR.@Ri Move MOVX A.A MOVX @DPTR.Rn MOV direct.#data XRL direct.@A+PC MOVX A.14 XRL A.direct MOV Rn.@Ri XCHD A.direct MOV direct.A MOV @Ri.#data MOV @Ri.@Ri XRL A.A MOV Rn.#data MOV Rn.direct MOV @Ri.direct MOV A.#data CLR A CPL A RL A RLC A RR A RRC A SWAP A DATA TRANSFER Mnemonic MOV A.@Ri Description Move register to A Move direct byte to A Move indirect RAM to A Move immediate data to A Move A to register Move direct byte to register Move immediate data to register Move A to direct byte Move register to direct byte Move direct byte to direct byte Move indirect RAM to direct byte Move immediate data to direct byte Move A to indirect RAM Move direct byte to indirect RAM Move immediate data to indirect RAM Load Data Pointer with 16-bit constant Move Code byte relative to DPTR to A Move Code byte relative to PC to A External RAM (8-bit addr) to A Move External RAM (16-bit addr) to A Move A to External RAM (8-bit addr) Move A to External RAM (16-bit addr) Push direct byte onto stack Pop direct byte from stack Exchange register with A Exchange direct byte with A Exchange indirect RAM with A Exchange low-order Digit indirect RAM with A Bytes Cycles 1 1 2 1 1 1 2 1 1 1 2 2 2 1 2 1 2 2 3 2 2 2 3 2 1 1 2 2 2 1 2 1 1 2 1 2 1 2 1 2 1 2 1 2 2 2 2 2 1 1 2 1 1 1 1 1 Exclusive-OR indirect RAM to A Exclusive-OR immediate data to A Exclusive-OR A to direct byte Exclusive-OR immediate data to direct byte Clear A Complement A Rotate A Left Rotate A Left through Carry Rotate A Right Rotate A Right through Carry Swap nibbles within A 1 2 2 3 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 .Rn MOV A.#data16 MOVC A.#data MOV direct.

to ind.rel CJNE A.rel CJNE A.15 BOOLEAN VARIABLE MANIPULATION Mnemonic CLR C CLR bit SETB C SETB bit CPL C CPL bit ANL C./bit ORL C.C Description Clear Carry flag Clear direct bit Set Carry flag Set direct bit Complement Carry flag Complement direct bit AND direct bit to Carry flag AND complement of direct bit to Carry flag OR direct bit to Carry flag OR complement of direct bit to Carry flag Move direct bit to Carry flag Move Carry flag to direct bit Bytes Cycles 1 1 2 1 1 1 2 1 1 1 2 1 2 2 2 2 2 2 2 2 2 1 2 2 PROGRAM AND MACHINE CONTROL Mnemonic ACALL addr11 LCALL addr16 RET RETI AJMP addr11 LJMP addr16 SJMP rel JMP @A+DPTR JZ rel JNZ rel JC rel JNC rel JB bit. & Jump if Not Equal Decrement register & Jump if Not Zero Decrement direct byte & Jump if Not Zero No operation Bytes Cycles 2 2 3 2 1 2 1 2 2 2 3 2 2 2 1 2 2 2 2 2 2 2 2 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 2 2 3 2 1 1 Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 .bit MOV bit.bit ANL C.rel CJNE Rn.rel JNB bit.rel DJNZ direct. & Jump if Not Equal Compare immed.#data.rel DJNZ Rn.rel NOP Description Absolute subroutine call Long subroutine call Return from subroutine Return from interrupt Absolute Jump Long Jump Short Jump (relative addr) Jump indirect relative to DPTR Jump if A is Zero Jump if A is Not Zero Jump if Carry flag is set Jump if No Carry flag Jump if direct Bit is set Jump if direct Bit is Not set Jump if direct Bit is set & Clear bit Compare direct to A & Jump if Not Equal Compare immediate to A & Jump if Not Equal Compare immed.rel CJNE @Ri. to reg.#data.rel JBC bit.#data./bit MOV C.bit ORL C.direct.

any I/O port. control or status bit Notes on program addressing modes addr16 Destination address may be anywhere in 64-kByte program address space addr11 Destination address will be within same 2-kByte page of program address space as first byte of the following instruction rel 8-bit offset relative to first byte of following instruction (+127. control or status register @Ri Indirect internal RAM location addressed by register R0 or R1 #data 8-bit constant included in instruction #data16 16-bit constant included in instruction bit 128 software flags. any I/O pin. -128) All mnemonics copyrighted © Intel Corporation 1979 Information from Intel Application Note AP-69 Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 .16 Notes on data addressing modes Rn Working register R0-R7 direct 128 internal RAM locations.

asm atau .OBJ? File. OH. dengan sintax seperti diatas). Kemudian di compile dalam dengan compiler asm51.HEX Selesai Gambar 7. kemudian kita simpan pada folder dengan lokasi yang sama dengan lokasi copiler ASM51. dalam folde C:\Mikro\ 2.LST Ya Di-Compile oleh OH File. seperti notepad. Jalankan ASM51 dengan perintah asm51 spasi namfile. menjadi file object. No Error Found 5. dsb. program diketik dalam bahasa asembler. Asembly Proses Untuk menulis program dalam bahasa asember kita bisa memanfaatkan teks editor. editor dos. biasanya ditampilkan no baris untuk letak kesalahan program kita 6.LST nya Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . Setelah kita menulis program dalam teks editor.h51.ASM Di-Compile oleh ASM51 Tidak File. lalu tekan enter 4. Contoh.asm. Dari sana lakukan hingga ada keterangan Assembly Complete. 1. Untuk melihat detail kesalahan kita kita bisa melihat file . Deri object di compile menjadi file dalam bentuk hexa Mulai Program. Jika ada bugs dalam program maka akan terlihat.17 PROSES PEMBUATAN PROGRAM Pada proses pembuatan program. Masuk ke direktori C:\Mikro\ dengan DOS 3. Buat folder untuk ASM 51. kita perlu simpan file kita dengan ekstensi .

0 Copyright 1986 Intel Corporation Deangan demikian sekarang kita telah mendapatkan file dalam bentuk . Kali ini kita menggunakan Software ISP-Programmer Version 3.obj DOS 5. Dibawah ini adalah contoh proses kompilasi file.. file inilah yang akan kita kirim ke mikrokontroler.0 (038-N) MCS-51 MACRO ASSEMBLER.18 7.2600] (C) Copyright 1985-2001 Microsoft Corp.2 Copyright 1979.0a. C:\Documents and Settings>cd. Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . 1983. V2. Untuk menulis ke mikriokontroler kita memerlukan sofrware downloader.HEX.0 (038-N) D:\mikro> OH V1. Microsoft Windows XP [Version 5. C:\Documents and Settings\Zero_Bit>cd. C:\>d: D:\>cd mikro D:\mikro>asm51 robotc.h51 DOS 5. sehingga kita tidak pusing lagi menghadapi proteksi yang diberikan oleh Windows XP.1. Selain itu software ini juga mampu digunakan untuk menulis progra pada mikrokontroler jenis AVR. NO ERRORS FOUND D:\mikro>oh robotc.. 1986 Intel Corporation ASSEMBLY COMPLETE. Alasan kita menggunakan software ini karena pada software ini telah dilengkapi driver untuk Windows XP.

dalah hal ini file harus berekstensi . apakah progarm program yang ditulis sudah sesuai dengan buffer Signature : membaca jenis mikrokontroler yang dipakai Reload : megisi ulang file yang sama namanya ke buffer About : Informasi pembuat Program Lock bit : Mengunci mikrokontroler.HEX Kemudian pilih Write dan pastikan tidak ada error Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . berupa file-file Hexa Verify : Untuk mengecek. digunakan saat program bersifat rahasia Cara menggunakan software Untuk pertama kali cek koneksi dengan hardware mwnggunakan perintah signature Pilih Open file untuk memanggil program kita. Software downloader Fitur yang disajikan: Read : Untuk membaca isi program dalam mikrokontroler Write : Untuk menulis mengisikan program dalam mikrokontroler Open : Membuka file dan enyimpannya ke buffer internal program Disp : Menampilkan isi Buffer.19 Gambar 8.

maka Led akan padam karena disana kita menggunakan conmmon anoda yang terhubung dengan VCC. Dan pastikan tidak ada error Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . .#00H end . Antarmuka Port 1 dengan LED Prinsip kerja Hardware. yang diahasilkan dari proses diatas Buka Program ISP-Flash Programmer Version 30. dan masukkan program yang akan kita isikan ke mikrokontroler Yang terakhir Klik Write. . Hal ini dikarenakan terjadi perbedaan tegangan pada kaki anoda dan katoda.20 PORT PARALEL AT89S51 Gambar 9. . Contoh program sederhana untuk menyalakan Led. Lakukan Proses Assembly dengan masuk ke dos. org 00h mov p1. Alamat mualainya program keluarkan data ke port 1 dengan nilai 00 Hexa atau 00000000 . misal C:\Mikro\.a Pilih Open File. yaitu saat kita memberikan logika 0 pada port 1 maka kita akan mendapatkan led menyala. yaitu masuk direktori C:\Mikro\ Ketikkan perintah Asm51 Nama_file. Simpan pada direktori yang sama dengan direktori ASM51.Biner done Ketik Program seperti diatas.asm Pastikan tidak ada error Ketikkan perintah OH Nama_file. saar kita memberikan logika 1.OBJ Sekarang kita sudah punya file Hexa nya.

---------------------------------------------------------------------. #0FEH .#11110000B ACALL DELAY SJMP MULAI . Program diatas hanya menyalakan Led pada port 1. sehingga 4 led menyala dan 4 led padam. (P1. jika R2 belum 0 ulangi lagi DJNZ R1. LED P1. kemudian kita menunda waktu dengan menggunakan looping program. subrutin ini hanya sekedar melakukan penundaan sesaat dengan cara . R1=R1-1.---------------------------------------------------------------------Org 0h MOV A. Lampu menyala pingpong kiri ke kanan.0 menyala duluan) MULAI: MOV P1.#00001111B ACALL DELAY MOV P1.$ .7 nyala (heksa= #0FH) lakukan penundaan sesaat (sub. . Kembali ke pemanggil subrutin DELAY END Penjelasan Yang Pertama dilakukan adalah memberikan data ke port 1 0FH. kanan ke kiri di port 1 . Program untuk membuat led Flip Flop ORG 0H MULAI: MOV P1.================================================================== . . kirim data ke Port 1 ACALL DELAY .A . R2=R2-1. program ditempatkan pada lokasi 0000H . Isi Register R1 dengan 255 (255x ulang DELAY2: MOV R2. karena sifat dari hardware active low.3 nyala (heksa= #0F0H) lakukan penundaan sesaat (sub. . DELAY) LED P1. mengulangi proses (pengurangan isi register) hingga dicapai suatu . maka led menyala. Isi Register R0 dengan 5 (5x ulang) DELAY1: MOV R1. Tampilan Led yang dipasang pada modul adalah Led pada port 1 Penjelasan.#0FFH . . tunda sebentar Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . jika R1 belum 0 ulangi DELAY2 DJNZ R0. hubungkan mikrokontroler dengan PC menggunakan DB25 Cable. jika R0 belum 0 ulangi DELAY1 RET . R0=R0-1.DELAY2 .================================================================== DELAY: MOV R0. DELAY) ulangi lagi dari awal . simpan data 11111110B ke akumulator .#5H .0 s/d P1. dengan cara memberikan data ke port 1 berupa bilangan 00 Hexa.DELAY1 .4 s/d P1. kondisi tertentu .21 Hardware Conection Pasang Power Suplay.#0 . Isi register R2 dengan 0 (256x ulang) DJNZ R2. Tunda waktu diperlukan agar efek kedipan led terlihat mata Program Untuk membuat led ping pong .

MULAI1 MULAI .#7FH. sehingga kondisi default-nya adalah high. ulangi lagi dari paling awal.#0FEh.22 RL CJNE A A. ulangi lagi! .Delay1 Ret End PORT PARALEL UNTUK MASUKAN Port-port mikrokontroler dilengkapi pull up internal. Ya. lanjutkan ke proses berikut.MULAI P1.$ Djnz R0.#0 Delay1: Mov R1. putar isi akumulator ke kanan 1 bit . apakah A=01111111B ? . . kirim data ke Port 1 .A DELAY A A. Isi Register R0 dengan 0 (256x ulang) .#0 Djnz R1. apakah A=11111110B ? ...Tidak. Gambar 10. . putar isi akumulator ke kiri 1 bit . kita tinggal memberikan logika high atau membiarkannya dalam kondisi default. Isi Register R1 dengan 0 (256x ulang) MULAI1: MOV ACALL RR CJNE SJMP Delay: Mov R0.. Untuk menjadikan Port ini sebagai input. Ya. tunda sebentar . ulangi lagi! . Antarmuka dengan keypad Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . Jika kita menginginkan sebuah masukan terbaca kita sebaiknya menggunakan masukan berup sinyal Low.Tidak..

---------------------------------------------------------------------ORG 0H MULAI: MOV A.#0 . .0 ditekan? (=11111110) Tidak! Ulangi lagi dari awal Ya! Apakah R0=0 (artinya lampu sedang mati)? Tidak! loncat ke proses mematikan lampu LED (TERUS) Ya! ubah status R0=1 (lampu menyala) dan hidupkan lampu LED di port 1 Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . . .0 untuk menghidupkan .P3 CJNE A. Simulasi penekanan tombol pd P3.---------------------------------------------------------------------ORG 0H MULAI: MOV A.1 maka data pada port 3 11111101 Biner atau 0FD Hexa. dan P3.#0 SJMP MULAI TERUS: CJNE A.TERUS MOV P1.23 Prinsip kerja hardware. . Baca tombol P3 dan simpan di akumulator Apakah tombol P3. .#0FEH. .MULAI MOV P1. . sambungkan modul Keypad 8 tombol ke port 3 . .--------------------------------------------------------------------. . .TERUS MOV MOV R0.#0FEH.P3 CJNE A. untuk menghidupkan/mematikan lampu pada Port 1 .#0..#1 P1. jika terjadi penekanan P3.MULAI CJNE R0. Simulasi penekanan tombol pd P3. Program akan mengecek isi port 3 jika data tersebut di temukan maka Led pada port 1 akan dimatikan . .0 sebagai toggle switch .. . Baca port 3 dan simpan isinya ke akumulator Apakah isi akumulator = 11111110B (P3.1 ditekan)? Tidak! lompat ke awal (label MULAI) Ya! Matikan lampu LED di port 1 Ulangi lagi dari awal.1 untuk mematikan LED pada Port 1 . program akan mengetahuai dengan menengok isi port 3 jika datanya sama (0FE H) maka Led pada port 1 dinyalakan. Dengan demikian port ini akan mempunyai logika sesuai dengan penekanan tombol Hardware Conection Pasang Modul Mikrokontroler.#0FDH. .---------------------------------------------------------------------.0 ditekan)? Tidak! lompat ke TERUS Ya! Hidupkan lampu LED di port 1 Ulangi lagi dari awal (label MULAI) Apakah isi akumulator = 11111101B (P3. . . . Penjelasan Saat keypad yang terhubung P3. . . Saat kita menekan tombol keypad maka signal reendah akan dikrim ke port 3 pada mikrokontroler. .0 di tekan maka data pada port 3 adalah 11111110 Biner atau 0FE Hexa.#0FFH SJMP MULAI END .

PROGRAM KEYPAD 4X4 DIPASANG . lompat ke A. OUTPUT PADA PORT 1 . Untuk menghindari bouncing .TUNGGU MULAI R0.3 P0.#0FFH.1 P0.6 P0.======================================= . Tunggu hingga tombol P3. Antarmuka dengan Matrik keypad Hardware Conection Pasang Modul mikrokontroler dengan menghubungkan keypad matrik dengn port 2.#0FFH TUNGGU Keypad Matrik Gambar 11.#0 P1. Ubah status R0=0 (lampu mati) . 0 Isikan program dibawah ini ke mikrokontroler . . untuk menghindari bouncing.5 P0.0 dilepas .P3 A. dan matikan lampu LED di port 1 . PADA PORT 0.0 P0.2 P0.7 Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 .======================================= KOLOM1 KOLOM2 KOLOM3 KOLOM4 BARIS1 BARIS2 BARIS3 BARIS4 BIT BIT BIT BIT BIT BIT BIT BIT P0. Ulangi lagi dari awal .24 TUNGGU: MOV CJNE SJMP TERUS: MOV MOV SJMP TUNGGU END .4 P0.

KEY4 KEYDATA. DATA DGN 1 .KEYDATA A.KEY3 KEYDATA. TOMBOL 2 DITEKAN? Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 .$ ULANG .#1 BARIS2.#5 BARIS3.KEY1 KEYDATA. MEMORY UNTUK ANTI BOUNCING KEYPAD A.KEY2 DELAY KEYBOUNC.KEY4 DELAY KEYBOUNC.KEY5 DELAY KEYBOUNC. . .#2 BARIS2. MEMORY DATA UNTUK KEYPAD .#0FFH. KONSTANTA ANTI BOUNCING PORT KEY PAD SCAN KOLOM 1 TOMBOL 1 DITEKAN? .KEY2 KEYDATA.KEY6 KEYDATA.25 KEYPORT KEYDATA KEYBOUNC ORG 0H ULANG: CALL MOV CJNE JMP DITEKAN: CPL MOV DJNZ JMP KEYPAD: MOV MOV CLR UL1: JB CALL DJNZ MOV RET KEY1: JB CALL DJNZ MOV RET KEY2: JB CALL DJNZ MOV RET KEY3: JB CALL DJNZ MOV RET KEY4: SETB CLR JB CALL DJNZ MOV RET KEY5: JB CALL DJNZ MOV RET KEY6: JB CALL DJNZ MOV EQU EQU EQU P0 50H 51H .KEY3 DELAY KEYBOUNC. PANGGIL SUB RUTIN KEYPAD KEYBOUNC.#8 .KEY5 KEYDATA.UL1 KEYDATA.DITEKAN ULANG A P1. ISI REG.KEY1 DELAY KEYBOUNC.#0AH KOLOM1 KOLOM2 BARIS1.#100 KEYPORT.A R0. KEYPAD CONNECT KE PORT 0 . .#7 BARIS4.#0FFH KOLOM1 BARIS1.KEY7 DELAY KEYBOUNC.#4 BARIS3.KEY6 DELAY KEYBOUNC.

#0FH MOV R0.#0FFH .KEY15 KEYDATA.KEY9 KEYDATA.#0EH JB BARIS4.#0 KOLOM2 KOLOM3 BARIS1.KEY12 DELAY KEYBOUNC.$ KEYDATA.KEY11 DELAY KEYBOUNC.KEY16 DELAY KEYBOUNC.#9 JB BARIS4.KEY8 DELAY KEYBOUNC.KEY14 DELAY KEYBOUNC.KEY13 KEYDATA.KEY12 KEYDATA.#0BH SETB KOLOM3 KOLOM4 BARIS1.#0DH JB BARIS3.#6 JB BARIS3.KEY11 KEYDATA.KEY14 KEYDATA.KEY13 DELAY KEYBOUNC.KEY8 KEYDATA.KEY7 KEYDATA.KEY15 DELAY KEYBOUNC.KEY10 DELAY KEYBOUNC.#0CH JB BARIS2.KEY10 KEYDATA.26 RET KEY7: JB CALL DJNZ MOV RET KEY8: SETB CLR JB CALL DJNZ MOV RET KEY9: JB CALL DJNZ MOV RET KEY10: CALL DJNZ MOV RET KEY11: CALL DJNZ MOV RET KEY12: CLR JB CALL DJNZ MOV RET KEY13: CALL DJNZ MOV RET KEY14: CALL DJNZ MOV RET KEY15: CALL DJNZ MOV RET KEY16: RET DELAY: DJNZ RET END Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 BARIS4.#3 BARIS2.KEY9 DELAY KEYBOUNC.

Rangkaian Dasar Saklar Elektronik Data yang diolah mikrokontroler adalah data hexa.27 PORT PARALEL UNTUK KELUARAN Gambar 12. Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . untuk dapat ditampilkan di seven segment kita bisa menggunakan dekoder hexa ke sevent segmen atau lewat konversi program. kita bisa menggunakan sistem look up table program kita memerlukan tabel konversi. perhatikan jangan sampaI terbalik. Antarmuka dengan Seven segment dengan 4 digit Gambar 13. untuk konveri. tabelnya adalah sebagai berikut: Hardware Conection Pasang Modul mikrokontroler dengan menghubungkannya dengan Modul seven segment pada port 1 dan 3.

1 e 0 1 0 1 1 1 0 1 0 1 P0.7 g 1 1 0 0 0 0 0 1 0 0 P0.4 b 0 0 0 0 0 1 1 0 0 0 P0.MATIKAN COMMON .4 DELAY P3.#042H P3.HIDUPKAN COMMON 1 .DELAY1 .6 DELAY P1.5 DELAY P3.2 f 0 1 1 1 0 0 0 1 0 0 P0.KELUARKAN DATA ANGKA 0 .TUNDA SEBENTAR .7 DELAY MULAI R1.#1 DJNZ R0.KELUARKAN DATA ANGKA 3 .$ R1.TUNDA SEBENTAR .4 DELAY P1.3 a 0 1 0 0 1 0 0 0 0 0 P0.5 DELAY P1.28 Tampilan angka 0 1 2 3 4 5 6 7 8 9 P0.PROGRAM UNTUK MENYALAKAN 4X 7SEGMENT COMMON ANODA .#050H P3.TUNDA INI DIGUNAKAN AGAR 7SEGMENT KELIHATAN .6 dot 1 1 1 1 1 1 1 1 1 1 P0.7 DELAY P3.KELUARKAN DATA ANGKA 1 MULAI: MOV CLR CALL SETB CALL MOV CLR CALL SETB CALL MOV CLR CALL SETB CALL MOV CLR CALL SETB CALL AJMP DELAY: MOV DELAY1: DJNZ RET END .#0C7H P3.MENYALA BERSAMAAN TIMER DAN COUNTER Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 .0 d 0 1 0 0 1 0 0 1 0 0 Hexa C0 CF 64 46 4B 52 50 C7 40 42 .================================================= .#040H P3.KELUARKAN DATA ANGKA 2 .5 c 0 0 1 0 0 0 0 0 0 0 P0.================================================= ORG 00H P1.6 DELAY P3.

memoridata internal nomor $6B) dan register TH1 (Timer 1 High Byte. Sarana Timer/Counter dalam MCS51 Keluarga mikrokontroler MCS51. Terjadinya limpahan pencacah ini dicatat dalam sebuah flip-flop tersendiri. karena kedudukan pencacah tersebut setara dengan waktu yang bisa ditentukan dengan pasti. masing-masing dinamakan sebagai Timer 0 dan Timer 1. memoridata internal nomor $6A) dan register TH0 (Timer 0 High Byte. Di samping itu. bagi pemakai mikrokontroler MCS51 perangkat tersebut dikenal sebagai SFR (Special Function Register) yang berkedudukan sebagai memori-data internal. Jika sebuah pencacah bekerja dengan frekuensi tetap yang sudah diketahui besarnya. sinyal denyut yang diumpankan ke pencacah harus pula bisa dikendalikan dengan mudah. yang pertama yalah sinyal denyut dengan frekuensi tetap yang sudah diketahui besarnya dan yang kedua adalah sinyal denyut dengan frekuensi tidak tetap. Pencacah biner untuk Timer 0 dibentuk dengan register TL0 (Timer 0 Low Byte. sinyal ini merupakan suatu hal yang penting sekali dalam pemakaian pencacah. dikatakan pencacah tersebut bekerja sebagai timer. kedudukan pencacah tersebut hanyalah menyatakan banyaknya pulsa yang sudah diterima pencacah.29 Pada dasarnya sarana input yang satu ini merupakan seperangkat pencacah biner (binary counter) yang terhubung langsung ke saluran-data mikrokontroler. dilengkapi dengan dua perangkat Timer/Counter. Jika sebuah pencacah bekerja dengan frekuensi yang tidak tetap. dikatakan pencacah tersebut bekerja sebagai counter. memori-data internal nomor $6D). Seperti layaknya pencacah biner. Gambar 14 Konsep dasar Timer/Counter sebagai sarana input Sinyal denyut yang diumpankan ke pencacah bisa dibedakan menjadi 2 macam. misalnya AT89S52. mempunyai tambahan satu perangkat Timer/Counter lagi yang dinamakan sebagai Timer 2. memori-data internal nomor $6C). Hal-hal yang dibicarakan di atas diringkas dalam Gambar 12. bila diperlukan mikrokontroler dapat pula merubah kedudukan pencacah tersebut. maka pada bagian akhir untaian pencacah akan timbul sinyal limpahan. Sedangkan untuk jenis yang lebih besar. Perangkat Timer/Counter tersebut merupakan perangkat keras yang menjadi satu dalam chip mikrokontroler MCS51. Pencacah biner untuk Timer 1 dibentuk dengan register TL1 (Timer 1 Low Byte. Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . misalnya AT89S51 dan AT89x051. bilamana sinyal denyut (clock) yang diumpankan sudah melebihi kapasitas pencacah. sehingga mikrokontroler bisa membaca kedudukan pancacah.

bisa disusun menjadi 4 macam Mode pencacah biner seperti terlihat dalam Gambar 2a sampai Gambar 2d. TH0. Mode 1 dan Mode 2 Timer 0 dan Timer 1 masing-masing bekerja sendiri. TL1 dan TH1 merupakan SFR (Special Function Register) yang dipakai untuk membentuk pencacah biner perangkat Timer 0 dan Timer 1. sehingga kapasitas pencacah biner yang tersbentuk adalah 16 bit. TH0.Pencacah Biner 16 Bit Mode ini sama dengan Mode 0.30 Pencacah biner pembentuk Timer/Counter MCS51 merupakan pencacah biner menaik (count up binary counter) yang mencacah dari $0000 sampai $FFFF. Pada Mode 3 TL0.Pencacah Biner 13 Bit Pencacah biner dibentuk dengan TLx (maksudnya bisa TL0 atau TL1) sebagai pencacah biner 5 bit (meskipun kapasitas sesungguhnya 8 bit). atau kombinasi mode lainnya sesuai dengan keperluan. Mode ini meneruskan sarana Timer yang ada pada mikrokontroler MCS48 (mikrokontroler pendahulu MCS51). limpahan dari pencacah biner 5 bit ini dihubungkan ke THx (maksudnya bisa TH0 atau TH1) membentuk sebuah untaian pencacah biner 13 bit. saat kedudukan pencacah berubah dari $FFFF kembali ke $0000 akan timbul sinyal limpahan. Untuk mengatur kerja Timer/Counter dipakai 2 register tambahan yang dipakai bersama oleh Timer 0 dan Timer 1. artinya bisa dibuat Timer 0 bekerja pada Mode 1 dan Timer 1 bekerja pada Mode 2. limpahan dari pencacah 13 bit ini ditampung di flip-flop TFx (maksudnya bisa TF0 atau TF1) yang berada di dalam register TCON. bisa dialamat secara bit) dan register TMOD (Timer Mode Register. TL1 dan TH1 pada masing-masing mode adalah sebagai berikut: Mode 0 – Pencacah Biner 13 bit Gambar 15 Mode 0 . TH0. dengan maksud rancangan alat yang dibuat dengan MCS48 bisa dengan mudah diadaptasikan ke MCS51. Mode 1 – Pencacah Biner 16 bit Gambar 16 Mode 1 . Susunan TL0. Register tambahan tersebut adalah register TCON (Timer Control Register. TL1 dan TH1 dipakai bersama-sama untuk menyusun sistem timer yang tidak bisa di-kombinasi lain. memori-data internal nomor $89). Kapasitas keempat register tersebut masing-masing 8 bit. memori-data internal nomor $88. Pada Mode 0. Seiring Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . Pencacah biner Timer 0 dan 1 TL0. hanya saja register TLx dipakai sepenuhnya sebagai pencacah biner 8 bit. Mode ini tidak banyak dipakai lagi.

TL1 dan TH1 dipakai untuk membentuk 3 untaian pencacah. kedua register ini dipakai bersama oleh Timer 0 dan Timer 1. kedudukan pencacah biner 16 bit ini akan bergerak dari $0000 (biner 0000 0000 0000 0000). Register Pengatur Timer Register TMOD dan register TCON merupakan register pembantu untuk mengatur kerja Timer 0 dan Timer 1.Pencacah Biner 8 Bit dengan Isi Ulang TLx dipakai sebagai pencacah biner 8 bit. Dengan cara ini bisa didapatkan sinyal limpahan yang frekuensinya ditentukan oleh nilai yang disimpan dalam TH0. Mode 2 – Pencacah Biner 8 bit dengan Isi Ulang Gambar 17. setiap kali kedudukan TLx melimpah (berubah dari $FF menjadi $00). Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 .31 dengan sinyal denyut. Mode 3 – Gabungan Pencacah Biner 16 bit dan 8 Bit Gambar 18 Mode 3 – Gabungan Pencacah Biner 16 Bit dan 8 Bit Pada Mode 3 TL0. Pencacah biner ketiga adalah TH0 yang dipakai sebagai pencacah biner 8 bit dengan TF1 sebagai sarana pemantau limpahan. Yang kedua adalah TL0 yang dipakai sebagai pencacah biner 8 bit dengan TF0 sebagai sarana pemantau limpahan. yang pertama adalah untaian pencacah biner 16 bit tanpa fasiltas pemantau sinyal limpahan yang dibentuk dengan TL1 dan TH1. TH0. Mode 2 . $0002 … sampai $FFFF (biner 1111 1111 1111 1111). sedangkan THx dipakai untuk menyimpan nilai yang diisikan ulang ke TLx. $0001. kemudian melimpah kembali menjadi $0000.

Bila bit GATE pada register TMOD =1. sedangkan jika C/T*=1 maka sinyal denyut diperoleh dari kaki T0 (untuk Timer 0) atau kaki T1 (untuk Timer 1). pemakaiannya sebagai berikut : • Bit M0/M1 dipakai untuk menentukan Mode Timer seperti yang terlihat dalam Tabel di Gambar 3a. TMOD bit 3) dipakai untuk mengatur Timer 0. Bila bit GATE=1 kaki INT0 (untuk Timer 0) atau kaki INT1 (untuk Timer 1) dipakai juga untuk mengatur saluran sinyal denyut (lihat Gambar 4). 4 bit pertama (bit 0 . Bila bit GATE=0 saluran sinyal denyut hanya diatur oleh bit TRx (maksudnya adalah TR0 atau TR1 pada register TCON). ke-empat bit ini dibahas dibagian lain. bagian yang diarsir dalam Gambar 3b) dipakai untuk keperluan mengatur kaki INT0 dan INT1.. bit 4 sampai 7 register TMODE (TMOD bit 4 . Bit TFx di-nol-kan dengan istruksi CLR TF0 atau CLR TF1. bit 3. Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . Jika C/T*=0 sinyal denyut diperoleh dari osilator kristal yang frekuensinya sudah dibagi 12. sebagai berikut: • Bit TFx (maksudnya adalah TF0 atau TF1) merupakan bit penampung limpahan (lihat Gambar 2). TRx di-nol-kan saat MCS51 menjalankan rutin layanan interupsi (ISR – Interupt Service Routine). • Bit GATE merupakan bit pengatur saluran sinyal denyut.32 Gambar 19 Denah susunan bit dalam register TMOD Register TMOD dibagi menjadi 2 bagian secara simitris. Gambar 20 Denah susunan bit dalam register TCON Register TCON dibagi menjadi 2 bagian.bit 7) dibagi menjadi 2 bagian secara simitris yang dipakai untuk mengatur Timer0/Timer 1.. • Bit C/T* dipakai untuk mengatur sumber sinyal denyut yang diumpankan ke pencacah biner. bit 0 sampai 3 register TMOD (TMOD bit 0 . Jika sarana interupsi dari Timer 0/Timer 1 dipakai. bila bit ini =0 sinyal denyut tidak disalurkan ke pencacah biner sehingga pencacah berhenti mencacah.. • Bit TRx (maksudnya adalah TR0 atau TR1) merupakan bit pengatur saluran sinyal denyut. TFx akan menjadi ‘1’ setiap kali pencacah biner yang terhubung padanya melimpah (kedudukan pencacah berubah dari $FFFF kembali menjadi $0000).. maka saluran sinyal denyut ini diatur bersama oleh TRx dan sinyal pada kaki INT0/INT1 (lihat Gambar 4). Sisa 4 bit dari register TCON (bit 4. TMOD bit 7) dipakai untuk mengatur Timer 1.

Sebaliknya jika bit GATE=’1’.3). digambarkan pula hubungan-hubungan semua register pembentuk dan pengatur Timer 1. menurut Gambar 4 keadaan ini membuat saklar S1 ke posisi atas. maka posisi saklar S1 harus dikebawahkan dengan membuat bit C/T* menjadi ‘1’.5). Tapi jika sistem yang dirancang menghendaki agar Timer 1 bekerja sebagai counter untuk menghitung pulsa yang masuk lewat kakai T1 (P3.33 Mengatur Timer Gambar 4 merupakan bagan susunan rangkaian yang bisa terjadi pada Timer 1 secara lengkap. sesuai dengan keperluan sistem yang dibangun. hal ini membuat output gerbang OR selalu ‘1’ tidak dipengaruhi keadaan ‘0’ atau ‘1’ pada kaki INT1 (P3. Dalam pemakaian sesungguhnya. saklar S2 hanya dikendalikan lewat bit TR1 dalam register TCON. saat INT1=’0’ Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . • bit GATE=’0’. Jika sistem yang dirancang memang menghendaki Timer 1 bekerja sebagai timer maka bit C/T* tidak perlu diatur lagi. hal ini berarti : • bit C/T* =’0’. Gambar 21 Skema lengkap Timer 1 dalam Mode 1 Setelah MCS51 di-reset register TMOD bernilai $00. sumber sinyal denyut berasal dari osilator kristal yang frekuensinya sudah dibagi 12. Rangkaian yang dikehendaki dibentuk dengan mengatur register TMODE. pencacah biner yang dibentuk dengan TL1 dan TH1 berfungsi sebagai timer. rangkaian yang dipakai hanya sebagian dari rangkaian lengkap tersebut. aliran sinyal denyut akan dihentikan jika TR=’0’. Dalam keadaan semacam ini. Jika TR1=’1’ saklar S2 tertutup sehingga sinyal denyut dari S1 disalurkan ke sistem pencacah biner. Gambar ini berlaku pula untuk Timer 0. output gerbang OR akan mengikuti keadaan kaki INT1. sedangkan kerja dari Timer dikendalikan lewat register TCON.

Yang perlu diperhatikan adalah register TMOD dipakai untuk mengatur Timer 0 dan juga Timer 1. berakibat bit 7 TMOD (bit GATE) bernilai ‘0’. berarti Timer 1 bekerja sebagai pencacah biner 13 bit. Pengetahuan di atas dipakai sebagai dasar untuk mengatur dan mengendalikan Timer seperti terlihat dalam contoh-contoh berikut : Setelah reset TMOD bernilai $00. memudahkan untuk mengenali dengan cepat bit-bit apa saja yang diisikan ke TMOD. Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . Selanjutnya jika diinginkan sinyal dari perangkat keras di luar chip MCS51 bisa ikut mengendalikan Timer 1. pengisian bit-bit dalam register TMOD harus dipikirkan sekali gus untuk Timer 0 dan Timer 1. bit 5 dan 4 (bit M1 dan M0) bernilai ‘01’.34 apa pun keadaan bit TR1 output gerbang AND selalu =’0’ dan saklar S1 selalu terbuka.5). instruksinya menjadi : MOV TMOD. pencacah biner belum mulai mencacah sebelum diperintah dengan instruksi : SETB TR1 Perlu diingatkan jika bit GATE = ‘1’. untuk keperluan itu instruksi yang diperlukan untuk mengatur TMOD adalah : MOV TMOD. Jika dikehendaki pencacah biner dipakai sebagai counter untuk mencacah jumlah pulsa yang masuk lewat kaki T1 (P3. maka bit GATE harus dibuat menjadi ‘1’ • bit M1 dan M0=’0’. sedangkan TMOD tidak bisa dialamati secara bit (non bit addressable) sehingga jika jika kedua Timer dipakai. ke-empat bit ini dipakai untuk mengatur Timer 1. bit GATE =’0’ berarti kaki INT1 tidak berpengaruh pada rangkaian sehingga Timer 1 hanya dikendalikan dari bit TR1. Setelah mengatur konfigurasi Timer 0 seperti di atas. instruksi pengatur Timer 1 akan menjadi : MOV TMOD. sumber sinyal denyut dari osilator kristal atau Timer 1 bekerja sebagai ‘timer’. selama kaki INT1 bernilai ‘0’ pencacah biner belum akan mencacah. tata canya untuk Timer 0 persis sama. maka bit M1 harus dibuat menjadi ‘0’ dan bit M0 menjadi ‘1’. berarti TL1 dan TH1 disusun menjadi pencacah biner 13 bit (Mode 0). Untuk menghentikan proses pencacahan.#%00010000 Catatan dalam instruksi di atas tanda ‘#’ menyatakan bagian di belakangnya adalah bilangan konstan yang akan diisikan ke TMOD.#%01010000 Perbedaannya dengan instruksi di atas adalah dalam instruksi ini bit 6 (bit C/T*) bernilai ‘1’. agar saklar S1 bisa tertutup kaki INT1 dan bit TR1 harus =’1’ secara bersamaan. Bilangan biner %00010000 diisikan ke TMOD. jika dikehendaki Timer 1 bekerja pada mode 1 seperti terlihat dalam Gambar 4. Penulisan dengan bilangan biner semacam ini. ‘%’ merupakan awalan yang menandakan bahwa bilangan di belakangnya adalah bilangan biner. Jika sistem yang dirancang menghendaki kerja dari timer/counter dikendalikan dari sinyal yang berasal dari luar chip. Dalam pemakaian biasanya dipakai pencacah biner 16 bit.#%11010000 Dalam hal ini bit 7 (bit GATE) bernilai ‘1’. dipakai instruksi CLR TR1 Di atas hanya dibahas Timer 1 saja. bit 6 (bit C/T*) bernilai ‘0’. sehingga Timer 1 bekerja sebagai timer dengan pencacah biner 16 bit yang dikendalikan hanya dengan TR1.

kita memnggunakan perhitungan 10000 X 100 = 1000000 uDetik Hardware Conection Hubungkan modul mikrokontroler. isi TH0 dengan HIGH(CACAH) isi TL0 dengan LOW(CACAH) hidupkan timer 0 tunggu hingga melimpah matikan flag limpahan timer EQU EQU 100 -10000 . . ulangi lagi dari awal .#LOW CACAH TR0 TF0. . --------------------------------------------------------------------. --------------------------------------------------------------------RATUSAN CACAH ORG 0H TMOD.LAGI . tidak seperti mengatur TMOD yang harus dilakukan secara bersamaan.#HIGH CACAH TL0. Timer yang diguanakan adalah timer 0 mode 16 bit. kita harus menggunakan timer.#01H P1. Demikian pula bit penampung limpahan pencacah biner TF0 dan TF1. tundaan maksimal yang mampu dihasilkan adalah 65.#RATUSAN TH0. . timer yang diitung mengguanakan perhitungan kristal pada 12M .#0FFH TUNDA MULAI MOV R1. . . matikan LED selama 1 detik . Dibawah ini adalah contoh program untuk aplikasi timer.#00H TUNDA P1. sehingga kita perlu mengulangi untuk beberapa kali agar kita mendapatkan tundaan waktu 1 detik.536uD.35 Bit TR1 dan TR0 yang dipakai untuk mengendalikan proses pencacahan. Sehingga TR0 dan TR1 bisa diatur secara terpisah (dengan perintah SETB atau CLR). . dengan modul keypad 8 tombol yang terhubung pada port 3 Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . agar mendapatkan waktu yang presisi.TUNGGU TF0 TR0 R1. Dalam hal ini. hidupkan LED selama 1 detik . gunakan timer 0 mode 16 bit (0000 0001) . . terletak di dalam register TCON (memori-data internal nomor $88) yang bisa dialamati secara bit (bit addressable). 100 x 10000 ud = 1 detik MOV MULAI: MOV CALL MOV CALL SJMP TUNDA: LAGI: MOV MOV SETB TUNGGU: JNB CLR manual CLR DJNZ RET END 0 scr matikan timer 0 apakah sudah #ratusan kali? BELUM! ulangi dari LAGI SUDAH! kembali dari subrutin TUNDA Penjelasan Kali ini kita akan membuat led nyala dan padam dalam waktu satu detik. Program menyalakan/mematikan LED selama 1 detik . . juga terletak dalam register TCON yang masing-masing bisa di-monitor sendiri.

0 setelah 5 kali . tunggu hingga melimpah Mov P1. tunggu hingga overflow Mov P1.4 sebanyak 5 kali dengan menggunakan timer . gunakan timer 0 mode 8 bit isi-ulang . aktifkan timer0 CEK: JNB TF0. bersihkan flag limpahan timer 0 scr manual SJMP CEK .$ . cacah sama dengan 5 ORG 0H MOV TMOD.#0FFH .#00 .4) CLR TF0 .$ . caranya dengan memberi bit C/T dengan logika 1.#CACAH . isi TH0 dengan #cacah MOV TL0. otomatis LAGI: MOV TH0. matikan P1. pada (P3. saklar dihugungkan dengan pin T0. penekanan tombol pada T0 (P1.4). pada P3. --------------------------------------------------------------------CACAH EQU -5 . penekanan tombol pada T0 (P1. Hubungan pin pada int timer . ulangi lagi dari awal END Penjelasan Sekarang timer 0 dikonfigurasikan untuk mencacah.0 setelah 5 kali .---------------------------------------------------------------------.4) CLR TF0 . Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 .#0Eh . scr manual CEK1: JNB TF0. lampu akan menyala setelah tombol ditekan 5 kali dan akan padam setelah ditekan 5 kali. isi TL0 dengan #cacah SETB TR0 . hidupkan P1. Program menyalakan/mematikan LED setelah penekanan tombol .36 Gambar 22. bersihkan flag limpahan timer 0 .#CACAH .

Seperti yang terlihat Gambar 4.1. yaitu subrutin yang akan dikerjakan bila terjad interupsi Sumber interupsi: Interupsi eksternal 0 Interupsi eksternal 1 Interupsi timer 0 Interupsi timer 1 Interupsi port serial Alamat vektor interupsi Reset system Eksternal 0 Timer 0 Eksternal 1 Timer 1 Port Serial 0000H 0003H 0000B 0013H 001BH 0023H • Interrupt Service Routine. Program yang dijalankan pada saat melayani interrupt disebut Yang harus diperhatikan untuk menguanakan interupsi adalah. saat terjadi interrupt. seseorang sedang mengetik laporan. Analoginya adalah sebagai berikut. kita harus tau sumber-sumber interupsi. tiba-tiba terjadi interrupt dan harus melayani interrupt tersebut terlebih dahulu hingga selesai sebelum ia kembali meneruskan pekerjaannya. program akan berhenti sesaat. sebuah program yang seharusnya berjalan terus lurus.37 INTERUPSI Interrupt adalah suatu kejadian atau peristiwa yang menyebabkan mikrokontroler berhenti sejenak untuk melayani interrupt tersebut. mendadak telephone berdering dan menginterrupsi orang tersebut sehingga menghentikan pekerjaan mengetik dan mengangkat telephone. Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . vektor layanan interupsa dan yang terpenting rutin lyanan interupsi. Demikian pula pada sistem mikrokontroler yang sedang menjalankan programnya. melayani interrupt tersebut dengan menjalankan program yang berada pada alamat yang ditunjuk oleh vektor dari interrupt yang terjadi hingga selesai dan kembali meneruskan program yang terhenti oleh interrupt tadi. Setelah pembicaraan telephone yang dalam hal ini adalah merupakan analogi dari Interrupt Service Routine selesai maka orang tersebut kembali meneruskan pekerjaanya mengetik.

untuk itu 89C51 mempunyai lima buah interrupt yang masing-masing dapat dienable ataupun disable satu per satu.Interrupt dilayani sesuai peringkat dari interrupt (lihat Interrupt Priority) .38 Gambar 23. semua interrupt tidak akan dilayani. maka apapun kondisi bit lain dalam register ini. Analogi proses interupsi Proses yang dilakukan oleh mikrokontroler saat melayani interrupt adalah sebagai berikut: Proses yang terjadi saat mikrokontroler melayani interrupt adalah sebagai berikut: . Bila bit ini clear.Program Counter terisi dengan alamat dari vector interrupt (lihat Interrupt Vector) sehingga mikrokontroler langsung menjalankan program yang terletak pada vector interrupt Program pada vector interrupt biasanya diakhiri dengan instruksi RETI di mana pada saat ini proses yang terjadi pada mikrokontroler adalah sebagai berikut: . EA: Disable semua interrupt apabila bit ini clear.Program Counter diisi dengan alamat yang tersimpan dalam stack pada saat interrupt terjadi sehingga mikrokontroler kembali meneruskan program di lokasi saat interrupt terjadi .Interrupt Status dikembalikan ke kondisi terakhir sebelum terjadi interrupt • Enable Interrupt Dalam suatu kondisi dapat juga dibutuhkan suatu program yang sedang berjalan tidak boleh diinterrupt.Instruksi terakhir yang sedang dijalankan diselesaikan terlebih dahulu . Pengaturan enable dan disable interrupt dilakukan pada Register Interrupt Enable yang terletak pada alamat A8H. bit ini harus set Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . oleh karena itu untuk mengaktifkan salah satu interrupt.Program Counter (alamat dari instruksi yang sedang berjalan) disimpan ke stack .Interrupt Status disimpan secara internal .

External Interrupt 1 . • Interrupt Priority Dalam melayani interrupt. clear = disable Apabila interrupt ini enable aka interrupt akan terjadi pada saat Timer 1 overflow. clear oleh hardware saat interrupt terjadi pada mode aktif level Timer 0: Bit TF0.Timer 0 Interrupt . maka prioritas akan diatur secara polling mulai dari: . set = enable. clear = disable Apabila interrupt ini enable maka interrupt akan terjadi pada saat terjadi pulsa low pada INT0 • Status Interrupt Status-status interrupt dari 89C51 terletak pada Register TCON yaitu INT0: Bit IE0. set = enable. EX1: Enable/disable External Interrupt 1. clear = disable Apabila Serial Port Interrupt aktif maka interrupt akan terjadi setiap ada data yang masuk ataupun keluar melalui serial port yang membuat Flag RI (Receive Interrupt Flag) ataupun TI (Transmit Interrupt Flag). clear = disable Apabila interrupt ini enable maka interrupt akan terjadi pada saat Timer 0 overflow. set = enable. set = enable. mikrokontroler bekerja berdasarkan prioritas yang dapat diatur pada Register Interrupt Priority. clear = disable Apabila interrupt ini enable maka interrupt akan terjadi pada saat terjadi pulsa low pada INT1 ET0: Enable/disable Timer 0 Interrupt. sedangkan interrupt dengan prioritas tinggi itu sendiri tidak dapat di interrupt oleh interrupt lain. ET1: Enable/disable Timer 1 Interrupt. clear oleh software Serial Port (RXD) : Bit RI.External Interrupt 0 . clear oleh hardware saat interrupt terjadi Serial Port (TXD) : Bit TI. clear oleh software External Interrupt 0 maupun External Interrupt 1 dapat diatur menjadi aktif level maupun aktif transisi dengan mengubah bit IT0 atau IT1 pada Register TCON External Interrupt akan bekerja secara aktif level bila bit ITx (x = 0 untuk INT0 dan x =1 untuk INT1) berkondisi low dan bekerja secara aktif transisi bila bit Itx berkondisi high. set = enable. IP0 atau PX0 untuk External Interrupt 0 IP1 atau PT0 untuk Timer 0 Interrupt IP2 atau PX1 untuk External Interrupt 1 IP3 atau PT1 untuk Timer 1 Interrupt IP4 atau PS untuk Serial Interrupt Bit-bit ini akan berkondisi set apabila interrupt yang diaturnya ditempatkan pada prioritas yang tinggi.Timer 1 Interrupt .39 ES: Enable/disable Serial Port Interrupt. clear oleh hardware saat interrupt terjadi Timer 1 : Bit TF1.Serial Interrupt Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . clear oleh hardware saat interrupt terjadi pada mode aktif level INT1: Bit IE1. EX0: Enable/disable External Interrupt 0. Apabila terjadi lebih dari satu interrupt yang mempunyai prioritas yang sama secara bersamaan. Interrupt dengan prioritas yang tinggi dapat meng-interrupt interrupt lain yang mempunyai prioritas lebih rendah.

.. misalnya hendak digunakan External Interrupt 0 dan Timer 0 dalam satu sistem... ... ..... ......Int0 ISR .. saat terjadi interrupt Program Counter memang tetap berisi nilai dari Interrupt Vector sehingga program juga meloncat ke alamat tersebut......... Start: ...... Kelima interrupt dan system reset dari 89C51 mempunyai Vector masing masing Masing-masing alamat vektor mempunyai jarak yang berdekatan sehingga akan timbul masalah bila diperlukan sebuah Interrupt Service Routine yang cukup panjang.Main Program . namun karena di alamat tersebut sudah diletakkan instruksi untuk meloncat ke label yang lain seperti Int0 untuk External Interrupt 0 Service Routine maka tidak akan terjadi bentrok alamat antara kedua Interrupt Service Routine ini.. Int0: .. RETI Jadi pada listing ini.... ORG 0000H LJMP Start ORG 0003H LJMP Int0 ORG 000BH LJMP Timer0 .......... maka bila Interrupt Service Routine untuk External Interrupt 0 diletakkan pada alamat 0003H dan Interrupt Service Routine untuk Timer 0 diletakkan pada alamat 000BH akan terjadi bentrok alamat antara kedua Interrupt Service Routine ini apabila tidak dilakukan suatu trik berikut yang terlihat pada listing berikut.. Pada saat program menuju ke alamat yang ditunjuk oleh Interrupt Vector maka flag-flag yang set karena terjadinya interrupt akan di-clear kecuali RI dan TI. RETI Timer0: . ..... . ..Timer 0 ISR .......40 • Interrupt Vector Interrupt Vector adalah harga yang disimpan ke Program Counter pada saat terjadi interrupt sehingga program akan menuju ke alamat yang ditunjukkan oleh Program Counter.. Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 ..... . .

... Ya.$ Djnz R0. ulangi lagi dari paling awal. ulangi . .41 Hardware Gambar 24. #0FEh P1. ulangi .MULAI1 MULAI . simpan data 11111110B ke ..#0FEh.#0 Delay1: Mov R1.A DELAY A A. lanjutkan ke proses berikut.#7FH. akumulator (P1. tunda sebentar . apakah A=01111111B ? Tidak. putar isi akumulator ke kiri 1 bit .Delay1 Ret Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . Isi Register R1 dengan 0 (256x ulang) Delay: Mov R0. kirim data ke Port 1 . . kirim data ke Port 1 tunda sebentar putar isi akumulator ke kanan 1 bit apakah A=11111110B ? Tidak. .MULAI P1. Ya.0 menyala duluan) . Interupsi eksternal ORG AJMP ORG AJMP 00H START 03H AKSI SETB EA IT0 IE. .0 A.A DELAY A A. . Isi Register R0 dengan 0 (256x ulang) . Rutin layanan Interupsi Start: SETB SETB MOV MULAI: MOV ACALL RL CJNE lagi! MULAI1: MOV ACALL RR CJNE lagi! SJMP . Program Utama .#0 Djnz R1.

27.#00 DELAY P1.#0FFH DELAY P1.#0FFH DELAY P1. Gambar 25 antarmuka dengan ADC Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . misal kita menggunakan ADC 8 bit. Perlu diketahui bahwa pada pin ADC 0804 pada kaki Vref yang disajikan berupa Vref/2.#00 DELAY P1. jadi untuk mendapatkan resolusi 10mV maka perlu pengesetan Vref/2 sebesar 1. Berikan perintah mulai konversi dengan memberikan pulsa rendah sempit ke kaki ADC Write Tunggu hingga ADC mengeluarkan sinyal 0 dari kaki INT nya Berikan tunda waktu sesaat agar data dari ADC sudah benar Berikan perintah baca dengan memberikan sinyal 0 pada kaki ADC Read Berikan tunda waktu sesaat Sekarang data dari ADC siap digunakan. jika kita memberi tegangan refferensi 2.55 volt maka kita akan mendapatkan kenaikan 1 bit untuk perubahan 10 mVolt.5V Cara akses ADC 0804: Aktivkan ADC dengan memberikan sinyal 0 pada kaki Chip Select.#00 DELAY P1.42 AKSI: MOV CALL MOV CALL MOV CALL MOV CALL MOV CALL MOV CALL RETI End P1. Selain itu terdapat nilai tegangan refferensi yang harus diberikan.#0FFH DELAY TEKNIK ANTARMUKA DENGAN ADC 0804 Pada ADC 0804 terdapat pin pin kontrol yang harus di kendalikan jika kita ingin menggunakan ADC.

START OF CONVERSION SETB ADC_WR NOT_EOC: JB ADC_INT.$ DJNZ R3.7 ADC_RD BIT P2. BACA DATA MELALUI P3 DJNZ R3. ORG 0H NEXT_SAMPLING: CLR ADC_CS .P3 SETB ADC_RD SETB ADC_CS CPL A MOV P1.NOT_EOC DELAY: DJNZ R2.$ MOV A.============================================= ADC_CS BIT P2.6 ADC_WR BIT P2.A SJMP NEXT_SAMPLING END Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 .43 . AKTIFKAN ADC0804 CLR ADC_WR .4 .5 ADC_INT BIT P2.============================================= .DELAY CLR ADC_RD . PROGRAM AKSES ADC .

kemudian kita menghubungkannya ke kaki data motor stepper.44 Antar Muka dengan Motor Stepper Gambar 26. untuk mengatur kecepatanyya kita harus memberikan delay pada pergantian antara data pertama dan data berikutnya. data pertama 1011 1101 1110 . Untuk hardware nya kita bisa mengguanakan konfigurasi saklar dasar seperti gambar 11 dengan memberikan empat buah saklar. Di bawah ini adalh contoh program untuk menggerakkan motor stepper. data ke empat Keempat data tersebut harus urut. yang perlu diingat sklar diatas adalah saklar untuk orus yang kecil. maka kita harus memberikan data: 0111 . sehingga untuk arus yang besar kita harus menambahkan penguatberupa transistor yng disusun secara darlington. ORG 00H MULAI: Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . Antar mula motor stepper Pada motor stepper yang lazim digunakan dipasaran. yang tentunya data tersebut adalah kebalikan dari pin common. Untuk dapat menggerakkan motor stepper kita harus memberikan dat yang bergeser pada pin data. Misalnya kita menggunakan common Positif. terdapat 4buah pin data dan satu bua common.

YANG DIPASANG DJNZ R0.#0H .#11111101B LDELAY P1. Mode pengalamatan 8 bit Setb En .$ . Inisialisasi Lcd Clr Rs .#0CH . END ANTAR MUKA DENGAN LCD 16x2 Gambar 27. Kirim Instruksi Mov P1. Dibawah ini adalah contoh sub rutin untuk bekerja dengan lcd. DJNZ R1.#11111011B LDELAY P1.#11111110B LDELAY MULAI . Kirim Instruksi Mov P1.1 mS) Clr Rs .====================================== .DELAY RET . .---------------------------------------------------.---------------------------------------------------Init_Lcd: .#75 .======================================= LDELAY: MOV R1.45 MOV ACALL MOV ACALL MOV ACALL MOV ACALL WAIT: AJMP P1. Interface LCD Untuk mengakses Lcd kita harus memenuhi beberpa tahapan-tahapan. Signal Clock Enable Clr En Call Wait_Lcd .#11110111B LDELAY P1. Display On/Off Control Setb En Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . SUB ROUTINE DELAY . Inisialisasi LCD . Tunggu beberapa saat (≥4. DELAY INI TERGANTUNG DARI X-TAL DELAY: MOV R0.#38H .

Entry Mode Set .MENULISKAN KARAKTER .A EN EN WAIT_LCD1 CLR RS P1.DELAY3 .POSISI CURSOR Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 .46 Clr Call Clr Mov Setb Clr Call Ret En Wait_Lcd1 Rs P1.#0 DJNZ R5.#25 DELAY1: MOV R5.DELAY1 RET WAIT_LCD1: MOV DELAY3: DJNZ DJNZ RET R0.HAPUS KARAKTER TOTAL .DELAY LCD .$ DJNZ R0.---------------.DELAY LCD .#3 MOV R5. Tunggu beberapa saat (≥100μS) .--------------CLEAR_LCD: CLR RS MOV P1.#06H En En Wait_Lcd1 .HAPUS TAMPILAN .TEXT EN EN WAIT_LCD1 .-----------WAIT_LCD: .---------------WRITE_TEXT: SETB MOV SETB CLR CALL RET CURSOR: MOV SETB CLR CALL RET RS P1.-----------.DELAY LCD ( >4mS ) MOV R0.$ R0.--------------.#0 R5.#01h SETB EN CLR EN CALL WAIT_LCD1 RET .TULIS TEXT .

Panggil sub rutin .#'U' WRITE_TEXT A. menulis karakter MOV A.#'A' ACALL WRITE_TEXT MOV ACALL MOV ACALL MOV ACALL MOV ACALL MOV ACALL MOV ACALL MOV ACALL MOV ACALL WAIT: AJMP END A. Interface dengan relay Di atas adalah contoh antar muka dengan relay.#'G' WRITE_TEXT 40H. dapat diberikan program sebagai berikut.#'G' WRITE_TEXT A. Panggil sub rutin inisialisasi .#'N' WRITE_TEXT A.#'G' WRITE_TEXT A. untuk mengakifkan relay. Untuk mematikan relay berikan logika 1 Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 . Pindah posisi cursor di 0C0H RELAY Gambar 28. untuk penulisan karakter pada LCD.#0C0H CURSOR A.#'M' WRITE_TEXT $ .#'U' WRITE_TEXT A. isi A dgn huruf A (format ASCI) . berikan logika 0.47 Sebagai contoh. Hapus semua karakter . MULAI: ACALL ACALL INIT_LCD CLEAR_LCD .

Untuk debuging program kita tinggal menekan F10 atau F11. maka pgram akan berjalan per step. kita tinggal memasukkan file program kita yang ber ekstensi HEX.48 LAMPIRAN Petunjuk penggunaaan Program simulasi 1. TS Control Emulator Program ini mampu memantau status register dalam mikrokontroler... Setelah itu kita akan melihat file hexa yang kita masukkan tadi menjadi asm code. Load Hex File….. Dengan cara Fille ... dalam diasembled code. dan kita bisa melihat status reguster Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 .

535 Simulaor Pada simulator ini sudah dilengkapi dengan tampilan visual pada port. untuk mengisi program kita harus mengisikan file . Untuk debuging.49 2.LST. kita tinggal menekan tombol 7 atau F8 Pelatihan Mikrokontroler AT89S51 Himpunan Mahasiswa Teknik Elektro Program Diploma TE UGM 2006 .

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->