MODUL PEMBELAJARAN I
ARSITEKTUR MIKROKONTROLER AT89S/CXX
1. Pendahuluan
Mikrokontroler disebut juga MCU atau uC adalah salah satu komponen
elektronik atau IC yang memiliki beberapa sifat seperti komputer, yaitu terdiri dari
CPU (Central Processing Unit) atau unit pemrosesan terpusat, kode memori, data
memori, I/O (Port untuk input dan output), yang dapat diprogram cara kerjanya,
bentuknya yang kecil dan harganya yang murah sehingga dapat ditanam
(embedded) di dalam berbagai peralatan rumah tangga, kantor, industri, robot, dll.
Beberapa mikrokontroler yang beredar dipasaran merupakan keluaran
beberapa pabrik yang sudah terkenal, misal:
Intel, contoh: 8031, 89C51 dll
Zilog, contoh: Z8, Z8F1680 dll
Microchip, contoh: PIC16F84, PIC16F877 dll
Motorola, contoh: 68HC11, MC68HC705V12CFN dll
Philips Semiconductors, contoh: LPC2000, LPC900, LPC700 dll
Atmel, contoh: Atmel AT91 series (ARM THUMB architecture), AT90, Tiny
& Mega series – AVR (Atmel Norway design), Atmel AT89 series (Intel
8051/MCS51 architecture)
Dalam pembahasan modul ini akan dijelaskan penggunaan mikrokontroler
dari Atmel jenis AT89S series, dengan alasan lebih mudah dalam
pemrogramannya, pengembangannya dan harganya yang murah serta telah banyak
beredar di pasaran.
2. Struktur Mikrokontroler
Blok diagram umum mikrokontroler adalah sebagai berikut:
SMK N 1 Cimahi 2
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 3
Modul Mikrokontroler Teknik Otomasi Industri
Internal ROM (On Chip Flash), merupakan memori yang isinya tidak dapat
diubah atau dihapus (pada saat mikrokontroler berjalan) isinya hanya dapat
dibaca saja. ROM biasanya berisi program (urutan-urutan instruksi) untuk
menjalankan mikrokontroler. Data pada ROM dibaca secara berurutan.
Internal RAM, merupakan memori yang isinya dapat diubah atau dihapus.
RAM pada
mikrokontroler biasanya berisi data-data variable dan register. Data yang
tersimpan pada RAM bersifat hilang jika catu daya yang diberikan hilang
(mati).
Stack pointer, merupakan bagian dari RAM yang memiliki metode
penyimpanan dan pengambilan data yang khusus. Dimana data yang paling
terakhir dimasukkan merupakan data yang pertama kali dibaca kembali
(LIFO).
I/O port (serial dan parallel), merupakan sarana yang digunakan
mikrokontroler untuk mengakses peralatan di luar dirinya, memasukan dan
mengeluarkan data.
Interrupt circuits, merupakan rangkaian yang mengendalikan sinyal-sinyal
interupsi bail internal maupun eksternal, dengan adanya sinyal interupsi akan
mengakibatkan program utama yang sedang dikerjakan berhenti sejenak, dan
bercabang/.loncat ke program rutin layanan interupsi (RLI) yang diminta,
setelah RLI selesai dikerjakan, mikrokontroler kembali melanjutkan program
utama yang tertunda tadi.
Setiap mikrokontroler memiliki blok diagram dan arsitektur yang berbeda
satu dengan yang lainnya, tergantung pada banyak device yang terintegrasi di
dalamnya, beberapa jenis mikrokontroler telah dilengkapi oleh ADC/DAC, PWM,
WDT dan lain-lain.
SMK N 1 Cimahi 4
Modul Mikrokontroler Teknik Otomasi Industri
4. Organisasi Memori
Memori pada mikrokontroler digunakan untuk menyimpan data yang
diperlukan selama mikrokontroler bekerja. Memori pada mikrokontroler
dibedakan menjadi dua jenis, yaitu memori data dan memori program. Memori
program pada mikrokontroler AT89Sxx dikenal dengan On Chip Flash.Setiap
mikrokontroler memiliki kapasitas memori program yang berbeda-beda.
Tabel 1.1. Kapasitas memori beberapa jenis mikrokontroler dari Atmel
Kapasitas Memori Program Kapasitas Memori Data
MCU
Internal (On Chip Flash) Internal
AT89C/S1051 1K 64
AT89C/S2051 2K 128
AT89C/S51 4K 128
AT89C/S52 8K 256
AT89C/S55 20K 256
AT89S8252 8K 256
AT89S53 12K 256
Semua divais 8051 mempunyai ruang alamat yang terpisah untuk memori
program dan memori data, seperti yang ditunjukkan pada gambar1.3. dan gambar
1.4. Pemisahan secara logika dari memori program dan data, mengijinkan memori
data untuk diakses dengan pengalamatan 8 bit, yang dengan cepat dapat disimpan
dan dimanipulasi dengan CPU 8 bit. Selain itu, pengalamatan memori data 16 bit
dapat juga dibangkitkan melalui register DPTR.
SMK N 1 Cimahi 5
Modul Mikrokontroler Teknik Otomasi Industri
Seperti table di atas, untuk AT89S51 memiliki kapasitas ROM/ On Chip Flash
sebesar 4 Kbyte. ROM pada AT89S51 menempati address 0000H s/d 0FFFH. Apabila
didalam pembuatan program melebihi kapasitas tersebut, maka bisa dipergunakan
eksternal ROM untuk menambah memori, memori program eksternal dapat
mencapai 64K byte. Untuk membaca memori program eksternal mikrokontroller
mengirim sinyal PSEN (program store enable). Apabila dalam perancangan
hardware dirasakan tidak dimungkin untuk menambah memori eksternal, disarankan
untuk mengganti mikrokontroler dengan tipe yang lebih tinggi (memiliki kapasitas
On Chip Flash yang lebih besar).
Gambar 1.4. menunjukkan suatu peta bagian bawah dari memori program.
Setelah reset CPU mulai melakukan eksekusi dari lokasi 0000H. Sebagaimana
yang ditunjukkan pada gambar 1.5, setiap interupsi ditempatkan pada suatu lokasi
tertentu pada memori program. Interupsi menyebabkan CPU untuk melompat ke
lokasi dimana harus dilakukan suatu layanan tertentu.
Interupsi Eksternal 0, sebagai contoh, menempatai lokasi 0003H. Jika
Interupsi Eksternal 0 akan digunakan, maka layanan rutin harus dimulai pada
lokasi 0003H. Jika interupsi ini tidak digunakan, lokasi layanan ini dapat
digunakan untuk berbagai keperluan sebagai Memori Program.
Reset 0000H
Eksternal 0 0003H
Timer 0 0008H
Eksternal 1 0013H
Timer 1 001BH
SMK N 1 Cimahi 6
Modul Mikrokontroler Teknik Otomasi Industri
128 byte RAM bagian bawah dikelompokkan lagi menjadi beberapa blok,
seperti yang ditunjukkan pada gambar 1.7. 32 byte RAM paling bawah,
dikelompokkan menjadi 4 bank yang masing-masing terdiri dari 8 register.
Instruksi program untuk memanggil register-register ini dinamai sebagai R0, R1,
R2, R3, R4, R5, R6 dan R7. Dua bit pada Program Status Word (PSW) dapat
memilih register bank mana yang akan digunakan. Penggunaan register R0
sampai dengan R7 ini akan membuat pemrograman lebih efisien dan singkat, bila
dibandingkan pengalamatan secara langsung.
SMK N 1 Cimahi 7
Modul Mikrokontroler Teknik Otomasi Industri
Semua pada lokasi RAM 128 byte paling bawah dapat diakses baik
dengan menggunakan pengalamatan langsung dan tak langsung. 128 byte paling
atas hanya dapat diakses dengan cara tak langsung, gambar 1.8.
SMK N 1 Cimahi 8
Modul Mikrokontroler Teknik Otomasi Industri
Accumulator
ACC adalah register akumulator. Mnemonik untuk instruksi spesifik
akumulator ini secara sederhana dapat disingkat sebagai A.
Register B
Register B digunakan pada saat operasi perkalian dan pembagian. Selain
untuk keperluan tersebut diatas, register ini dapat digunakan untuk register bebas.
Stack Pointer
Register Pointer stack mempunyai lebar data 8 bit. Register ini akan
bertambah sebelum data disimpan selama eksekusi push dan call. Sementara stack
dapat berada disembarang tempat RAM. Pointer stack diawali di alamat 07h
setelah reset. Hal ini menyebabkan stack untuk memulai pada lokasi 08h.
Data Pointer
Pointer Data (DPTR) terdiri dari byte atas (DPH) dan byte bawah (DPL).
Fungsi ini ditujukan untuk menyimpan data 16 bit. Dapat dimanipulasi sebagai
register 16 bit atau dua 8 bit register yang berdiri sendiri.
Ports 0, 1, 2 dan 3.
P0, P1, P2 dan P3 adalah SFR yang ditempati oleh Port 0, 1, 2 dan 3. Menulis
suatu logika 1 terhadap sebuah bit dari sebuah port SFR ( P0, P1, P2 atau P3)
menyebabkan pin output port yang bersesesuaian akan berada dalam kondisi logika
high ‘1’. Dan sebaliknya.
Buffer Data Serial
Buffer serial sesungguhnya merupakan dua buah register yang terpisah, buffer
pemancar dan buffer penerima. Ketika data diisikan ke SBUF, maka akan menuju ke
buffer pemancar dan ditahan untuk proses transmisi. Ketika data diambil dari SBUF,
maka akan berasal dari buffer penerima.
Registers Timer
Pasangan register ( TH0, TL0) dan (TH1, TL1) adalah register pencacah 16
bit untuk Timer/ Counter 0 dan 1, masing-masing.
Register Control
Registers IP, IE, TMOD, TCON, SCON, dan PCON terdiri dari bit control
dan status.
SMK N 1 Cimahi 9
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 10
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 11
Modul Mikrokontroler Teknik Otomasi Industri
LEMBAR EVALUASI
SMK N 1 Cimahi 12
Modul Mikrokontroler Teknik Otomasi Industri
4. Pada penggunaan memori terdapat istilah volatile dan non volatile, jelaskan
kedua istilah tersebut!
5. Jelaskan istilah berikut:
a. Parallel
b. Serial
c. PDIP
d. PLCC
e. Pull Up
6. Gambarkan arsitektur Von Neumann!
7. Apa yang dimaksud dengan vector interupsi?
8. Sebutkan jenis-jenis ROM yang kamu ketahui!
9. Apa yang dimaksud direct addressing dan indirect addressing? Jelaskan!
10. Gambarkan diagram pin IC 6116, berikan penjelasan fungsi setiap pinnya dan
berikan penjelasan kegunaan IC 6116 tersebut!
MODUL PEMBELAJARAN II
SET INSTRUKSI DAN PEMROGRAMAN ASSEMBLY MCS51
A. Pendahuluan
Sebagaimana yang telah dijelaskan pada modul sebelumnya, untuk
menjalankan sebuah sistem mikrokontroler diperlukan program, dimana program
tersebut merupakan urutan instruksi yang menentukan sebuah mikrokontroler
bekerja. Program/instruksi sebuah mikrokontroler ditulis dengan menggunakan
bahasa mesin dengan kode bilangan hexadecimal.
Untuk memudahkan pemrograman, maka digunakan bahasa pemrograman
yang lebih tinggi dan dapat dimengerti untuk memrogramannya, namun sudah
tentu hasil dari bahasa tersebut merupakan bahasa mesin untuk diterapkan dalam
pengguanaan mikrokontroler. Banyak ragam bahasa yang dapat digunakan untuk
pemrograman mikrokontroler, antara lain: assembler, basic, C dan lain-lain.
Dalam modul ini dijelaskan penggunaan bahasa assembly untuk memrograman
mikrokontroler.
SMK N 1 Cimahi 13
Modul Mikrokontroler Teknik Otomasi Industri
khusus. Kombinasi dari instruksi dan operan itulah yang membentuk instruksi
pengatur kerja mikrokontroler.
Misalnya, instruksi MOV A, 7Fh merupakan sebuah instruksi pemindahan
data karena MOV merupakan instruksi dasar yang memerintahkan penyalinan
data. Sedangkan operannya adalah data yang disalin, dalam hal ini adalah data
yang ada di lokasi memori 7Fh disalin ke akumulator A.
SMK N 1 Cimahi 14
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 15
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 16
Modul Mikrokontroler Teknik Otomasi Industri
tersimpan dalam DPTR (Data Pointer Register 2 byte) ditambah dengan nilai
yang tersimpan dalam Akumulator A (1 byte) sama dengan lokasi memori
program yang diakses.
SMK N 1 Cimahi 17
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 18
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 19
Modul Mikrokontroler Teknik Otomasi Industri
akumulator
RL A Putar ke kiri satu kali data yang terdapat pada
akumulator
RLC A Putar ke kiri satu kali beserta carry data yang
terdapat pada akumulator
RR A Putar ke kanan satu kali data yang terdapat pada
akumulator
RRC A Putar ke kanan satu kali beserta carry data yang
terdapat pada akumulator
SWAP A Tukar nible rendah dan nible tinggi data yang
terdapat pada akumulator
SMK N 1 Cimahi 20
Modul Mikrokontroler Teknik Otomasi Industri
1. Label
Sebuah label mewakili suatu alamat dari instruksi (atau data) yang mengikat.
Label ini digunakan sebagai operan pada instruksi-instruksi percabangan. Misal:
Org 0h
Terus: MOV P0, A
Sjmp Terus
End
2. Mnemonik
SMK N 1 Cimahi 21
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 22
Modul Mikrokontroler Teknik Otomasi Industri
LEMBAR EVALUASI
1. Carilah berapa siklus mesin untuk setiap instruksi pada bahasa assembly!
2. Apa yang dimaksud dengan flowchart dan carilah simbol-simbolnya?
Jelaskan!
TUJUAN:
1. Siswa memahami rangkaian mikrokontroller untuk menghidupkan dan
mematikan LED.
2. Siswa dapat memahami program assembly untuk menghidupkan dan
mematikan LED.
3. Siswa memahami beberapa instruksi assembly dasar, MOV, Setb, Clr, RL dan
RR, CJNE, dan DJNZ.
4. Siswa memahami pembuatan instruksi waktu tunda.
SMK N 1 Cimahi 23
Modul Mikrokontroler Teknik Otomasi Industri
harus lebih besar dari katoda, dengan demikian akan ada arus yang mengalir (bias
forward) melalui LED, dan menyebabkan LED menyala.
Pada rangkaian di atas, anoda terhubung dengan vcc (+5V), agar LED
menyala katoda harus diberi tegangan lebih rendah dari vcc yaitu diberi 0 volt
yang diberikan dari I/O port mikrokontroler, tegangan 0 volt ini identik dengan
memberikan logik “0” pada port I/O. Bagaimana agar LED tidak menyala? Agar
LED tidak menyala, hal sebaliknya harus kita lakukan, dengan tidak memberikan
arus yang mengalir (secara bias forward) melalui LED, hal ini dapat dilakukan
dengan cara memberikan tegangan katoda lebih positif dari anode (bias reverse),
namun hal sedikit beresiko dan tidak aman. Cara yang tepat adalah memberikan
tegangan sama antara anoda dan katoda, jika dilihat dari rangkaian di atas, anoda
telah tehubung dengan vcc (+5 v) dan katoda terhubung dengan I/O port
mikrokontroler, tegangan 5 volt dari I/O port mikrokontroler dapat diperoleh
dengan memberikan logik “1” pada I/O port.
LANGKAH KERJA
1. Hubungkan modul Microcontroller Trainer dengan power supply +5V
2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler
program
SMK N 1 Cimahi 24
Modul Mikrokontroler Teknik Otomasi Industri
4. Ketik program
5. Simpanlah program yang telah diketik dan beri nama : namafile.asm
6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan
kompilasi program dari *.asm ke *.hex.
7. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP
Software
PERCOBAAN-PERCOBAAN
Percobaan 3.1. Instruksi MOV
Pada percobaan 3.1 ini LED akan dihidupkan atau dimatikan dengan
mengirimkan data tertentu pada port 0.
SMK N 1 Cimahi 25
Modul Mikrokontroler Teknik Otomasi Industri
Org 0h
Start: Mov P0,#11110000b ; Isi P0 dengan 11110000
sjmp start ; lompat ke start
End
Gantilah data tersebut diatas dengan data seperti pada tabel berikut dan
lakukan pencatatan LED mana yang padam.
SMK N 1 Cimahi 26
Modul Mikrokontroler Teknik Otomasi Industri
djnz r0,Del1
ret
end
Gantilah data tersebut untuk menghidupkan LED yang lain: LED 2, LED
3, LED 4, LED 5, LED 6, LED 7 dan LED 8.
Lakukan percobaan berikut untuk mengedipkan LED, dengan
mengetikkan program berikut ini.
Org 0h
Start: Clr P0.0 ; Kirim logika ‘0’ ke P0.0
Clr P0.1 ; Kirim logika ‘0’ ke P0.1
Clr P0.2 ; Kirim logika ‘0’ ke P0.2
Clr P0.3 ; Kirim logika ‘0’ ke P0.3
Clr P0.4 ; Kirim logika ‘0’ ke P0.4
Clr P0.5 ; Kirim logika ‘0’ ke P0.5
Clr P0.6 ; Kirim logika ‘0’ ke P0.6
Clr P0.7 ; Kirim logika ‘0’ ke P0.7
Call Delay ; Memanggil waktu tunda
Setb P0.0 ; Kirim logika ‘1’ ke P0.0
Setb P0.1 ; Kirim logika ‘1’ ke P0.1
Setb P0.2 ; Kirim logika ‘1’ ke P0.2
SMK N 1 Cimahi 27
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 28
Modul Mikrokontroler Teknik Otomasi Industri
3. Buatlah sebuah program, agar LED menyala bergantian dari bit paling rendah
sampai bit paling tinggi, ulangi sebanyak 9 kali. Instruksi kunci DJNZ
4. Jelaskan berapa detik waktu tundaan berikut dikerjakan jika dipanggil
tunda: mov r0,#5
ulang1: mov r1,#10
ulang2: mov r2,#100
djnz r2,$
djnz r1,ulang2
djnz r0,ulang1
ret
SMK N 1 Cimahi 29
Modul Mikrokontroler Teknik Otomasi Industri
MODUL PEMBELAJARAN IV
PRAKTIKUM INPUT DAN OUTPUT
PUSH BUTTON
TUJUAN:
1. Siswa memahami rangkaian mikrokontroller dengan interface ke saklar
2. Siswa dapat memahami program assembly untuk mengambil data saklar dan
mengeluarkan data ke LED.
3. Siswa memahami beberapa instruksi assembly dasar, MOV, JB, JNB, Setb,
Clr, RL, RR dan DJNZ.
URAIAN MATERI
Mikrokontroler sebagai unit pengendali yang kecil, mampu secara
otomatis mengendalikan sebuah peralatan ataupun merespon terlebih dahulu
terhadap input kemudian mengolah/merespon input tersebut dan kemudian
mengendalikan peralatan lainnya. Input yang harus diberikan kepada
mikrokontroler merupakan input digital, artinya hanya memiliki level tegangan
+5V (logik “1”) atau level tegangan 0V (logik“0”).
Secara sederhana input dapat diberikan dari sebuah switch/push button
yang salah satu kakinya terhubung dengan Vcc untuk mendapatkan logik “1”
ketika ditekan (active high), namun dalam teknik ini perlu menambah sebuah
resistor dari setiap bit input ke ground (gnd) / resistor pull down, hal ini dilakukan
untuk mendapatkan logik “0” ketika push button tidak ditekan, karena harus
berasumsi bahwa ketika ditekan akan mendapatkan logik “1” dan ketika tidak
SMK N 1 Cimahi 30
Modul Mikrokontroler Teknik Otomasi Industri
ditekan akan mendapatkan logik “0” (push button memiliki dua keadaan, yaitu
ditekan dan tidak ditekan).
Teknik kedua dalam memberikan input menggunakan push button yaitu
active low, yakni ketika push button ditekan akan menginputkan logik “0”, dengan
teknik ini tidak diperlukan pemberian sebuah resistor ke Vcc / pull up untuk setiap
bit, karena mikrokontroler sendiri (kecuali P0) telah memiliki internal pull up,
kecuali untuk P0 harus diberikan eksternal pull up sebesar 4.7k ohm.
GAMBAR RANGKAIAN
LANGKAH KERJA
1. Hubungkan modul Microcontroller Trainer dengan power supply +5V
2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler
program
4. Ketik program
5. Simpanlah program yang telah diketik dan beri nama : namafile.asm
6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan
kompilasi program dari *.asm ke *.hex.
7. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP
Software
8. Lakukan pengamatan hasil running program dan catat hasilnya.
PERCOBAAN-PERCOBAAN
Percobaan 2.1 Membaca Input secara byte
SMK N 1 Cimahi 31
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 32
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 33
Modul Mikrokontroler Teknik Otomasi Industri
;
;======================================
;Subrutin ini digunakan untuk menggerakkan LED Ke Kiri
;======================================
RRight: mov A,#01111111b ;send data to Acc
RRight1: mov P0,A ;send data to P0
call delay ;call delay time
JB P2.0,RRight2 ;Menguji bit P2.0, apakah adalah logika '1'
sjmp EndRRight ;Jika P2.0=0, maka lompat ke EndRRight
RRight2: RR A
sjmp RRight1
EndRRight: ret
;=======================================
;subroutine delay time
;=======================================
delay: mov r0,#5
del1: mov r1,#255
del2: mov r2,#255
djnz r2,$
djnz r1,Del2
djnz r0,Del1
ret
end
LATIHAN
SMK N 1 Cimahi 34
Modul Mikrokontroler Teknik Otomasi Industri
MODUL PEMBELAJARAN V
PRAKTIKUM INPUT DAN OUTPUT
SEVEN SEGMENT DISPLAY
TUJUAN:
1. Siswa memahami rangkaian mikrokontroller untuk menghidupkan dan
mematikan seven segment.
2. Siswa dapat memahami program assembly untuk menghidupkan dan
mematikan seven segment.
3. Siswa dapat memahami teknik switching dan scanning pada seven segment
4. Siswa memahami beberapa instruksi assembly dasar, MOV, Setb, Clr, RL, RR
dan DJNZ.
5. Siswa dapat memahami penggunaan ROM untuk menyimpan konstanta
SMK N 1 Cimahi 35
Modul Mikrokontroler Teknik Otomasi Industri
setiap kaki anode, atau agar lebih praktis, kaki common di-ground-kan, sehingga
untuk menyalakan segment, dapat diberikan data dengan logik “1”.
SMK N 1 Cimahi 36
Modul Mikrokontroler Teknik Otomasi Industri
(a)
(b)
Gambar 5.3. (a) Rangkaian display 7 segmen (b) rangkaian dekoder
74ls138
INPUT
ENABLE OUTPUT
SELECTOR
C B A G1 /G2A /G2B Y1 Y2 Y2 Y3 Y4 Y5 Y6 Y7
0 0 0 1 0 0 0 1 1 1 1 1 1 1
0 0 1 1 0 0 1 0 1 1 1 1 1 1
0 1 0 1 0 0 1 1 0 1 1 1 1 1
0 1 1 1 0 0 1 1 1 0 1 1 1 1
1 0 0 1 0 0 1 1 1 1 0 1 1 1
1 0 1 1 0 0 1 1 1 1 1 0 1 1
1 1 0 1 0 0 1 1 1 1 1 1 0 1
1 1 1 1 0 0 1 1 1 1 1 1 1 0
Pada tabel kebenaran tersebut tampak bahwa seven segment yang hidup
tergantung pada output dari dekoder 74LS138, yang sedang mengeluarkan logika
low ”0”, sehingga dari 8 buah display tersebut, selalu hanya satu display yang
akan dihidupkan. Agar display tampak nyala secara bersamaan maka ketiga
display tersebut harus dihidupkan secara bergantian dengan waktu tunda tertentu.
Pada gambar tersebut seven segment commont anoda dikendalikan dengan
menggunakan transistor PNP melalui decoder 74LS138, apabila ada logika low
pada basis transistor, maka 7 segment akan nyala dan sebaliknya akan padam.
SMK N 1 Cimahi 37
Modul Mikrokontroler Teknik Otomasi Industri
LANGKAH KERJA
1. Hubungkan modul Microcontroller Trainer dengan power supply +5V
2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler
program
4. Ketik program
5. Simpanlah program yang telah diketik dan beri nama : namafile.asm
6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan
kompilasi program dari *.asm ke *.hex.
7. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP
Software
8. Lakukan pengamatan hasil running program dan catat hasilnya.
PERCOBAAN-PERCOBAAN
Percobaan 5.1Tulis Karakter pada 7 Segmen
Pada percobaan ini, karakter ‘A’ akan ditampilkan pada 7
Segmen Display 1.
SMK N 1 Cimahi 38
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 39
Modul Mikrokontroler Teknik Otomasi Industri
org 0h
start: clr P3.5 ; P3.5 = '0'
clr P3.6 ; P3.6 = '0'
clr P3.7 ; P3.7 = '0'
mov P0, #10001000b ; isi P0 dg. 10001000. Cetak
Karakter 'A'
call delay ; Panggil Waktu Tunda
;
setb P3.5 ; P3.5 = '1'
clr P3.6 ; P3.6 = '0'
clr P3.7 ; P3.7 = '0'
mov P0,#10000011b ; isi P0 dg.100000011. Cetak
Karakter 'b'
call delay ; Panggil Waktu Tunda
;
clr P3.5 ; P3.5 = '0'
setb P3.6 ; P3.6 = '1'
clr P3.7 ; P3.7 = '0'
mov P0,#11000110b ; Cetak Karakter 'C'
call delay ; Panggil Waktu Tunda
sjmp start ; Lompat ke start
delay: mov R1,#25
del1: mov R2,#25
del2: djnz R2,del2
djnz R1,del1
ret
end
Latihan
1. Lakukan modifikasi pada program tersebut untuk mencetak karakter lain pada
seven segment sesuai tabel:
Nama Karakter Posisi Display
HAlloguy -
YournAme -
SMK N 1 Cimahi 40
Modul Mikrokontroler Teknik Otomasi Industri
Latihan
Modifikasi program di atas untuk membuat program down counter!
Percobaan 5.4. Setting Up/ Dn dan Enter dengan Display ke 7 Segmen.
Pada percobaan ini, akan dibuat suatu simulasi setting UP (P2.1)/ DN
(P2.2) dan penekanan tombol Enter (P2.0), dan di displaykan ke display 7
Segmen. Data display akan bertambah dari 00 s/d 99 atau berkurang dari 99 s/d
00, sesuai dengan penekanan pada tombol UP/ DN. Bila ditekan tombol Enter,
maka tombol UP/ DN tidak akan berfungsi lagi.
Programnya adalah sebagai berikut:
Org 0h
ratusan equ 30h
puluhan equ 31h
satuan equ 32h
;
start:
SMK N 1 Cimahi 41
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 42
Modul Mikrokontroler Teknik Otomasi Industri
mov a,b
mov b,#10d
div ab
mov puluhan,a
mov satuan,b
ret
;
delay: mov R0,#30
delay1:mov R2,#255
djnz R2,$
djnz R0,delay1
ret
;
Data7segmen:
db 11000000b,11111001b,10100100b,10110000b,10011001b
db 10010010b,10000010b,11111000b,10000000b,10010000b
end
Latihan
1. Buatlah Up Down Counter dari 0 – 9 secara manual.
Jika tombol 1 ditekan angka menghitung naik 1 digit.
Jika tombol 2 ditekan angka menghitung turun 1 digit
SMK N 1 Cimahi 43
Modul Mikrokontroler Teknik Otomasi Industri
MODUL PEMBELAJARAN VI
PRAKTIKUM INPUT DAN OUTPUT
KEYPAD MATRIX 4X4
TUJUAN:
1. Siswa memahami rangkaian interface keypad 4x4 dengan mikrokontroller
2. Siswa memahami bahasa assembly untuk pengambilan data keypad
3. Siswa memahami bahasa assembly untuk pengambilan data keypad dan
mengeluarkan ke LED
4. Siswa memahami bahasa assembly untuk pengambilan data keypad dan
mengeluarkan ke 7 Segmen
SMK N 1 Cimahi 44
Modul Mikrokontroler Teknik Otomasi Industri
Keypad serig digunakan sebagi suatu input pada beberapa peralatan yang
berbasis mikroprosessor atau mikrokontroller. Keypad sesungguhnya terdiri dari
sejumlah saklar, yang terhubung sebagai baris dan kolom dengan susuan seperti
yang ditunjukkan pada gambar 6.2. Agar mikrokontroller dapat melakukan scan
keypad, maka port mengeluarkan salah satu bit dari 4 bit yang terhubung pada
kolom dengan logika low “0” dan selanjutnya membaca 4 bit pada baris untuk
menguji jika ada tombol yang ditekan pada kolom tersebut. Sebagai konsekuensi,
selama tidak ada tombol yang ditekan, maka mikrokontroller akan melihat sebagai
logika high “1” pada setiap pin yang terhubung ke baris.
LANGKAH KERJA
1. Hubungkan modul Microcontroller Trainer dengan power supply +5V
2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler
program
4. Ketik program
5. Simpanlah program yang telah diketik dan beri nama : namafile.asm
6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan
kompilasi program dari *.asm ke *.hex.
SMK N 1 Cimahi 45
Modul Mikrokontroler Teknik Otomasi Industri
PERCOBAAN-PERCOBAAN
Percobaan 6.1 scan data keypad 1x4, COR-MEN-UpArrow-DnArrow
Pada percobaan ini, akan dilakukan scan data keypad COR-MEN-UpArr.-
DnArr. dan mengeluarkan data ke LED.
Ketik program berikut ini:
org 0h
satu equ 11111001b
empat equ 10011001b
tujuh equ 11111000b
can equ 10001001b
baris1 equ p2.0
baris2 equ p2.1
baris3 equ p2.2
baris4 equ p2.3
kolom1 equ p2.4
kolom2 equ p2.5
kolom3 equ p2.6
kolom4 equ p2.7
clr p3.5
clr p3.6
clr p3.7
;scan angka 1 4 7 dan can
scan:
mov p2,#11111111b
clr kolom1
a1: jb baris1,a4
mov p0,#satu
jmp scan
a4: jb baris2,a7
mov p0,#empat
jmp scan
a7: jb baris3,acan
mov p0,#tujuh
jmp scan
acan: jb baris4,scan
mov p0,#can
jmp scan
end
Latihan:
1. Lakukan modifikasi pada program tersebut diatas untuk scan data keypad 2-5-
8-0, 3-6-9-ENT, dan cor-men-up-down
SMK N 1 Cimahi 46
Modul Mikrokontroler Teknik Otomasi Industri
TUJUAN:
1. Siswa mamahami rangkaian interface mikrokontroller dengan motor stepper
2. Siswa memahami rangkaian driver motor stepper ULN2003
3. Siswa memahami bahasa assembly untuk mengatur arah putaran motor
stepper
4. Siswa memahami bahasa assembly untuk mengatur arah putaran motor
stepper dengan menggunakan saklar.
SMK N 1 Cimahi 47
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 48
Modul Mikrokontroler Teknik Otomasi Industri
Gambar 7.3. Ilustrasi motor stepper dengan jarum kompas dengan elektromagnet
Tinjau skema dan rangkaian pada gambar 7.3 dan gambar 7.4, agar motor
berputar kearah kanan maka lilitan pada stepper harus aktif secara bergantian
dimulai dari L1-L2-L3-L4 kemudian siklus ini diulangi kembali agar motor
stepper terus menerus berputar. Dengan sistematika di atas, kita bisa mengatur
arah putaran motor stepper tersebut, dengan memberikan sistematika pengaktifan
lilitan yang terbalik dimulai dari L4-L3-L2- L1 dan mengulangi siklus ini, atau
dengan mengulangi beberapa siklus untuk mendapatkan perputaran motor stepper
pada sudut tertentu. Ataupun dengan mengatur lebar pulsa pengaktifan untuk
mendapatkan kecepatan putaran motor yang diinginkan.
SMK N 1 Cimahi 49
Modul Mikrokontroler Teknik Otomasi Industri
LANGKAH KERJA
1. Hubungkan modul Microcontroller Trainer dengan power supply +5V
2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler
program
4. Ketik program
5. Simpanlah program yang telah diketik dan beri nama : namafile.asm
6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan
kompilasi program dari *.asm ke *.hex.
7. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP
Software
8. Lakukan pengamatan hasil running program dan catat hasilnya.
PERCOBAAN-PERCOBAAN
Percobaan 7.1.a. Penggerak Motor Stepper Searah Jarum Jam
Pada percobaan ini, motor stepper akan berputar searah jarum jam, terus
menerus Untuk melakukan percobaan ini hubungkan kabel parallel antara P0
(P0.7..P0.4) dengan input motor stepper (D3..D0).
SMK N 1 Cimahi 50
Modul Mikrokontroler Teknik Otomasi Industri
org 0h
start: call StepCCW
sjmp start
;
StepCCW:
mov P0,#01111111b ; Turn on driver 1
call delay ; call delay time
mov P0,#10111111b ; Turn on driver 2
call delay ; call delay time
mov P0,#11011111b ; Turn on driver 3
call delay ; call delay time
mov P0,#11101111b ; Turn on driver 4
call delay ; call delay time
ret
;
delay: mov R0,#255
SMK N 1 Cimahi 51
Modul Mikrokontroler Teknik Otomasi Industri
delay1:mov R2,#255
djnz R2,$
djnz R0,delay1
ret
end
Percobaan 7.2. Pengaturan Arah Putaran Motor Melalui Saklar
Pada percobaan ini, motor stepper akan berputar searah jarum jam, atau
berlawanan arah jarum jam bergantung pada posisi push button yang ditekan
(P2.0 atau P2.1) secara terus menerus.
Ketik program berikut ini:
org 0h
start:
jnb p2.0,StepCW
jnb p2.1,StepCCW
jmp start
StepCW:
mov P0,#11101111b ; Turn on driver 1
call delay ; call delay time
mov P0,#11011111b ; Turn on driver 2
call delay ; call delay time
mov P0,#10111111b ; Turn on driver 3
call delay ; call delay time
mov P0,#01111111b ; Turn on driver 4
call delay ; call delay time
jnb p2.1,StepCCW
jmp StepCW
;
StepCCW:
mov P0,#01111111b ; Turn on driver 1
call delay ; call delay time
mov P0,#10111111b ; Turn on driver 2
call delay ; call delay time
mov P0,#11011111b ; Turn on driver 3
call delay ; call delay time
mov P0,#11101111b ; Turn on driver 4
call delay ; call delay time
jnb p2.0,StepCW
jmp StepCCW
;
delay: mov R0,#255
delay1: mov R2,#255
djnz R2,$
djnz R0,delay1
ret
end
SMK N 1 Cimahi 52
Modul Mikrokontroler Teknik Otomasi Industri
Pada percobaan ini motor stepper akan berputar bolak-balik sebesar 1800.
Programnya adalah sebagai berikut:
org 0h
mov r3,#25 ;menunjukkan jumlah data yang diberikan ke motor stepper
;agar berputar 1800
; 1800/(1,80 x 4) = 25
sudut1:
mov p0,#11101111b
call tunda
mov p0,#11011111b
call tunda
mov p0,#10111111b
call tunda
mov p0,#01111111b
call tunda
djnz r3,sudut1
mov r3,#25
sudut2:
mov p0,#01111111b
call tunda
mov p0,#10111111b
call tunda
mov p0,#11011111b
call tunda
mov p0,#11101111b
call tunda
djnz r3,sudut2
jmp 0h
tunda:mov r0,#5
tunda1:mov r1,#50
tunda2:mov r2,#50
djnz r2,$
djnz r1,tunda2
djnz r0,tunda1
ret
end
Latihan
1. Buatlah program untuk memutar stepper 1800 dan kembali berputar 1800
berlawanan arah
2. Buatlah program menu pilihan penekanan push button pada p2
P2.0 900 P2.2 1800 P2.4 -900 P2.6 -1800
P2.1 2700 P2.3 3600 P2.5 -2700 P2.7 -3600
3. Modifikasi program pada soal nomor 3, agar stepper berputar dengan
kecepatan yang berbeda-beda!
4. Rancanglah sebuah rangakaian dan gambar alat penjejak cahaya, dengan LDR
sebagai sensornya, dan stepper sebagai penggeraknya, agar alat tersebut selalu
SMK N 1 Cimahi 53
Modul Mikrokontroler Teknik Otomasi Industri
TUJUAN:
1. Siswa memahami rangkaian Driver Motor DC
SMK N 1 Cimahi 54
Modul Mikrokontroler Teknik Otomasi Industri
LANGKAH KERJA
1. Hubungkan modul Microcontroller Trainer dengan power supply +5V
2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler
program
4. Ketik program
5. Simpanlah program yang telah diketik dan beri nama : namafile.asm
6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan
kompilasi program dari *.asm ke *.hex.
SMK N 1 Cimahi 55
Modul Mikrokontroler Teknik Otomasi Industri
PERCOBAAN-PERCOBAAN
Percobaan 8.1. Penggerak Motor DC Searah Jarum Jam
Pada percobaan ini, motor DC akan berputar searah jarum jam, terus
menerus Untuk melakukan percobaan ini hubungkan kabel parallel antara P0
(P0.2..P0.0) P dengan motor DC (EN,2A,dan 1A).
Ketik program berikut ini:
org 0h
start: setb p0.2 ;EN
clr p0.0 ;1A
setb p0.1 ;2A
sjmp start
end
SMK N 1 Cimahi 56
Modul Mikrokontroler Teknik Otomasi Industri
MODUL PEMBELAJARAN IX
PRAKTIKUM OUTPUT
LCD KARAKTER
TUJUAN
1. Siswa memahami rangkaian interface mikrokontroller dengan LCD Karakter
2 x 16
3. Siswa memahami beberapa instruksi assembly dasar, MOV, Setb, Clr, dan
waktu tunda.
4. Siswa memahami mencetak karakter pada posisi baris dan kolom tertentu
SMK N 1 Cimahi 57
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 58
Modul Mikrokontroler Teknik Otomasi Industri
7 DB0 LSB
8 DB1 -
9 DB2 -
10 DB3 -
11 DB4 -
12 DB5 -
13 DB6 -
14 DB7 MSB
15 BPL Back Plane Light
16 GND Ground voltage
Display karakter pada LCD diatur oleh pin EN, RS dan RW:
Beberapa perintah dasar yang harus dipahami adalah inisialisasi LCD Character:
1. Function Set
Mengatur interface lebar data, jumlah dari baris dan ukuran font karakter
KONTROL DATA
RS EN R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 pulse 0 0 0 1 DL N F X X
Catatan:
X : Don’t care
DL: Mengatur lebar data
DL=1, Lebar data interface 8 bit ( DB7 s/d DB0)
DL=0, Lebar data interface 4 bit ( DB7 s/d DB4)
Ketika menggunakan lebar data 4 bit, data harus dikirimkan dua kali
SMK N 1 Cimahi 59
Modul Mikrokontroler Teknik Otomasi Industri
N: Pengaktivan baris
N=0, 1 baris
N=1, 2 baris
F: Penentuan ukuran font karakter
F=0, 5x7
F=1, 5x8
KONTROL DATA
RS EN R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 pulse 0 0 0 0 0 1 D C B
D : Mengatur display
D = 1, Display is ON
D = 0, Display is OFF
Pada kasus ini data display masih tetap berada di DDRAM, dan dapat ditampilkan
kembali secara langsung dengan mengatur D=1.
C : Menampilkan kursor
C = 1, kursor ditampilkan
C = 0, kursor tidak ditampilkan
B : Karakter ditunjukkan dengan kursor yang berkedip
B=1, kursor blink
4. Clear Display
Perintah hapus layar
KONTROL DATA
RS EN R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 pulse 0 0 0 0 0 0 0 0 1
SMK N 1 Cimahi 60
Modul Mikrokontroler Teknik Otomasi Industri
A. Posisi Kursor
Modul LCD terdiri dari sejumlah memory yang digunakan untuk display.
Semua teks yang kita tuliskan ke modul LCD adalah disimpan didalam memory
ini, dan modul LCD secara berturutan membaca memory ini untuk menampilkan
teks ke modul LCD itu sendiri.
Pada peta memori tersebut, daerah yang berwarna biru ( 00 s/d 0F dan 40
s/d 4F ) adalah display yang tampak. Sebagaimanan yang anda lihat, jumlahnya
sebanyak 16 karakter per baris dengan dua baris. Angka pada setiap kotak adalah
alamat memori yang bersesuaian dengan posisi dari layar. Demikianlah karakter
pertama di sudut kiri atas adalah menempati alamah 00h. Posisi karakter
berikutnya adalah alamat 01h dan seterusnya.
Akan tetapi, karakter pertama dari baris 2 sebagaimana yang ditunjukkan
pada peta memori adalah pada alamat 40h. Dimikianlah kita perlu untuk mengirim
sebuah perintah ke LCD untuk mangatur letak posisi kursor pada baris dan kolom
tertentu. Instruksi Set Posisi Kursor adalah 80h. Untuk ini kita perlu
menambahkan alamat lokasi dimana kita berharap untuk menempatkan kursor.
Sebagai contoh, kita ingin menampilkan kata ”World” pada baris ke dua pada
posisi kolom ke sepuluh. Sesuai peta memori, posisi karakter pada kolom 11 dari
baris ke dua, mempunyai alamat 4Ah, sehingga sebelum kita tulis kata ”World”
pada LCD, kita harus mengirim instruksi set posisi kursor, dan perintah untuk
instruksi ini adalah 80h ditambah dengan alamat 80h+4Ah =0Cah. Sehingga
dengan mengirim perintah Cah ke LCD, akan menempatkan kursor pada baris
kedua dan kolom ke 11 dari DDRAM.
SMK N 1 Cimahi 61
Modul Mikrokontroler Teknik Otomasi Industri
0 0 1 A A A A A A A
Catatan:
A : Alamat RAM yang akan dipilih
Sehingga alamat RAM LCD adalah 000 0000 S/D 111 1111 b atau 00 s/d 7Fh
B. Inisialisasi
Sebelum kita dapat menggunakan modul LCD, kita harus melakukan
inisialisasi dan mengkonfigurasikannya. Hal ini dijalankan dengan mengirimkan
sejumlah instruksi ke LCD. Antara lain: pengaturan lebar data interface 8 bit atau
4 bit data bus, pemilihan ukuran font karakter 5x8 atau 5x7 dan lain-lain, dengan
instruksi sebagai berikut.
Init_lcd:
mov r1,#00000001b ;Display clear
call write_inst ;EN=pulse dan RS=0
mov r1,#00111000b ;Function set, ;Data 8 bit,2 line font 5x7
call write_inst ;Set bit EN=pulse dan RS=0
mov r1,#00001100b ;Display on, ;cursor off,cursor blink off
call write_inst ;EN=pulse dan RS=0
mov r1,#00000110b ;Entry mode, Set increment
call write_inst
ret
LANGKAH KERJA
1. Hubungkan modul Microcontroller Trainer dengan power supply +5V
2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler
program
4. Ketik program
5. Simpanlah program yang telah diketik dan beri nama : namafile.asm
6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan
kompilasi program dari *.asm ke *.hex.
7. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP
Software
8. Lakukan pengamatan hasil running program dan catat hasilnya.
PERCOBAAN-PERCOBAAN
Percobaan 9.1. Tulis Sebuah Karakter pada LCD Karakter
Pada percobaan ini, karakter ‘A’ akan ditampilkan pada LCD Karakter.
SMK N 1 Cimahi 62
Modul Mikrokontroler Teknik Otomasi Industri
Gambar 4.4. Diagram alir (a) rutin utama cetak karakter “A”, (b) subrutin
inisialisasi LCD karakter pada percobaan 4.1
org 0h
call init_LCD
start: mov R1,#80h ; Lokasi Display RAM, Row=1 Col=1
call write_inst
mov R1,#'A' ; Cetak Karakter A
call write_data
stop: sjmp stop
Init_lcd:
mov r1,#00000001b ;Display clear
call write_inst
mov r1,#00111000b ;Function set,Data 8 bit,2 line font 5x7
call write_inst
mov r1,#00001100b ;Display on, ;cursor off,cursor blink off
call write_inst
mov r1,#00000110b ;Entry mode, Set increment
call write_inst
ret
;
Write_inst:
SMK N 1 Cimahi 63
Modul Mikrokontroler Teknik Otomasi Industri
LATIHAN 1
Lakukan modifikasi pada program tersebut untuk mencetak karakter lain, sesuai
table di bawah ini:
org 0h
call init_LCD
start: mov R1,#80h ; Lokasi Display RAM, Row=1 Col=1
call write_inst
mov R1,#'W'
call write_data
mov R1,#'e'
call write_data
mov R1,#'l'
SMK N 1 Cimahi 64
Modul Mikrokontroler Teknik Otomasi Industri
call write_data
mov R1,#'c'
call write_data
mov R1,#'o'
call write_data
mov R1,#'m'
call write_data
mov R1,#'e'
call write_data
stop: sjmp stop
Init_lcd:
mov r1,#00000001b ;Display clear
call write_inst
mov r1,#00111000b ;Function set, Data 8 bit,2 line font 5x7
call write_inst
mov r1,#00001100b ;Display on, cursor off,cursor blink off
call write_inst
mov r1,#00000110b ;Entry mode, Set increment
call write_inst
ret
;
Write_inst:
clr P3.5 ; P3.5 = RS =0
mov P0,R1 ; P0 = D7 s/d D0 = R1
setb P3.7 ; P3.7 =EN = 1
call delay ; call delay time
clr P3.7 ; P3.7 =EN = 0
ret
;
Write_data:
setb P3.5 ; P3.5 = RS =1
mov P0,R1 ; P0 = D7 s/d D0 = R1
setb P3.7 ; P3.7 =EN = 1
call delay ; call delay time
clr p3.7 ; P3.7 =EN = 0
ret
;
delay: mov R0,#0
delay1:mov R7,#0fh
djnz R7,$
djnz R0,delay1
ret
;
end
LATIHAN 2
SMK N 1 Cimahi 65
Modul Mikrokontroler Teknik Otomasi Industri
Lakukan modifikasi pada program tersebut untuk mencetak karakter lain, sesuai
tabel:
Nama Karakter Start Posisi Display
Selamat Datang Row 1, Col 1
Mikrokontroller Row 2, Col 1
org 0h
call init_LCD
start: call write_char
stop: sjmp stop
;
write_char:
mov dptr,#word1 ;DPTR = [ address word1 ]
mov r3,#12 ;R3=12,number character to be display
mov r1,#80h ;R1=80h,address DDRAM start position
call write_inst
;
write1:clr a ;A=0
movc a,@a+dptr ; A = [A+ DPTR]
mov r1,A ; R1 = A
inc dptr ; DPTR = DPTR +1
call write_data ;
djnz r3,write1 ; R3 = R3-1,
ret
;
Init_lcd:
mov r1,#00000001b ;Display clear
call write_inst ;
mov r1,#00111000b ;Function set, Data 8 bit,2 line font 5x7
call write_inst ;
mov r1,#00001100b ;Display on, cursor off,cursor blink off
call write_inst ;
mov r1,#00000110b ;Entry mode, Set increment
call write_inst
ret
;
Write_inst:
clr P3.5 ; P3.5 = RS =0
mov P0,R1 ; P0 = D7 s/d D0 = R1
setb P3.7 ; P3.7 =EN = 1
call delay ; call delay time
clr P3.7 ; P3.7 =EN = 0
ret
SMK N 1 Cimahi 66
Modul Mikrokontroler Teknik Otomasi Industri
;
Write_data:
setb P3.5 ; P3.5 = RS =1
mov P0,R1 ; P0 = D7 s/d D0 = R1
setb P3.7 ; P3.7 =EN = 1
call delay ; call delay time
clr p3.7 ; P3.7 =EN = 0
ret
;
delay: mov R0,#0
delay1:mov R7,#0fh
djnz R7,$
djnz R0,delay1
ret
;
word1: DB 'Welcome Home' ; Karakter yang disimpan di ROM
end
LATIHAN 3
Lakukan modifikasi pada program tersebut untuk mencetak karakter lain, sesuai
tabel:
Nama Karakter Start Posisi Display
Selamat Datang Row 1, Col 1
Mikrokontroller Row 2, Col 1
SMK N 1 Cimahi 67
Modul Mikrokontroler Teknik Otomasi Industri
sjmp start
;
Init_lcd:
mov r1,#00000001b ;Display clear
call write_inst ;
mov r1,#00111000b ;Function set,Data 8 bit,2 line font 5x7
call write_inst ;
mov r1,#00001100b ;Display on, cursor off,cursor blink off
call write_inst
mov r1,#00000110b ;Entry mode, Set increment
call write_inst
ret
;
Write_inst:
clr P3.5 ; RS = 0, write mode instruction
mov P0,R1 ; D7 s/d D0 = P0 = R1
setb P3.7 ; EN = 1
call delay ; call delay time
clr P3.7 ; EN = 0
ret
;
Write_data:
setb P3.5 ; RS = 1, write mode data
mov P0,R1 ; D7 s/d D0 = P0 = R1
setb P3.7 ; EN =1
call delay ; call delay time
clr p3.7 ; EN = 0
ret
Ldelay: mov R2,#030h
Ld1: call delay
djnz R2,Ld1
ret
;
delay: mov R0,#0
delay1:mov R7,#0fh
djnz R7,$
djnz R0,delay1
ret
;
end
LATIHAN 4
1. Buatlah program untuk menampilkan kalimat ”Welcome
home” pada layar LCD Karakter dengan menggunakan look
up table dan dilakukan proses geser ke kiri.
2. Dengan memanfaatkan instruksi shift display dan cursor,
cetaklah kata Teknik Otomasi Industri yang dapat
SMK N 1 Cimahi 68
Modul Mikrokontroler Teknik Otomasi Industri
MODUL PEMBELAJARAN X
T I M E R/ COUNTER
TUJUAN
1. Siswa memahami fungsi timer dan counter pada mikrokontroller
SMK N 1 Cimahi 69
Modul Mikrokontroler Teknik Otomasi Industri
URAIAN MATERI
Timer dan Counter merupakan sarana input yang kurang dapat perhatian
pemakai mikrokontroler, dengan sarana input ini mikrokontroler dengan mudah
bisa dipakai untuk mengukur lebar pulsa, membangkitkan pulsa dengan lebar
yang pasti, dipakai dalam pengendalian tegangan secara PWM (Pulse Width
Modulation) dan sangat diperlukan untuk aplikasi remote control dengan infra
merah. Pada dasarnya sarana input yang satu ini merupakan seperangkat pencacah
biner (binary counter) yang terhubung langsung ke saluran data mikrokontroler,
sehingga mikrokontroler bisa membaca kedudukan pancacah, bila diperlukan
mikrokontroler dapat pula merubah kedudukan pencacah tersebut.
Seperti layaknya pencacah biner, bilamana sinyal denyut (clock) yang
diumpankan sudah melebihi kapasitas pencacah, maka pada bagian akhir untaian
pencacah akan timbul sinyal limpahan, sinyal ini merupakan suatu hal yang
penting sekali dalam pemakaian pencacah. Terjadinya limpahan pencacah ini
dicatat dalam sebuah flip-flop (register)
tersendiri.
Di samping itu, sinyal denyut yang diumpankan ke pencacah harus pula bisa
dikendalikan dengan mudah. Hal-hal yang dibicarakan di atas diringkas dalam
Gambar 10.1. AT89S51 mempunyai dua buah register timer/counter 16 bit, yaitu
Timer 0 dan Timer 1. Keduanya dapat dikonfigurasikan untuk beroperasi sebagai
timer atau counter, seperti yang terlihat pada gambar di bawah.
SMK N 1 Cimahi 70
Modul Mikrokontroler Teknik Otomasi Industri
Fasilitas Timer/Counter
Keluarga mikrokontroler MCS51, misalnya AT89S51 dan AT89Sx051,
dilengkapi dengan dua perangkat Timer/Counter, masing-masing dinamakan
sebagai Timer 0 dan Timer 1. Sedangkan untuk jenis yang lebih besar, misalnya
AT89S52, mempunyai tambahan satu perangkat Timer/Counter lagi yang
dinamakan sebagai Timer 2. Perangkat Timer/Counter tersebut merupakan
perangkat keras yang menjadi satu dalam chip mikrokontroler MCS51, bagi
pemakai mikrokontroler MCS51 perangkat tersebut dikenal sebagai SFR (Special
Function Register) yang berkedudukan sebagai memori data internal. Pencacah
biner untuk Timer 0 dibentuk dengan register TL0 (Timer 0 Low Byte, memori-
data internal nomor 6AH) dan register TH0 (Timer 0 High Byte, memori data
internal nomor 6CH). Pencacah biner untuk Timer 1 dibentuk dengan register TL1
(Timer 1 Low Byte, memori-data internal nomor 6BH) dan register TH1 (Timer 1
High Byte, memori-data internal nomor 6DH). Pencacah biner pembentuk
Timer/Counter MCS51 merupakan pencacah biner menaik (count up binary
counter) yang mencacah dari 0000H sampai FFFFH, saat kedudukan pencacah
berubah dari FFFFH kembali ke 0000H akan timbul sinyal limpahan.
Untuk mengatur kerja Timer/Counter dipakai 2 register tambahan yang
dipakai bersama oleh Timer 0 dan Timer 1. Register tambahan tersebut adalah
register TCON (Timer Control Register, memori-data internal nomor 88H, bisa
dialamat secara bit) dan register TMOD (Timer Mode Register, memori-data
internal nomor 89H). Pencacah biner Timer 0 dan 1 TL0, TH0, TL1 dan TH1
merupakan SFR (Special Function Register) yang dipakai untuk membentuk
pencacah biner perangkat Timer 0 dan Timer 1. Kapasitas keempat register
tersebut masing-masing 8 bit, bisa disusun menjadi 4 macam Mode pencacah
biner seperti terlihat dalam Gambar 10.2 sampai Gambar 10.5.
Pada Mode 0, Mode 1 dan Mode 2 Timer 0 dan Timer 1 masing-masing
bekerja sendiri, artinya bisa dibuat Timer 0 bekerja pada Mode 1 dan Timer 1
bekerja pada Mode 2, atau kombinasi mode lainnya sesuai dengan keperluan.
Pada Mode 3 TL0, TH0, TL1 dan TH1 dipakai bersama-sama untuk menyusun
sistem timer yang tidak bisa di-kombinasi lain. Susunan TL0, TH0, TL1 dan TH1
pada masing-masing mode adalah sebagai berikut:
SMK N 1 Cimahi 71
Modul Mikrokontroler Teknik Otomasi Industri
Pencacah biner dibentuk dengan TLx (maksudnya bisa TL0 atau TL1)
sebagai pencacah biner 5 bit (meskipun kapasitas sesungguhnya 8 bit), limpahan
dari pencacah biner 5 bit ini dihubungkan ke THx (maksudnya bisa TH0 atau
TH1) membentuk sebuah untaian pencacah biner 13 bit, limpahan dari pencacah
13 bit ini ditampung di flip-flop TFx (maksudnya bisa TF0 atau TF1) yang berada
di dalam register TCON. Mode ini meneruskan sarana Timer yang ada pada
mikrokontroler MCS48 (mikrokontroler pendahulu MCS51), dengan maksud
rancangan alat yang dibuat dengan MCS48 bisa dengan mudah diadaptasikan ke
MCS51. Mode ini tidak banyak dipakai lagi.
Mode ini sama dengan Mode 0, hanya saja register TLx dipakai sepenuhnya
sebagai pencacah biner 8 bit, sehingga kapasitas pencacah biner yang terbentuk
adalah 16 bit. Seiring dengan sinyal denyut, kedudukan pencacah biner 16 bit ini
akan bergerak dari 0000H (biner 0000 0000 0000 0000), 0001H, 0002H …
sampai FFFFH (biner 1111 1111 1111 1111), kemudian melimpah kembali
menjadi 0000H.
TLx dipakai sebagai pencacah biner 8 bit, sedangkan THx dipakai untuk
menyimpan nilai yang diisikan ulang ke TLx, setiap kali kedudukan TLx
melimpah (berubah dari 0FFH menjadi 00H). Dengan cara ini bisa didapatkan
sinyal limpahan yang frekuensinya ditentukan oleh nilai yang disimpan dalam
TH0.
SMK N 1 Cimahi 72
Modul Mikrokontroler Teknik Otomasi Industri
Pada Mode 3 TL0, TH0, TL1 dan TH1 dipakai untuk membentuk 3 untaian
pencacah, yang pertama adalah untaian pencacah biner 16 bit tanpa fasiltas
pemantau sinyal limpahan yang dibentuk dengan TL1 dan TH1. Yang kedua
adalah TL0 yang dipakai sebagai pencacah biner 8 bit dengan TF0 sebagai sarana
pemantau limpahan. Pencacah biner ketiga adalah TH0 yang dipakai sebagai
pencacah biner 8 bit dengan TF1 sebagai sarana pemantau limpahan. Register
Pengatur Timer Register TMOD dan register TCON merupakan register pembantu
untuk mengatur kerja Timer 0 dan Timer 1, kedua register ini dipakai bersama
oleh Timer 0 dan Timer 1.
SMK N 1 Cimahi 73
Modul Mikrokontroler Teknik Otomasi Industri
Mengatur Timer
Gambar 10.8 merupakan bagan susunan rangkaian yang bisa terjadi pada
Timer 1 secara lengkap, digambarkan pula hubungan-hubungan semua register
pembentuk dan pengatur Timer 1. Gambar ini berlaku pula untuk Timer 0. Dalam
pemakaian sesungguhnya, rangkaian yang dipakai hanya sebagian dari rangkaian
lengkap tersebut, sesuai dengan keperluan sistem yang dibangun. Rangkaian yang
dikehendaki dibentuk dengan mengatur register TMODE, sedangkan kerja dari
Timer dikendalikan lewat register TCON.
SMK N 1 Cimahi 74
Modul Mikrokontroler Teknik Otomasi Industri
Setelah MCS51 di-reset register TMOD bernilai 00H, hal ini berarti :
1. Bit C/T* =’0’, menurut Gambar 10.8 keadaan ini membuat saklar S1 ke posisi
atas, sumber sinyal denyut berasal dari osilator kristal yang frekuensinya sudah
dibagi 12, pencacah biner yang dibentuk dengan TL1 dan TH1 berfungsi
sebagai timer. Jika sistem yang dirancang memang menghendaki Timer 1
bekerja sebagai timer maka bit C/T* tidak perlu diatur lagi.
2. Tapi jika sistem yang dirancang menghendaki agar Timer 1 bekerja sebagai
counter untuk menghitung pulsa yang masuk lewat kakai T1 (P3.5), maka
posisi saklar S1 harus dikebawahkan dengan membuat bit C/T* menjadi ‘1’.
3. bit GATE=’0’, hal ini membuat output gerbang OR selalu ‘1’ tidak dipengaruhi
keadaan ‘0’ atau ‘1’ pada kaki INT1 (P3.3). Dalam keadaan semacam ini,
saklar S2 hanya dikendalikan lewat bit TR1 dalam register TCON. Jika
TR1=’1’ saklar S2 tertutup sehingga sinyal denyut dari S1 disalurkan ke sistem
pencacah biner, aliran sinyal denyut akan dihentikan jika TR=’0’. Sebaliknya
jika bit GATE=’1’, output gerbang OR akan mengikuti keadaan kaki INT1,
saat INT1=’0’ apa pun keadaan bit TR1 output gerbang AND selalu =’0’ dan
saklar S1 selalu terbuka, agar saklar S1 bisa tertutup kaki INT1 dan bit TR1
harus =’1’ secara bersamaan.Jika sistem yang dirancang menghendaki kerja
dari timer/counter dikendalikan dari sinyal yang berasal dari luar chip, maka bit
GATE harus dibuat menjadi ‘1’.
4. Bit M1 dan M0=’0’, berarti TL1 dan TH1 disusun menjadi pencacah biner 13
bit (Mode 0), jika dikehendaki Timer 1 bekerja pada mode 1 seperti terlihat
dalam Gambar 10.8, maka bit M1 harus dibuat menjadi ‘0’ dan bit M0 menjadi
‘1’. Pengetahuan di atas dipakai sebagai dasar untuk mengatur dan
mengendalikan Timer seperti terlihat dalam contoh-contoh berikut : Setelah
reset TMOD bernilai 00H, berarti Timer 1 bekerja sebagai pencacah biner 13
bit, sumber sinyal denyut dari osilator kristal atau Timer 1 bekerja sebagai
‘timer’, bit GATE =’0’ berarti kaki INT1 tidak berpengaruh pada rangkaian
sehingga Timer 1 hanya dikendalikan dari bit TR1.
Dalam pemakaian biasanya dipakai pencacah biner 16 bit, untuk keperluan
itu instruksi yang diperlukan untuk mengatur TMOD adalah :
MOV TMOD,#00010000b
MOV TMOD,#01010000b
SMK N 1 Cimahi 75
Modul Mikrokontroler Teknik Otomasi Industri
Perbedaannya dengan instruksi di atas adalah dalam instruksi ini bit 6 (bit
C/T*) bernilai ‘1’. Selanjutnya jika diinginkan sinyal dari perangkat keras di luar
chip MCS51 bisa ikut mengendalikan Timer 1, instruksi pengatur Timer 1 akan
menjadi :
MOV TMOD,#11010000b
Dalam hal ini bit 7 (bit GATE) bernilai ‘1’. Setelah mengatur konfigurasi
Timer 0 seperti di atas, pencacah biner belum mulai mencacah sebelum diperintah
dengan instruksi
SETB TR1
Perlu diingatkan jika bit GATE = ‘1’, selama kaki INT1 bernilai ‘0’
pencacah biner belum akan mencacah. Untuk menghentikan proses pencacahan,
dipakai instruksi
CLR TR1
Di atas hanya dibahas Timer 1 saja, tata canya untuk Timer 0 persis sama.
Yang perlu diperhatikan adalah register TMOD dipakai untuk mengatur Timer 0
dan juga Timer 1, sedangkan TMOD tidak bisa dialamati secara bit (non bit
addressable) sehingga jika kedua Timer dipakai, pengisian bit-bit dalam register
TMOD harus dipikirkan sekaligus untuk Timer 0 dan Timer 1.
Bit TR1 dan TR0 yang dipakai untuk mengendalikan proses pencacahan,
terletak di dalam register TCON (memori-data internal nomor 88H) yang bisa
dialamati secara bit (bit addressable). Sehingga TR0 dan TR1 bisa diatur secara
terpisah (dengan perintah SETB atau CLR), tidak seperti mengatur TMOD yang
harus dilakukan secara bersamaan. Demikian pula bit penampung limpahan
pencacah biner TF0 dan TF1, juga terletak dalam register TCON yang masing-
masing bisa di-monitor sendiri.
Sebagimana ditunjukkan pada gambar 10.8 mikrokontroller dapat beraksi
sebagai timer atau counter, sesuai dengan kebutuhan. Perhatikan pada saklar
sebelah kiri dan kanan pada diagram blok tersebut. Mikrokontroller akan
berfungsi sebagai timer ketika saklar diposisikan ke atas dan sebaliknya akan
berfungsi sebagai counter bila saklar diposisikan ke bawah, dengan mengontrol
bit C/T pada register TMOD. Posisi saklar sebelah kanan, bergantung pada bit
GATE (register TMOD), TR1 ( register TCON.6) dan kaki INT1.
LANGKAH KERJA
1. Hubungkan modul Microcontroller Trainer dengan power supply +5V
2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler
program
4. Ketik program
5. Simpanlah program yang telah diketik dan beri nama : namafile.asm
6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan
kompilasi program dari *.asm ke *.hex.
SMK N 1 Cimahi 76
Modul Mikrokontroler Teknik Otomasi Industri
PERCOBAAN-PERCOBAAN
Percobaan 10.1. Mencacah pulsa clock dengan aplikasi
Mode 0 sebagai
counter 13 bit dengan output LED pada TIMER 0
Pada percobaan ini, pulsa diambil melalui clock generator yang
dibangkitkan oleh IC 555, hasil cacahan biner pada register counter Timer 0
akan ditampilkan pada LED.
Pada percobaan ini hubungkan 1 buah kabel antara P3.4 dengan output
clock IC 555.
Diagram alir percobaan adalah sebagai berikut:
org 0h
Start: Mov TMOD,#00000100b ;Timer 0 mode 0 counter 13 bit sebagai
counter
Setb TR0 ; TR1 = 0, start counting
Get: Mov A, TL0 ; A = TL0
CPL A ; A = NOT A
Mov P0, A ; P0 = A, display ke LED
Sjmp Get ; Looping Forever
End
SMK N 1 Cimahi 77
Modul Mikrokontroler Teknik Otomasi Industri
:
20
SMK N 1 Cimahi 78
Modul Mikrokontroler Teknik Otomasi Industri
clr P3.6
clr P3.7
mov A, puluhan
mov DPTR,#Data7segmen
movc A,@A+DPTR
mov P0,A
call delay
;
clr P3.5
setb P3.6
clr P3.7
mov A, satuan
mov DPTR,#Data7segmen
movc A,@A+DPTR
mov P0,A
call delay
ret
;
delay: mov R0,#0
delay1:mov R2,#0fh
djnz R2,$
djnz R0,delay1
ret
;
Data7segmen:
db 11000000b,11111001b,10100100b,10110000b,10011001b
db 10010010b,10000010b,11111000b,10000000b,10010000b
;
end
SMK N 1 Cimahi 79
Modul Mikrokontroler Teknik Otomasi Industri
org 0h
mov p3,#0ffh
mov tmod,#00000101b
mov th0,#11111111b
mov tl0,#11111100b ; clk-1=>11111101 clk-2=>11111110 clk-3=>11111111
; clk-4=>overflow
setb tr0
jnb tf0,$
clr tr0
clr tf0
mov p0,#00h
call tunda
mov p0,#0ffh
jmp 0h
tunda:mov r0,#5
tunda1:mov r1,#255
tunda2:mov r2,#255
djnz r2,$
djnz r1,tunda2
djnz r0,tunda1
ret
end
Percobaan 10.4. Aplikasi Timer 0 Mode 1 sebagai timer 16 bit untuk waktu
tundaan dengan output LED pada P0
Pada percobaan ini, clock akan dibangkitkan dengan menggunakan fungsi
timer 16 bit, dengan periode 1 detik, Ton = 0,5 detik dan Toff = 0,5 detik, dengan
tampilan LED.
Pada mode ini, dengan kristal 12MHz maka timer akan overflow setiap
65.536 udetik. Pada percobaan ini, untuk membangkitkan interupsi setiap 1000
udetik maka data yang harus diisikan pada register TL1 dan TH1 adalah sebagai
berikut:
65536 - 10000 = 55536 d or D8F0h
Maka interupsi TF1 akan segera dibangkitkan setiap 1000 x 1 udetik =
0,01 detik. Pada pemrograman ini, RO diimplementasikan sebagai counter
software, Register R0 akan increment setiap Timer 1 overflow. Jika register R7
telah mendeteksi nilai 50 maka port P0.0 ( LED D0 ) akan nyala selama = 0,01 x
50 detik = 0,5 detik.
Lepas kabel yang menghubungkan antara P3.5 dengan output clock IC
555. Ketik rogram sebagai berikut:
Org 0h
Start: Setb P0.0 ;P0.0 = 1
call delay ;call delay time
Clr P0.0 ;P0.0 = 0
call delay ;call delay time
Sjmp Start ;Looping Forever
SMK N 1 Cimahi 80
Modul Mikrokontroler Teknik Otomasi Industri
Latihan
1. Buatlah sirine yang dapat menghasilkan frekuensi 1kHz dan 10kHz
2. Buatlah up counter pada seven segment display, yang akan naik setiap 2 detik
3. Buatlah aplikasi up counter pada display seven segment, dimana kenaikan
datanya setelah push button yang terhubung dengan T1 (P0.5) ditekan
sebanyak 5 kali.
SMK N 1 Cimahi 81
Modul Mikrokontroler Teknik Otomasi Industri
MODUL PEMBELAJARAN XI
PORT SERIAL
TUJUAN
1. Siswa memahami rangkaian interface port serial
URAIAN MATERI
Terdapat dua cara dalam transfer data. Pertama, data dikirimkan secara
serempak sejumlah delapan bit pada delapan saluran berbeda (satu bit menempati
satu saluran). Cara ini dinamakan transfer data secara parallel. Kedua, data
dikirimkan secara berurutan perbit kedalam satu saluran (satu saluran digunakan
untuk menyalurkan bit pertama sampai bit terakhir). Cara ini dinamakan transfer
data secara serial. Jika dua device saling mengirim dan/atau menerima data, maka
akan terjadi komunikasi data. Sehingga dalam aspek komunikasi data terdapat dua
macam jenis komunikasi data, yaitu komunikasi data parallel dan komunikasi data
serial.
Setiap jenis komunikasi terdapat kelebihan dan kekurangan masing-
masing, diantaranya:
Aspek Komunikasi parallel Komunikasi Serial
Kecepatan transfer Dikirim serempak, lebih Dikirim satu persatu, lebih
data cepat lambat
Minimal 8+1, terlalu Minimal 2+1, sedikit, hemat
Jumlah saluran
banyak, boros
Pendek, maksimal +/- 5 Panjang, maksimal +/- 15
Panjang saluran
meter meter
TTL, RS232
Level bit “0”=0V “0”=antara +3V - +15V,
“1”=5V “1”=antara -3V – 15V
SMK N 1 Cimahi 82
Modul Mikrokontroler Teknik Otomasi Industri
melakukan komunikasi secara serial dengan level RS2322 antar peralatan atau
dengan komputer. MAX232 merupakan IC yang difungsikan untuk merubah
format TTL ke RS232 atau sebaliknya.
Dikenal 2 macam cara transmisi data secara seri. Kedua cara tersebut
dibedakan oleh sinyal denyut (clock) yang dipakai untuk men-‘dorong’ data seri,
jika clock dikirim bersama dengan data seri, cara tersebut dikatakan sebagai
transmisi data seri secara sinkron. Sedangkan dalam transmisi data seri secara
asinkron, clock tidak dikirim bersama data seri, rangkaian penerima data harus
membangkitkan sendiri clock pendorong data seri. Port seri MCS51 bisa dipakai
dalam 4 mode kerja yang berbeda. Dari 4 mode tersebut, 1 mode diantaranya
bekerja secara sinkron dan 3 lainnya bekerja secara asinkron. Secara ringkas ke-
empat mode kerja tersebut bisa dibedakan sebagai berikut:
SMK N 1 Cimahi 83
Modul Mikrokontroler Teknik Otomasi Industri
Mode 0
Mode ini bekerja secara sinkron, data seri dikirim dan diterima melalui kaki P3.0
(RxD), dan kaki P3.1 (TxD) dipakai untuk menyalurkan clock pendorong data seri
yang dibangkitkan MCS51. Data dikirim/diterima 8 bit sekaligus, dimulai dari bit
yang bobotnya paling kecil (bit 0) dan diakhiri dengan bit yang bobotnya paling
besar (bit 7). Kecepatan pengiriman data (baud rate) adalah 1/12 frekuensi osilator
kristal.
Mode 1
Mode ini dan mode-mode berikutnya bekerja secara asinkron, data dikirim
melalui kaki P3.1 (TxD) dan diterima melalui kaki P3.0 (RxD). Pada Mode 1 data
dikirim/diterima 10 bit sekali gus, diawali dengan 1 bit start, disusul dengan 8 bit
data yang dimulai dari bit yang bobotnya paling kecil (bit 0), diakhiri dengan 1 bit
stop. Pada MCS51 yang berfungsi sebagai penerima bit stop ditampung pada RB8
dalam register SCON. Kecepatan pengiriman data (baud rate) bisa diatur sesuai
dengan keperluan. Mode inilah yang umum dikenal sebagai UART (Universal
Asynchronous Receiver/Transmitter).
Mode 2
Data dikirim/diterima 11 bit sekali gus, diawali dengan 1 bit start, disusul 8 bit
data yang dimulai dari bit yang bobotnya paling kecil (bit 0), kemudian bit ke 9
yang bisa diatur lebih lanjut, diakhiri dengan 1 bit stop. Pada MCS51 yang
berfungsi sebagai pengirim, bit 9 tersebut berasal dari bit TB8 dalam register
SCON. Pada MCS52 yang berfungsi sebagai penerima, bit 9 ditampung pada bit
RB8 dalam register SCON, sedangkan bit stop diabaikan tidak ditampung.
Kecepatan pengiriman data (baud rate) bisa dipilih antara 1/32 atau 1/64 frekuensi
osilator kristal.
Mode 3
Mode ini sama dengan Mode 2, hanya saja kecepatan pengiriman data (baud rate)
bisa diatur sesuai dengan keperluan, seperti halnya Mode 1. Pada mode asinkron
(Mode 1, Mode 2 dan Mode 3), port seri MCS51 bekerja secara full duplex,
artinya pada saat yang sama port seri ini bisa mengirim data sekali gus menerima
data.
Register SBUF merupakan register penghubung port seri. Dalam ke-empat mode
di atas, semua instruksi yang mengakibatkan perubahan isi SBUF akan
mengakibatkan port seri mengirimkan data keluar dari MCS51. Agar port seri bisa
menerima data, bit REN dalam register SCON harus bernilai ‘1’. Pada mode 0,
proses penerimaan data dimulai dengan instruksi CLR RI, sedangkan dalam mode
lainnya proses penerimaan data diawali oleh bit start yang bernilai ‘0’. Data yang
diterima port seri dari luar MCS51, diambil dengan instruksi MOV A,SBUF.
Mengambil data dari SBUF dan menyimpan data ke SBUF sesungguhnya bekerja
pada dua register yang berlainan, meskipun nama registernya sama-sama SBUF.
SMK N 1 Cimahi 84
Modul Mikrokontroler Teknik Otomasi Industri
SBUF merupakan SFR (Special Function Register) yang terletak pada memori-
data internal dengan nomor 99H. SBUF mempunyai kegunaan ganda, data yang
disimpan pada SBUF akan dikirim keluar MCS51 lewat port seri, sedangkan data
dari luar MCS51 yang diterima port seri diambil dari SBUF pula. Jadi meskipun
hanya menempati satu nomor memori-data internal (nomor 99H), sesungguhnya
SBUF terdiri dari 2 register yang berbeda.
SCON merupakan SFR (Special Function Register) yang terletak pada memori-
data internal dengan nomor 98H, merupakan register utama untuk mengatur kerja
port seri MCS51. Setelah reset semua bit dalam SCON bernilai ‘0’.
1. Bit SM0 dan bit SM1 (bit 7 dan bit 6 pada register SMOD) dipakai untuk
menentukan mode kerja port seri. Setelah reset kedua bit ini bernilai ‘0’
2. Bit REN (bit 4) dipakai untuk mengaktifkan kemampuan port seri menerima
data. Pada mode 0 kaki RxD (kaki P3.0) dipakai untuk mengirim data seri
(REN=’0’) dan juga untuk menerima data seri (REN=’1’). Sifat ini terbawa
pula pada saat port seri bekerja pada mode 1, 2 dan 3, meskipun pada mode-
mode tersebut kaki RxD hanya dipakai untuk mengirim data, agar kaki RxD
bisa dipakai untuk menerima data terlebih dulu harus dibuat REN=’1’. Setelah
reset bit REN bernilai ‘0’.
3. Pada mode kerja 2 dan mode kerja 3, port seri bekerja dengan 9 bit data,
SBUF yang kapasitasnya 8 bit tidak cukup untuk keperluan ini. Bit ke-
sembilan yang akan dikirim terlebih dulu diletakkan di TB8 (bit 3), sedangkan
bit RB8 (bit 2) merupakan bit yang dipakai untuk menampung bit ke-sembilan
yang diterima port seri.
4. Pada mode kerja 1, RB8 dipakai untuk menampung bit stop yang diterima,
dengan demikian apa bila RB8 bernilai ‘1’ maka data diterima dengan benar,
sebaliknya apa bila RB8=’0’ berarti terjadi kesalahan kerangka (framing
error). Kalau bit SM2 (bit 5) bernilai ‘1’, jika terjadi kesalahan kerangka, RI
tidak akan menjadi ‘1’ meskipun SBUF sudah berisi data dari port seri. Bit ke
9 ini bisa dipakai sebagai bit pariti, hanya saja bit pariti yang dikirim harus
ditentukan sendiri dengan program dan diletakkan pada TB8, dan bit pariti
yang diterima pada RB8 dipakai untuk menentukan integritas data secara
SMK N 1 Cimahi 85
Modul Mikrokontroler Teknik Otomasi Industri
program pula. Tidak seperti dalam UART standard, semuanya itu dikerjakan
oleh perangkat keras dalam IC UART.
5. Bit TI (bit 1) merupakan petanda yang setara dengan petanda TDRE
(Transmitter Data Register Empty) yang umum dijumpai pada UART
standard. Setelah port seri selesai mengirim data yang disimpan ke-dalam
SBUF, bit TI akan bernilai ‘1’ dengan sendirinya, bit ini harus di-nol-kan
dengan program agar bisa dipakai untuk memantau keadaan SBUF dalam
pengiriman data berikutnya. Sub-rutin SerialOut berikut dipakai untuk
mengirim data seri, bisa dipakai untuk semua mode port seri. Baris 02
menunggu TI menjadi ‘1’, dimaksud untuk memastikan pengiriman data
sebelumnya sudah selesai. Data yang akan dikirim sebelumnya sudah
disimpan di A, pada baris 03 data tersebut dikirim melalui port seri dengan
cara meletakannya di SBUF. Agar TI bisa dipakai untuk memantau keadaan
SBUF pada pengiriman data berikutnya, pada baris 04 TI di-nol-kan.
SerialOut:
JNB TI,$ ; tunggu data sebelumnya selesai dikirim
MOV SBUF,A ; kirim data baru
CLR TI ; petanda ada pengiriman baru
RET
6. Bit RI (bit 0) merupakan petanda yang setara dengan petanda RDRF (Receiver
Data Register Full) yang umum dijumpai pada UART standard. Setelah SBUF
menerima data dari port seri, bit RI akan bernilai ‘1’ dengan sendirinya, bit ini
harus di-nol-kan dengan program agar bisa dipakai untuk memantau keadaan
SBUF dalam penerimaan data berikutnya. Sub-rutin SerialIn berikut dipakai
untuk menerima data seri, bisa dipakai untuk semua mode port seri. Baris 02
menunggu RI menjadi ‘1’, dimaksud untuk memastikan sudah ada data baru
yang diterima pada SBUF. Pada baris 03 data pada SBUF diambil ke A. Agar
RI bisa dipakai untuk memantau keadaan SBUF pada pengiriman data
berikutnya, pada baris 04 RI di-nol-kan.
SerialIn:
JNB RI,$ ; tunggu SBUF berisi data baru
MOV A,SBUF ; ambil data
CLR RI ; pentanda data sudah diambil
RET
SMK N 1 Cimahi 86
Modul Mikrokontroler Teknik Otomasi Industri
Baud Rate
Baud rate pada mode 0 adalah tertentu: pada mode 0, Baud Rate = 1/12 x
Frekuensi Osilator. Baud rate pada mode 2 bergantung pada nilai bit SMOD pada
SFR PCON. Jika SMOD = 0, baud rate adalah 1/64 frekuensi osilator. Jika
SMOD=1, baud rate adalah 1/32 frekuensi osilator. Penentuan baud rate mode 2
adalah sebagai berikut:
2SMOD
BaudRate= x (oscilator Frequency)
64
Sedangkan baud rate pada mode 1 dan 3 ditentukan oleh nilai laju
overflow dari Timer 1.
Menggunakan Timer 1 untuk membangkitkan Baud Rate. Ketika timer 1
digunakan untuk membangkitkan clock baud rate, baud rate pada mode 1 dan 3
adalah ditentukan oleh laju overflow timer 1 dan nilai dari SMOD. Penentuan
baud rate untuk mode 1 dan 3 adalah sebagai berikut:
Interupsi timer 1 harus disable pada aplikasi ini. Pada kebanyakan aplikasi, timer
ini dioperasikan sebagai timer, dengan mode auto reload mode 2. Pada kasus ini
baud rate diberikan dengan rumus sebagai berikut:
Contoh:
jika diinginkan baudrate 19200 bps, berapa nilai isi ulang yang harus diisikan
kedalam
TH1?
Jawaban:
TH1=256-((1/192)x((11.0592X1000000)/19200)))
TH1=256-3
TH1=253=0fdh
Dalam hal ini SMOD berlogika 1.
Berikut beberapa baudrate yang sering digunakan:
SMK N 1 Cimahi 87
Modul Mikrokontroler Teknik Otomasi Industri
LANGKAH KERJA
1. Hubungkan modul Microcontroller Trainer dengan power supply +5V
2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler
program
4. Ketik program
5. Simpanlah program yang telah diketik dan beri nama : namafile.asm
6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan
kompilasi program dari *.asm ke *.hex.
7. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP
Software
8. Lakukan pengamatan hasil running program dan catat hasilnya.
PERCOBAAN-PERCOBAAN
Percobaan 11.1 Menghidupkan LED melalui komunikasi
serial RS232 dengan Program Hyperterminal
Pengujian sistem komunikasi antara mikrokontroller dengan
port serial computer dapat dilakukan dengan memanfaatkan
program hyperterminal pada sistem yang berbasis under
windows ( 98, ME dan XP ). Kelebihan penggunakan program ini,
tidak diperlukan suatu bahasa pemrograman dan kelemahannya,
terbatas hanya pada proses pengujian. Pada percobaan ini LED
dihidupkan dan dimatikan melalui pengiriman karakter (0 – 9 )
pada keyboard PC.
SMK N 1 Cimahi 88
Modul Mikrokontroler Teknik Otomasi Industri
(a) (b)
SMK N 1 Cimahi 89
Modul Mikrokontroler Teknik Otomasi Industri
(a) (b)
Gambar 11.6. (a) Diagram alir rutin utama (b) subrutine ambil
karakter pada percobaan 10.1
SMK N 1 Cimahi 90
Modul Mikrokontroler Teknik Otomasi Industri
org 0h
nop
call initserial
gets:call inchar
mov P0,a
sjmp gets
;
initserial:
mov scon,#50h ; Konfigurasi komunikasi serial mode 1
mov tmod,#20h ; Baud rate 2400 BPS
mov th1,#0F3h
setb tr1
ret
;
inchar:
detect: jnb ri,detect ; Deteksi bit RI apakah data sudah
diterima atau belum
clr ri
mov a,sbuf
subb a,#30h ; merubah kode ascii menjadi integer
cpl a ; komplemen A
ret
;
End
Soal Tantangan:
1. Rencanakan program assembly untuk pengambilan data pada
port serial dan lakukan pendeteksian apakah tombol yang
ditekan pada keyboard PC adalah ‘0’ dan ‘1’, bila tombol yang
ditekan adalah ‘0’ maka LED yang terhubung pada P0 akan
berputar ke kanan dan sebaliknya bila tombol yang ditekan
adalah ‘1’ maka LED yang terhubung ke P0 akan berputara ke
kiri.
2. Rencakan program assembly untuk mengambil data pada port
serial dan lakukan pendeteksian apakah tombol yang ditekan
pada keyboard PC adalah 0, 1,2 s/d 9. Dan outputkan data
tersebut pada 7 segmen, sesuai dengan angka yang ditekan.
3. Lakukan perhitungan pada baudrate port serial dengan
kecepatan 9600 BPS, dan terapkan pada soal tantangan 2.
SMK N 1 Cimahi 91
Modul Mikrokontroler Teknik Otomasi Industri
org 0h
nop
call initserial
mov A,#’1’ ; apa yang akan terjadi bila tanda petik
dihilangkan
call sendout
getout: sjmp getout
;
initserial:
mov scon,#42h ; Konfigurasi komunikasi serial mode 1
mov tmod,#20h ; Baud rate 2400 BPS
mov th1,#0F3H
setb tr1
ret
;
Sendout:
detecto: jnb ti,detecto;
clr ti ;
mov sbuf,a ;
ret
Program kedua:
org 0h
nop
call initserial
mov dptr,#MyCharacter
gets: clr A
Movc A,@A+dptr
cjne A,#0,Next
sjmp getout
Next: call sendout
inc dptr
sjmp gets
getout: sjmp getout
;
initserial:
mov scon,#42h ; Konfigurasi komunikasi serial mode 1
mov tmod,#20h
mov th1,#0F3H; Baud rate 2400 BPS
setb tr1
ret
;
Sendout:
detecto: jnb ti,detecto;
SMK N 1 Cimahi 92
Modul Mikrokontroler Teknik Otomasi Industri
clr ti ;
mov sbuf,a ;
ret
MyCharacter:
DB ' Selamat Datang Di Laboratorium
Mikrokontroller',13,10,0
End
Latihan
1. Rencanakan program untuk cetak angka 1 sebanyak 1x, angka 2
sebanyak 2x, dan
angka 3 sebanyak 3x pada program hyperterminal, putunjuk pakai
DJNZ
TUJUAN
1. Siswa memahami sistem interupsi pada mikrokontroller
SMK N 1 Cimahi 93
Modul Mikrokontroler Teknik Otomasi Industri
URAIAN MATERI
8051 mempunyai 5 buah sumber interupsi. Dua buah interupsi eksternal,
dua buah interupsi timer dan sebuah interupsi port serial. Meskipun memerlukan
pengertian yang lebih mendalam, pengetahuan mengenai interupsi sangat
membantu mengatasi masalah pemrograman mikroprosesor/mikrokontroler dalam
hal menangani banyak peralatan input/output. Pengetahuan mengenai interupsi
tidak cukup hanya dibahas secara teori saja, diperlukan contoh program yang
konkrit untuk memahami. Saat kaki RESET pada IC
mikroprosesor/mikrokontroler menerima sinyal reset (pada MCS51 sinyal tersebut
berupa sinyal ‘1’ sesaat, pada prosesor lain umumnya merupakan sinyal ‘0’
sesaat), Program Counter diisi dengan sebuah nilai. Nilai tersebut dinamakan
sebagai vektor reset (reset vector), merupakan nomor awal memori-program yang
menampung program yang harus dijalankan. Pembahasan di atas memberi
gambaran bahwa proses reset merupakan peristiwa perangkat keras (sinyal reset
diumpankan ke kaki Reset) yang dipakai untuk mengatur kerja dari perangkat
lunak, yakni menentukan aliran program prosesor (mengisi Program Counter
dengan vektor reset). Program yang dijalankan dengan cara reset, merupakan
program utama bagi prosesor.
Peristiwa perangkat keras yang dipakai untuk mengatur kerja dari
perangkat lunak, tidak hanya terjadi pada proses reset, tapi terjadi pula dalam
proses interupsi. Dalam proses interupsi, terjadinya sesuatu pada perangkat keras
tertentu dicatat dalam flip-flop khusus, flip-flop tersebut sering disebut sebagai
‘petanda’ (flag), catatan dalam petanda tersebut diatur sedemikian rupa sehingga
bisa merupakan sinyal permintaan interupsi pada prosesor. Jika permintaan
interupsi ini dilayani prosesor, Program Counter akan diisi dengan sebuah nilai.
Nilai tersebut dinamakan sebagai vektor interupsi (interrupt vector), yang
merupakan nomor awal memori-program yang menampung program yang dipakai
untuk melayani permintaan interupsi tersebut. Program yang dijalankan dengan
cara interupsi, dinamakan sebagai program layanan interupsi (ISR - Interrupt
Service Routine). Saat prosesor menjalankan ISR, pekerjaan yang sedang
dikerjakan pada program utama sementara ditinggalkan, selesai menjalankan ISR
prosesor kembali menjalankan program utama, seperti yang digambarkan dalam
Gambar 13.1.
SMK N 1 Cimahi 94
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 95
Modul Mikrokontroler Teknik Otomasi Industri
2. Kalau bit IT0 (atau IT1) =’1’ maka bit IE0 (atau IE1) dalam TCON menjadi ‘1’
saat terjadi transisi sinyal ‘1’ menjadi ‘0’ pada kaki INT0. Menjelang prosesor
menjalankan ISR dari Interupsi Eksternal, bit IE0 (atau bit IE1) dikembalikan
menjadi ‘0’, menandakan permintaan Interupsi Eksternal sudah dilayani. Namun
jika permintaan Interupsi Ekternal terjadi karena level tegangan ‘0’ pada kaki IT0
(atau IT1), dan level tegangan pada kaki tersebut saat itu masih =’0’ maka bit IE0
(atau bit IE1) akan segera menjadi ‘1’ lagi.
Bit TF0 (atau bit TF1) dalam TCON merupakan petanda (flag) yang
menandakan adanya permintaan Interupsi Timer, bit TF0 (atau bit TF1) menjadi
‘1’ pada saat terjadi limpahan pada pencacah biner Timer 0 (atau Timer 1).
Menjelang prosesor menjalankan ISR dari Interupsi Timer, bit TF0 (atau bit TF1)
dikembalikan menjadi ‘0’, menandakan permintaan Interupsi Timer sudah
dilayani.
Interupsi port seri terjadi karena dua hal, yang pertama terjadi setelah port
seri selesai mengirim data 1 byte, permintaan interupsi semacam ini ditandai
dengan petanda (flag) TI=’1’. Yang kedua terjadi saat port seri telah menerima
data 1 byte secara lengkap, permintaan interupsi semacam ini ditandai dengan
petanda (flag) RI=’1’. Petanda di atas tidak dikembalikan menjadi ‘0’ menjelang
prosesor menjalankan ISR dari Interupsi port seri, karena petanda tersebut masih
diperlukan ISR untuk menentukan sumber interupsi berasal dari TI atau RI. Agar
port seri bisa dipakai kembali setelah mengirim atau menerima data, petanda-
petanda tadi harus di-nol-kan lewat program.
Petanda permintaan interupsi (IE0, TF0, IE1, TF1, RI dan TI) semuanya
bisa di-nol-kan atau di-satu-kan lewat instruksi, pengaruhnya sama persis kalau
perubahan itu dilakukan oleh perangkat keras. Artinya permintaan interupsi bisa
diajukan lewat pemrograman, misalnya permintaan interupsi eksternal IT0 bisa
diajukan dengan instruksi SETB IE0.
Mengaktifkan Interupsi
Semua sumber permintaan interupsi yang di bahas di atas, masing-masing
bisa di-aktipkan atau di-nonaktip-kan secara tersendiri lewat bit-bit yang ada
dalam register IE (Interrupt Enable Register). Bit EX0 dan EX1 untuk mengatur
interupsi eksternal INT0 dan INT1, bit ET0 dan ET1 untuk mengatur interupsi
timer 0 dan timer 1, bit ES untuk mengatur interupsi port seri, seperti yang
digambarkan dalam Gambar 2. Di samping itu ada pula bit EA yang bisa dipakai
untuk mengatur semua sumber interupsi sekaligus. Setelah reset, semua bit dalam
register IE bernilai ‘0’, artinya sistem interupsi dalam keadaan non-aktip. Untuk
mengaktipkan salah satu sistem interupsi, bit pengatur interupsi bersangkutan
diaktipkan dan juga EA yang mengatur semua sumber interupsi. Misalnya
instruksi yang dipakai untuk mengaktipkan interupsi ekternal INT0 adalah SETB
EX0 disusul dengan SETB EA.
MSB LSB
EA X X ES ET1 EX1 ET0 EX0
SMK N 1 Cimahi 96
Modul Mikrokontroler Teknik Otomasi Industri
Vektor Interupsi
Saat MCS51 menanggapi permintaan interupsi, Program Counter diisi
dengan sebuah nilai yang dinamakan sebagai vektor interupsi, yang merupakan
nomor awal dari memori-program yang menampung ISR untuk melayani
permintaan interupsi tersebut. Vektor interupsi itu dipakai untuk melaksanakan
inststuksi LCALL yang diaktipkan secara perangkat keras. Vektor interupsi untuk
interupsi eksternal INT0 adalah 0003H, untuk interupsi timer 0 adalah 000BH,
untuk interupsi ekternal INT1 adalah 0013H, untuk interupsi timer 1 adalah
001BH dan untuk interupsi port seri adalah 0023H. Jarak vektor interupsi satu
dengan lainnya sebesar 8, atau hanya tersedia 8 byte untuk setiap ISR. Jika sebuah
ISR memang hanya pendek saja, tidak lebih dari 8 byte, maka ISR tersebut bisa
langsung ditulis pada memori-program yang disediakan untuknya. ISR yang lebih
panjang dari 8 byte ditulis ditempat lain, tapi pada memori-program yang ditunjuk
oleh vektor interupsi diisikan instruksi JUMP ke arah ISR bersangkutan.
Tingkatan Perioritas
Masing-masing sumber interupsi bisa ditempatkan pada dua tingkatan
perioritas yang berbeda. Pengaturan tingkatan perioritas isi dilakukan dengan bit-
bit yang ada dalam register IP (Interrupt Priority). Bit PX0 dan PX1 untuk
mengatur tingkatan perioritas interupsi eksternal INT0 dan INT1, bit PT0 dan PT1
untuk mengatur interupsi timer 0 dan timer 1, bit PS untuk mengatur interupsi port
seri, seperti yang digambarkan dalam Gambar 13.2. Setelah reset, semua bit dalam
SMK N 1 Cimahi 97
Modul Mikrokontroler Teknik Otomasi Industri
SMK N 1 Cimahi 98
Modul Mikrokontroler Teknik Otomasi Industri
PT0=1
programs it to the higher priority level.
PX0 Defines the External Interrupt 0 priority level. PX0=1
IP.0
programs it to the higher priority level.
Org 0000h
Ljmp Start
Org 000bh
Ljmp Timer0Interupt
Start: ; Instruksi Rutinitas
; Instruksi Rutinitas
; Instruksi Rutinitas
Sjmp Start; { Looping Forever }
;
Timer0Interupt:
:
:
Reti
End
PERCOBAN-PERCOBAAN
Percobaan 13.1. Mengaktifkan interupsi eksternal INT0
Pada percobaan ini akan dibuat sebuah system interupsi
eksternal yang menggunakan pin INT0, untuk menerima sinyal
interupsi dari luar, berupa pulsa. Apabila system tidak mendapat
interupsi, maka delapan LED akan padam, sebaliknya apabila
ada interupsi yang berupa pulsa dari monostabil, maka delapan
LED akan berkedip, terus menerus, sampai tombol reset ditekan.
Untuk melakukan percobaan ini lakukan beberapa langkah
sebagai berikut:
1. Hubungkan kabel dari P3.2. ke output rangkaian monostabil
2. Tekan tombol SW pada pushbutton untuk memberikan trigger
pada monostabil, apabila monostabil mendapat trigger maka
monostabil akan mengeluarkan pulsa satu kali.
Org 0h
Sjmp start
Org 03h
SMK N 1 Cimahi 99
Modul Mikrokontroler Teknik Otomasi Industri
Sjmp AdaInterupsiExt0
Start: call InitInterupsiExt0
Forever: mov P0,#11111111b
Sjmp Forever
InitInterupsiExt0:
Setb IT0 ; interupsi transisi hi-lo
Setb EX0 ; aktifkan interupsi eksternal
Setb EA
Ret
AdaInterupsiExt0:
mov P0,#11111111b
call delay
mov P0,#00000000b
call delay
reti
delay: mov R1,#2
del1: mov R2,#255
del2: djnz R2,del2
djnz R1,del1
ret
end
;
Interrupt_Timer0:
mov tl0,#0b0h
mov th0,#03ch
djnz Counter20, EndInterrupt
mov Counter20,#20
call DoClock
EndInterrupt:
reti
;
DoClock:
inc detik
mov A,detik
cjne A,#60,Update
mov detik,#0
satumenit:
inc menit
mov A,#60
cjne A,menit,Update
mov menit,#0
Update:mov A,detik
mov B,#10
DIV AB
mov detikpuluhan,A
mov detiksatuan,B
;
mov a,menit
mov b,#10
div ab
mov menitpuluhan,A
mov menitsatuan,B
ret
;
ClockDisplay:
Mov DPTR,#Decoder7Segmen
mov A,menitpuluhan
Movc A,@A+DPTR
mov P0,A
clr P3.5 ;
clr P3.6
clr P3.7
call delay
;
Mov DPTR,#Decoder7Segmen
mov A,menitsatuan
Movc A,@A+DPTR
mov P0,A
setb P3.5 ;
clr P3.6
clr P3.7
call delay
;
Mov DPTR,#Decoder7Segmen
mov A,detikpuluhan
Movc A,@A+DPTR
mov P0,A
clr P3.5 ;
setb P3.6
clr P3.7
call delay
;
Mov DPTR,#Decoder7Segmen
mov A,detiksatuan
Movc A,@A+DPTR
mov P0,A
setb P3.5 ;
Setb P3.6
clr P3.7
call delay
ret
;
InitTimer:
mov TMOD,#00000001b
mov tl0,#0b0h
mov th0,#03ch
setb ET0 ;Enable Timer 0 Interrupt
setb EA ;Master Interrupt Enable
setb TR0 ;Clock start running
ret
;
;===============================
;subroutine delay time
;===============================
delay: mov R1,#2
del1: mov R2,#255
del2: djnz R2,del2
djnz R1,del1
ret
;========================================
; LO O K U PTAB LE
; Decode to Seven Segmen -> g f e d c b a
;========================================
Decoder7Segmen:
DB 11000000b,11111001b,10100100b,10110000b,10011001b
DB 10010010b,10000010b,11111000b,10000000b,10010000b
;
End