SlideShare a Scribd company logo
Deddy Susilo, S.T. 61546 EE-632 MICROCONTROLLER
Silabus  (3 sks) - 16 minggu 1. Sekilas ttg Mikroprosesor, Mikrokomputer,Mikrokontroler 2. Arsitektur Mikrokontoler MCS-51  3. Pemrograman Bahasa Assembly untuk MCS-51 4. Timer dan Counter 5. Komunikasi Serial  6. Interupsi 7. Ekspansi Sistem MCS-51 dengan DAC, ADC, SIPO, PISO,  Mux Analog, Latches, PPI 8. Interfacing dengan LCD karakter dan Grafik, driver motor
Silabus  (3 sks) - 16 minggu 9. Sensor-Sensor + IC Special Func 10. Protokol I2C (I square C) 11. Protokol I2S (I square S) 12. Protokol SPI (Serial Paralel Interface) 13. Penerapan Kontrol PID 14. Penerapan Kontrol Fuzzy 15. Arsitektur uC AVR + AVR STUDIO 16. Pemrograman Dasar AVR 17. Menggunakan Code Vision AVR
silabus  (3 sks) Bobot Penilaian : TTS : 30% TAS : 40% LAB : 30%  - 12 x Praktikum ( @ 1,5% ) - 1 x Tes Praktek  (Pengali Praktikum) - Proyek  12 % Kuliah : Selasa 11-13 (F-212) Rabu 14-16  (E-138)
LECTURE 1 ARSITEKTUR MIKROKONTROLER MCS51 (PART 1)
MIKROPROSESOR ? MIKROKOMPUTER ? MIKROKONTROLER ?
MIKROPROSESOR ? sebuah IC ( Integrated Circuit ) yang digunakan sebagai otak/pengolah utama dalam sebuah sistem komputer
MIKROPROSESOR ? 1971 oleh Intel Corp,  yaitu Mikroprosesor Intel 4004 yang mempunyai arsitektur 4 bit
MIKROPROSESOR ? 8080(berarsitektur 8 bit), 8085,  dan kemudian 8086 (berarsitektur 16 bit)
MIKROPROSESOR ? Motorola dengan M6800 dan Zilog dengan Z80 nya
MIKROKOMPUTER ? sebuah mikroprosesor merupakan CPU (unit pengolah pusat) sistem 8
MIKROKOMPUTER ? pada PC, mikroprosesor digunakan sebagai pengolah utama pada semua kerja komputer, yaitu untuk menjalankan perangkat lunak, memecahkan persoalan-persoalan aritmatika, mengendalikan proses  Input/Output ,
MIKROKOMPUTER ?
MIKROKOMPUTER ? mikroprosesor dengan piranti pendukungnya dikatakan membentuk suatu mikrokomputer (mikrokomputer = sistem komputer yang menggunakan sebuah mikroprosesor sebagai CPUnya)
MIKROKONTROLER ? CPU dan peralatan pendukungnya berada pada IC yang sama, serta digunakan untuk penerapan sistem kendali, maka IC tersebut disebut sebagai sebuah mikrokontroler
MIKROPROSESOR DAN MIKROKONTROLER Mikroprosesor dan mikrokontroler mulai banyak digunakan dalam berbagai aplikasi elektronika, antara lain di bidang otomatisasi industri, otomotif, pengukuran, telekomunikasi, penerbangan, dsb.
MIKROPROSESOR DAN MIKROKONTROLER Keuntungan dari penggunaaan mikroprosesor dan mikrokontroler adalah sistem yang diciptakan menjadi sangat fleksibel karena modifikasi dan pengembangan cukup dilakukan pada perangkat lunaknya.
STRUKTUR SISTEM MIKROKOMPUTER Dengan penambahan beberapa piranti pendukung (memori, piranti Input/Output, dsb), sebuah mikroprosesor dapat diubah menjadi sebuah mikrokomputer
BAGIAN BAGIAN MIKROKOMPUTER Mikroprosesor sebagai unit pengolah pusat keseluruhan sistem, yaitu untuk menjalankan perangkat lunak yang disimpan pada memori, mengatur jalur pengiriman data dari/ke piranti-piranti (memori,I/O, dsb), mengolah data-data yang ada pada perangkat lunak, dsb. 16
BAGIAN BAGIAN MIKROKOMPUTER ROM berguna untuk menyimpan perangkat lunak yang akan dijalankan oleh mikroprosesor.
BAGIAN BAGIAN MIKROKOMPUTER RAM berguna sebagai tempat penyimpanan data sementara yang mungkin diperlukan oleh mikroprosesor sewaktu menjalankan perangkat lunak. Misalnya digunakan untuk menyimpan nilai-nilai pada variabel.
BAGIAN BAGIAN MIKROKOMPUTER Piranti I/O (Input/Output) berguna untuk mengkoneksikan sistem dengan dunia luar    untuk mengirimkan dan menerima data dari/ke luar sistem. pada PC, salah satu piranti I/O bertugas menerima masukan data dari keyboard, serta piranti I/O yang lain bertugas mengirimkan data ke printer untuk dicetak, dsb.
BAGIAN BAGIAN MIKROKOMPUTER Clock  (denyut)    menyinkronkan kerja semua piranti dalam sistem. Sumber sinyal dari Clock biasanya didapatkan dari osilator kristal.
KESIMPULAN 1 IC mikroprosesor tak dapat berdiri sendiri, karena kerjanya sangatlah bergantung dari piranti2 pendukung lainnya. Misal tanpa adanya piranti Input/Output akan membuat sistem tak dapat berinteraksi dengan dunia luar. Atau misalnya tanpa adanya RAM, mikroprosesor tidak dapat bekerja dan mengolah data-data pada variabel yang diinstruksikan oleh perangkat lunak.
KESIMPULAN 2 Akibat dari kebergantungannya yang besar pada piranti2 pendukung   mikroprosesor menjadi kurang efisien. Perusahaan2 semikonduktor menciptakan sebuah IC mikroprosesor jenis lain yang didalamnya sudah terdapat piranti-piranti pendukungnya    mikrokontroler. ‘mikrokomputer dalam sebuah chip’ ( single chip microcomputer ).
KESIMPULAN 3 Meski kurang efisien dibanding mikrokontroler, untuk penggunaan tertentu mikroprosesor tetap mempunyai kelebihan2, antara lain lebih cepat dan lebih upgradable (karena semua piranti tambahan diletakkan di luar sehingga bisa diganti).
BEBERAPA JENIS MIKROPROSESOR  DAN MIKROKONTROLER 24
ARSITEKTUR MIKROKONTROLER  KELUARGA MCS-51 Mikrokontroler 8051    Intel mikrokontroler    populer, banyak perusahaan2 semikonduktor lain yang membuat  ‘clone’ -nya. Perusahaan tsb antara lain adalah Atmel, Siemens, AMD, Philips, dsb.  banyak  ‘clone’  dari 8051, maka terbentuklah keluarga besar mikrokontroler yang mempunyai arsitektur dasar yang sama dengan 8051, yang selanjutnya  ‘clone-clone’  tersebut lazim disebut dengan keluarga mikrokontroler MCS-51.
LECTURE 2 ARSITEKTUR MIKROKONTROLER MCS51 (PART 2)
Fasilitas-Fasilitas Mikrokontroler 8051 •  4K bytes ROM  •  128 bytes RAM •  Empat buah I/O (Input/Output) port. Masing-masing I/O port terdiri dari 8bit •  Dua buah timer/counter. Masing-masing adalah 16bit timer. •  Antarmuka ( Interface ) Serial •  Ruang pengalamatan memori eksternal untuk kode (program) sebesar 64Kbytes •  Ruang pengalamatan memori eksternal untuk data sebesar 64K bytes
3 256 bytes RAM 8KB FLASH EPROM 8952 2 128 bytes RAM 4KB FLASH EPROM 8951 3 256 bytes RAM 8KB EPROM 8752 3 256 bytes RAM 8KB EPROM 8032 3 256 bytes RAM 0KB 8052 2 128 bytes RAM 8KB ROM 8751 2 128 bytes RAM 0KB 8031 2 128 bytes RAM 4KB ROM 8051 Jumlah Timer Memori Data Intenal Memori Program (Kode) Internal Tipe
Susunan Pin IC 8051/8031/8751/8951
[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
Port 3 pada pin 10-17 adalah port multifungsi, setiap pin dari port 3 mempunyai fungsi-fungsi tersendiri.
PSEN (Program Store Enable)   pin 29   untuk output sinyal pengontrol pada pengambilan program (kode) jika memakai ROM/EPROM eksternal.  Pin PSEN akan mengeluarkan sinyal low selama pengambilan byte program (kode) dari ROM/EPROM.  Pin PSEN biasa dihubungkan dengan pin OE (Output Enable) pada IC EPROM.  32
[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object]
Contoh 8051/8751/8951 Development Board
Contoh 8951 Development Board Minimum System P0 P1 P2 P3 AT89SXX Vin 1 2 3
1. Ruang alamat memori kode program  (code address space)  maksimal 64KB ditempati EEPROM/ROM internal atau bisa juga ditempati oleh IC EEPROM (misalnya 2864) jika diinginkan kode program disimpan dalam EEPROM eksternal. 2. Ruang alamat memori data internal yang dapat dialamati secara langsung    RAM  (Random Access Memory)  sebanyak 128  byte  dan Special Function Register sebanyak 128  byte.  RAM internal dan hardware register ini terletak di dalam IC 8951. Sebagian ruang alamat pada RAM internal dapat diakses secara bit (bukan secara byte). Pengalamatan Memori dan Register Pada MCS51  Khususnya AT89S51
3. Ruang alamat memori data eksternal sebanyak maksimal 64KB misalnya 6264. Ruang alamat memori kode program dan ruang alamat memori data eksternal sebenarnya memiliki ruang alamat yang sama (overlap). Ruang alamat memori kode program dan ruang alamat memori data eksternal dialamati dari alamat 0000h sampai FFFFh. Sedangkan  memori-data  internal dialamati dari alamat 00h sampai FFh. Alamat 00h sampai 7Fh dipakai untuk mengalamati RAM internal dan alamat 80h sampai FFh dipakai untuk mengalamati Special Function Register. Pengalamatan Memori dan Register Pada MCS51  Khususnya AT89S51
Pengalamatan Memori dan Register Pada MCS51  Khususnya AT89S51
Memori-data nomor 00h sampai 7Fh bisa dipakai sebagai memori penyimpan data biasa, dibagi menjadi 3 bagian:  Alamat memori 00h sampai 18h selain sebagai memori-data biasa, bisa pula dipakai sebagai  Register Serba Guna  ( General Purpose Register ).  Alamat memori 20h sampai 2Fh selain sebagai memori-data biasa, bisa dipakai untuk menyimpan informasi dalam level  bit .  Alamat memori 30h sampai 7Fh (sebanyak 80 byte) merupakan memori-data biasa, bisa dipakai untuk menyimpan data maupun dipakai sebagai Stack. Pengalamatan Memori dan Register Pada MCS51  Khususnya AT89S51
Menempati alamat memori-data 00h sampai 18h (32 byte)    4  Kelompok Register  ( Register Bank ), 8 byte memori dari masing2 Kelompok     Register 0 ,   ..  Register 7  (R0, R1, R2, R3, R4, R5, R6 dan R7). Penulisan program memori2 ini    disebut R0, R1, R2, R3, R4, R5, R6 dan R7, tidak lagi dengan nomor memori Pengertian ini bisa diperjelas dengan contoh 2 instruksi berikut : MOV A,04h  (isi di alamat 04h    Akumulator) MOV A,R4  (isi R4   Akumulator) Penerjemahan ke kode mesin, instruksi pertama dirubah menjadi E5 04 (heksadesimal) dan instruksi kedua menjadi E6 (heksadesimal), jadi instruksi kedua lebih sederhana dari instruksi pertama. Register Serba Guna  ( General Purpose Register )
Khusus  Register 0  dan  Register 1  (R0 dan R1) masih punya mempunyai kemampuan lain  register penampung alamat yang dipakai dalam  pengaksesan memori secara tidak langsung  ( indirect memori addressing ) Memori level Bit ( Memori-data  internal 20h sampai 2Fh) Setiap byte memori di daerah ini bisa dipakai menampung 8 bit informasi yang masing-masing dinomori tersendiri, dengan demikian dari 16 byte memori yang ada bisa dipakai untuk menyimpan 128 bit (16 x 8 bit) yang dialamati dengan alamat 00h sampai 7Fh. Informasi dalam level bit tersebut masing-masing bisa di-‘1’-kan, di - ‘0’- kan dengan instruksi SETB dan CLR. Register Serba Guna  ( General Purpose Register )
Instruksi SETB 00h  memori-bit  alamat 0h menjadi ‘1’ = membuat bit nomor 0 dari  memori-data  pada alamat 20h menjadi ‘1’  bit-bit lain memori 20h tidak berubah nilai. Instruksi CLR 7Fh  memori-bit  alamat 7Fh menjadi ‘0’ = membuat bit nomor 7 dari  memori-data  pada alamat 2Fh menjadi ‘0’   bit-bit lain memori 2Fh tidak berubah nilai. MOV 21h,#0Fh = SETB 08h SETB 09h SETB 0Ah SETB 0Bh CLR 0Ch CLR 0Dh CLR 0Eh CLR 0Fh Register Serba Guna  ( General Purpose Register )
Special Function Register (SFR)    satu daerah RAM dalam IC keluarga MCS51   untuk mengatur perilakunya dalam hal-hal khusus, misalnya tempat untuk berhubungan dengan port paralel P1 atau P3, dan sarana input/output lainnya, tapi tidak umum dipakai untuk menyimpan data seperti layaknya memori-data. Penulisan program SFR diperlakukan persis sama dengan memori-data. Untuk mengisi memori-data pada alamat 60h dengan bilangan 0Fh, instruksi    MOV 60h,#0Fh Register Khusus  (SFR -  Special Function Register )
Sedangkan untuk menyimpan 0Fh ke Port 1 yang di SFR menempati memori-data pada alamat 90h, instruksi yang dipergunakan adalah : MOV 90h,#0Fh Mengakses  memori-data  ada dua cara, yakni  - langsung  ( direct memory addressing) -tidak langsung  ( indirect memory addressing ) lewat bantuan R0 dan R1.  Tapi untuk SFR hanya bisa dipakai  penyebutan nomor memori secara langsung  ( direct memory addressing ) saja. Register Khusus  (SFR -  Special Function Register )
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Register Dasar MCS51
Dalam mikroprosesor/mikrokontroler yang lain, register-register dasar biasanya ditempatkan ditempat tersendiri dalam inti prosesor  MCS51 register-register itu ditempatkan secara terpisah. 􀁸  Program Counter  ditempatkan ditempat tersendiri di dalam inti prosesor 􀁸  Register Serba Guna  R0..R7 ditempatkan di salah satu bagian dari  memori-data internal 􀁸  Register lainnya ditempatkan dalam  Special Function Register  (SFR). Register Dasar MCS51
Register Dasar MCS51
Register Dasar MCS51 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LECTURE 3 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 1)
Register Dasar MCS51 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Register Dasar MCS51 ,[object Object],[object Object],[object Object]
Register Dasar MCS51 Program Status Word Program Status Word  (PSW) berfungsi mencatat kondisi prosesor setelah melaksanakan instruksi. Pembahasan tentang PSW secara rinci akan dilakukan dibagian lain. Register B Merupakan register dengan kapasitas 8 bit, merupakan register pembantu  Akumulator  saat menjalankan instruksi perkalian dan pembagian.
Register Dasar MCS51 Data Pointer High Byte  (DPH) dan  Data Pointer Low Byte  (DPL) masing-masing merupakan register dengan kapasitas 8 bit, tapi dalam pemakaiannya kedua register ini digabungkan menjadi satu register 16 bit yang dinamakan sebagai  Data Pointer Register  (DPTR). Sesuai dengan namanya, Register ini dipakai untuk mengalamati data dalam jangkauan yang luas, yaitu terutama untuk mengakses data yang berada pada memori eksternal
PEMROGRAMAN ASSEMBLY UNTUK MCS-51 Kode Program (perangkat lunak/ software ) pengendali mikrokontroler disusun dari kumpulan instruksi, instruksi tersebut setara dengan kalimat perintah bahasa manusia yang hanya terdiri atas predikat dan objek.  Dengan demikian tahap pertama pembuatan program pengendali mikrokontroler dimulai dengan pengenalan dan pemahaman predikat (kata kerja) dan objek apa saja yang dimiliki mikrokontroler.
PEMROGRAMAN ASSEMBLY UNTUK MCS-51 Objek dalam pemrograman mikrokontroler adalah data yang tersimpan di dalam memori,register dan input/output. Sedangkan ‘kata kerja’ yang dikenal pun secara umum dikelompokkan menjadi perintah untuk perpindahan data, arithmetik, operasi logika, pengaturan alur program dan beberapa hal khusus. Kombinasi dari ‘kata kerja’ dan objek itulah yang membentuk perintah pengatur kerja mikrokontroler.
PEMROGRAMAN ASSEMBLY UNTUK MCS-51 Instruksi MOV A,7Fh merupakan contoh sebuah instruksi dasar yang sangat spesifik, MOV merupakan ‘kata kerja’ yang memerintahkan peng-copy-an data, merupakan predikat dalam kalimat perintah ini. Sedangkan objeknya adalah data yang di-copy-kan, dalam hal ini adalah data yang ada di dalam alamat memori 7Fh di-copy-kan ke Akumulator A.
Pengalamatan Data dalam MCS51 Instruksi MOV A,7Fh  merupakan contoh sebuah instruksi dasar yang sangat spesifik, MOV merupakan ‘kata kerja’ yang memerintahkan peng-copy-an data, merupakan predikat dalam kalimat perintah ini. Sedangkan objeknya adalah data yang di-copy-kan, dalam hal ini adalah data yang ada di dalam alamat memori 7Fh di-copy-kan ke Akumulator A.
Pengalamatan Data dalam MCS51 Pengalamatan/penempatan data konstan/konstanta ( immediate addressing mode ): Contoh :MOV A,#20h. Contoh instruksi ini mempunyai makna data konstanta 20h (sebagai data konstan ditandai dengan ‘#’) di-copy-kan ke Akumulator A.  Pengalamatan data secara langsung ( direct addressing mode )  memindahkan data yang berada di dalam memori  mengakses alamat memori tempat data tersebut berada : MOV A,20h. Contoh instruksi ini mempunyai makna data yang berada di dalam alamat memori 20h di-copy-kan ke Akumulator.
Pengalamatan Data dalam MCS51 Pengalamatan data secara tidak langsung ( indirect addressing mode )  menunjuk data yang berada di dalam memori, kalau memori penyimpan data ini letaknya berubah-rubah sehingga alamat memori tidak diakses secara langsung tapi di-‘titip’-kan ke register lain. MOV A,@R0. Register serba guna R0 dipakai untuk mencatat alamat memori, sehingga instruksi ini mempunyai makna memori yang alamatnya tercatat dalam R0 isinya di-copy-kan ke Akumulator A. Tanda ‘@’ dipakai untuk menandai alamat memori disimpan di dalam R0.
Pengalamatan Data dalam MCS51 Pengalamatan data dalam register ( register addressing mode ): MOV A,R5. Instruksi ini mempunyai makna data dalam register serba guna R5 di-copykan ke Akumulator A.  Instruksi ini membuat register serba guna R0 sampai R7 sebagai tempat penyimpan data yang sangat praktis yang kerjanya sangat cepat.
Instruksi-instruksi dalam MCS51 ,[object Object],[object Object],[object Object],[object Object],[object Object]
Instruksi-instruksi dalam MCS51 KELOMPOK PENG-COPY-AN DATA Kode dasar  MOV  singkatan dari MOVE   memindahkan  lebih tepat dikatakan peng-copy-an data.  MOV A,R7  Akumulator A dan register serba guna R7 berisikan data yang sama, yang asalnya tersimpan di dalam R7. MOV A,20h MOV A,@R1 MOV A,P1 MOV P3,A
Instruksi-instruksi dalam MCS51 KELOMPOK ARITMATIK  (ADD, ADDC, SUBB, DA, MUL dan DIV) Perintah ADD dan ADDC Isi  Akumulator  A + ( 1 byte )    hasil di  Akumulator .  Dalam operasi ini  bit Carry  (C flag dalam PSW)   penampung limpahan hasil penjumlahan.  Jika hasil penjumlahan nilainya lebih besar dari 255, bit Carry   ‘1’, kalau tidak   ‘0’.  ADDC sama dengan ADD, hanya saja dalam ADDC nilai  bit Carry  dalam proses sebelumnya ikut dijumlahkan bersama.
Instruksi-instruksi dalam MCS51 Bilangan 1 byte    bilangan konstan, register serba guna, dari memori data yang alamat memorinya dialamati secara langsung maupun tidak langsung ADD A,R0  ; register serba guna ADD A,#23h ; bilangan konstan ADD A,@R0  ; no memori tak langsung ADD A,P1  ; no memori langsung (port 1)
Instruksi-instruksi dalam MCS51 Perintah SUBB Isi  Akumulator  A -  bilangan 1 byte  dengan nilai  bit Carry , hasil pengurangan     Akumulator .  Dalam operasi ini  bit Carry  juga berfungsi sebagai penampung limpahan hasil pengurangan. Jika hasil pengurangan tersebut melimpah (nilainya kurang dari 0)  bit Carry   ‘1’, tidak bit Carry  ‘0’. SUBB A,R0 ; A = A - R0 - C SUBB A,#23h ; A = A – 23H SUBB A,@R1 SUBB A,P0
Instruksi-instruksi dalam MCS51 Perintah DA Perintah DA ( Decimal Adjust ) dipakai setelah perintah ADD; ADDC atau SUBB, dipakai untuk merubah nilai biner 8 bit yang tersimpan dalam  Akumulator  menjadi 2 buah bilangan desimal yang masing-masing terdiri dari nilai biner 4 bit. DA A
Instruksi-instruksi dalam MCS51 Perintah MUL AB Bilangan biner 8 bit dalam  Akumulator  A dikalikan dengan bilangan biner 8 bit dalam  register  B.  Hasil perkalian berupa bilangan biner 16 bit, 8 bit bilangan biner yang bobotnya lebih besar ditampung di  register  B, sedangkan 8 bit lainnya yang bobotnya lebih kecil ditampung di  Akumulator  A. Bit OV dalam PSW ( Program Status Word ) dipakai untuk menandai nilai hasil perkalian yang ada dalam register B. Bit OV akan bernilai ‘0’ jika  register  B bernilai 00h, kalau tidak bit OV bernilai ‘1’. MOV A,#10 MOV B,#20 MUL AB
Instruksi-instruksi dalam MCS51 Perintah DIV AB Bilangan biner 8 bit dalam  Akumulator  A dibagi dengan bilangan biner 8 bit dalam  register  B.  Hasil pembagian berupa bilangan biner 8 bit ditampung di  Akumulator , sedangkan sisa pembagian berupa bilangan biner 8 bit ditampung di  register  B. Bit OV dalam PSW ( Program Status Word ) dipakai untuk menandai nilai sebelum pembagian yang ada dalam register B. Bit OV akan bernilai ‘1’ jika register B asalnya bernilai 00h. MOV A,#10 MOV B,#2 DIV AB
Instruksi-instruksi dalam MCS51 KELOMPOK LOGIKA (ANL, ORL dan XRL) Operasi logika yang bisa dilakukan adalah  operasi AND  (kode operasi ANL),  operasi OR    ORL dan  operasi Exclusive-OR    XRL ANL A,#01111110    bit 0 sampai 7 dari Akumulator bernilai ‘0’ sedangkan bit-bit lainnya tetap tidak berubah nilai. ORL A,#01111110    bit 1 sampai 6 dari Akumulator bernilai ‘1’ sedangkan bit-bit lainnya tetap tidak berubah nilai. XRL A,#01111110    bit 1 sampai 6 dari Akumulator berbalik nilai, sedangkan bit-bit lainnya tetap tidak berubah nilai.
LECTURE 4 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 2)
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Secara umum kelompok instruksi yang dipakai untuk mengatur alur program terdiri atas instruksi-instruksi JUMP  Instruksi-instruksi untuk membuat dan memakai sub-rutin/modul (setara dengan PROCEDURE dalam Pascal) Instruksi-instruksi JUMP bersyarat ( conditional Jump , setara dengan statemen IF .. THEN ).
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Kelompok Instruksi JUMP Mikrokontroler menjalankan instruksi-instruksi, selesai menjalankan satu instruksi mikrokontroler langsung menjalankan instruksi berikutnya Hal ini dilakukan dengan cara nilai  Program Counter  bertambah sebanyak jumlah byte yang membentuk instruksi yang sedang dijalankan Dengan demikian pada saat instruksi bersangkutan dijalankan Program Counter selalu menyimpan alamat memori-program yang menyimpan instruksi berikutnya.
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Kelompok Instruksi JUMP Pada saat mikrokontroler menjalankan kelompok instruksi JUMP, nilai  Program Counter  yang runtun sesuai dengan alur program diganti dengan alamat memori-program baru yang dikehendaki programer. Mikrokontroler MCS51 mempunyai 3 macam intruksi JUMP, yakni instruksi LJMP ( Long Jump ), instruksi AJMP ( Absolute Jump ) dan instruksi SJMP
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Kelompok Instruksi JUMP Pada saat mikrokontroler menjalankan kelompok instruksi JUMP, nilai  Program Counter  yang runtun sesuai dengan alur program diganti dengan alamat memori-program baru yang dikehendaki programer. Mikrokontroler MCS51 mempunyai 3 macam intruksi JUMP, yakni instruksi LJMP ( Long Jump ), instruksi AJMP ( Absolute Jump ) dan instruksi SJMP( Short Jump ).  Kecepatan melaksanakan ketiga instruksi ini juga persis sama, yakni memerlukan waktu 2 periode instruksi
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Instruksi LJMP Kode untuk instruksi LJMP adalah 02h, memori-program baru yang dituju    bilangan biner 16 bit   memori-program MCS51 yang jumlahnya 64 KiloByte. Instruksi LJMP terdiri atas 3 byte, yang bisa dinyatakan dengan bentuk umum 02 aa aa, aa yang pertama adalah memori-program bit 8 sampai dengan bit 15, sedangkan aa yang kedua adalah memori-program bit 0 sampai dengan bit 7. LJMP TugasBaru … ORG 2000h TugasBaru: MOV A,P3.1
Percabangan dan Pengaturan  Alur Program Pada MCS-51 ORG adalah perintah pada assembler agar berikutnya assembler bekerja pada memori-program yang disebut di belakang ORG   2000H TugasBaru disebut sebagai LABEL, yakni sarana assembler untuk menandai/ menamai memori-program.  Dengan demikian, dalam potonganprogram di atas, memori-program 2000h diberi nama TugasBaru, atau bisa juga dikatakan bahwa TugasBaru bernilai 2000h.  Dengan demikian intruksi LJMP TugasBaru di atas, sama artinya dengan LJMP 2000h yang oleh assembler akan diterjemahkan menjadi 02 20 00 (heksadesimal).
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Instruksi AJMP memori-program baru yang dituju dinyatakan dengan bilangan biner 11 bit, dengan demikian instruksi ini hanya bisa menjangkau satu daerah memori-program MCS51 sejauh 2 KiloByte.  Instruksi AJMP terdiri atas 2 byte, byte pertama merupakan kode untuk instruksi AJMP (00001b) yang digabung dengan memori program bit 8 sampai dengan bit 10, byte kedua dipakai untuk menyatakan memori-program bit 0 sampai dengan bit 7.
Percabangan dan Pengaturan  Alur Program Pada MCS-51 ORG 800h AJMP DaerahIni AJMP DaerahLain ORG 900h DaerahIni: . . . ORG 1000h DaerahLain: . . .
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Instruksi SJMP memori-program dalam instruksi ini tidak dinyatakan dengan memori-program yang sesungguhnya, tapi dinyatakan dengan ‘pergeseran relatip’ terhadap nilai Program Counter saat instruksi ini dilaksanakan. Pergeseran relatip  tersebut dinyatakan dengan 1 byte bilangan 2’s complement, yang bisa dipakai untuk menyakatakan nilai antara –128 sampai dengan +127. Nilai minus dipakai untuk menyatakan bergeser ke instruksiinstruksi sebelumnya, sedangkan nilai positip untuk menyatakan bergeser ke instruksi-instruksi sesudahnya.
Percabangan dan Pengaturan  Alur Program Pada MCS-51 ORG 0F80h SJMP DaerahLain . . . ORG 1000h DaerahLain: instruksi SJMP DaerahLain tetap bisa dipakai, asalkan jarak antara instruksi itu dengan LABEL DaerahLain tidak lebih dari 127 byte. 1000H-F80H=80H=128D
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Kelompok Instruksi untuk sub-rutin Sub-rutin merupakan suatu potong program yang karena berbagai pertimbangan dipisahkan dari program utama.  Bagian-bagian di program utama akan ‘memanggil’ (CALL) sub-rutin  mikrokontroler sementara meninggalkan alur program utama untuk mengerjakan instruksi-instruksi dalam sub-rutin, kemudian kembali ke alur program utama. Satu-satunya cara membentuk sub-rutin adalah memberi instruksi RET pada akhir potongan program sub-rutin.  Program sub-rutin di-’panggil’ dengan instruksi ACALL atau LCALL.
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Agar nantinya mikrokontroler bisa meneruskan alur program utama, pada saat menerima instruksi ACALL atau LCALL, sebelum mikrokontroler pergi mengerjakan sub-rutin, nilai Program Counter saat itu disimpan dulu ke dalam menyimpan nilai  Program Counter  secara otomatis di Stack Selanjutnya mikrokontroler mengerjakan instruksi-instruksi di dalam subrutin sampai menjumpai instruksi RET yang berfungsi sebagai penutup dari subrutin.
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Instruksi ACALL dipakai untuk me-‘manggil’ program sub-rutin dalam daerah memori-program 2 KiloByte yang sama, setara dengan instruksi AJMP yang sudah dibahas di atas.  Sedangkan instruksi LCALL bisa menjangkau seluruh memori-program mikrokontroler MCS51 sebanyak 64 KiloByte.
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Kelompok Instruksi Jump Bersyarat Instruksi JZ ( Jump if Zero ) dan instruksi JNZ ( Jump if not Zero ) adalah instruksi  JUMP  bersyarat yang memantau nilai  Akumulator  A. MOV A,#0 JNZ BukanNol JZ Nol . . . BukanNol: . . . Nol : . . .
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Kelompok Instruksi Jump Bersyarat Dalam contoh program sebelumnya,  MOV A,#0   A bernilai nol mengakibatkan instruksi JNZ BukanNol tidak akan pernah dikerjakan (JNZ artinya Jump kalau nilai A<>0, syarat ini tidak pernah dipenuhi karena saat instruksi ini dijalankan nilai A=0), sedangkan instruksi JZ Nol selalu dikerjakan karena syaratnya selalu dipenuhi.
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Instruksi JC ( Jump on Carry ) dan instruksi JNC ( Jump on no Carry )     memantau nilai  bit Carry  di dalam PSW Instruksi JB ( Jump on Bit Set ), instruksi JNB ( Jump on not Bit Set ) dan instruksi JBC (Ju mp on Bit Set Then Clear Bit )   merupakan instruksi  Jump  bersyarat yang memantau nilai-nilai bit tertentu. Bit-bit tertentu bisa merupakan bit-bit dalam register status maupun kaki input mikrokontroler MCS51.
Percabangan dan Pengaturan  Alur Program Pada MCS-51 MOV A,#01010101B JNB ACC.0,LAGI ;JIKA A BIT KE 0=‘0’    LOMPAT KE LAGI JBC ACC.6,LAGI2 ;JIKA A BIT KE 6=‘1’    LOMPAT KE LAGI 2 DAN    ACC.6  ’0’ LAGI: …… LAGI2: … ..
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Kelompok Instruksi proses dan test  memantau kondisi yang sudah terjadi yang dicatat MCS51.  Ada dua instruksi    melakukan dulu suatu proses baru kemudian memantau hasil proses untuk menentukan apakah harus  Jump .  Instruksi DJNZ ( Decrement and Jump if not Zero ), merupakan instruksi yang akan mengurangi 1 nilai  register serbaguna  (R0..R7) atau  memori-data , dan  Jump  jika ternyata setelah pengurangan 1 tersebut hasilnya tidak nol.
Percabangan dan Pengaturan  Alur Program Pada MCS-51 MOV R0,#23h ;R0=’23H’ DJNZ R0,$ ;R0=R0-1 jika belum nol  maka looping di tempat (tanda $ dalam instruksi ini maksudnya adalah kerjakan kembali instruksi ini). Selama mengerjakan 2 instruksi di atas, semua pekerjaan lain akan tertunda    waktu tundanya ditentukan oleh besarnya nilai yang diisikan ke R0.
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Instruksi CJNE ( Compare and Jump if Not Equal ) membandingkan dua nilai yang disebut dan MCS akan  Jump  kalau kedua nilai tersebut tidak sama! MOV A,P1 CJNE A,#0Ah,TidakSama ... SJMP EXIT TidakSama: ... Instruksi MOV A,P1 membaca nilai input dari Port 1, instruksi CJNE A,#0Ah,Tidaksama memeriksa apakah nilai Port 1 yang sudah disimpan di A sama dengan 0Ah, jika tidak maka  Jump  ke TidakSama. .
Assembler Directive ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Assembler Directive DB – singkatan dari  DEFINE BYTE , dipakai untuk memberi nilai tertentu pada memori-program. Nilai tersebut merupakan nilai 1 byte, bisa berupa angka ataupun kode ASCII. DB merupakan Assembler Directive yang dipakai untuk membentuk teks maupun tabel. Contoh : ORG 200h STRING DB ‘Belajar Mikrokontroler’ ORG 200h memerintahkan program Assembler agar bekerja mulai dari  memori-program  nomor 200h, instruksi selanjutnya memerintahkan program Assembler agar mengisi  memori-program  nomor 200h dan berikutnya dengan tulisan ‘Belajar Mikrokontroler’ (yang diisikan adalah kode ASCII dari ‘B’, ‘e’ dan seterusnya)
Assembler Directive DW – singkatan dari  DEFINE WORD , dipakai untuk memberi nilai 2 byte ke  memori-program  pada baris bersangkutan. Assembler Directive ini biasa dipakai untuk membentuk suatu tabel yang isinya adalah nomor-nomor  memori-program . DS – singkatan dari  Define Storage , Assembler Directive ini dipakai untuk membentuk variable.  Sebagai variabel tentu saja memori yang dipakai adalah  memori-data  (RAM) bukan  memori-program  (ROM). Jika Assembler Directive DB dan DW yang membentuk kode di  memori-program . Dan karena DS bekerja di RAM, maka DS hanya sekedar menyediakan tempat di memori, tapi tidak mengisi nilai pada memori bersangkutan.
Pemrograman Untuk Port Paralel Pada MCS51 Port paralel merupakan sarana utama sebuah chip Mikrokontroler, lewat sarana ini mikrokontroler mengeluarkan sinyal digital yang dipakai mengendalikan rangkaian-rangkaian di luar chip secara langsung.  Chip mikrokontroler 8051/8031/8751/8951 mempunyai 40 kaki, 32 kaki diantaranya adalah kaki untuk keperluan port paralel. Satu port paralel terdiri dari 8 kaki, dengan demikian 32 kaki tersebut membentuk 4 buah port paralel, yang masing-masing dikenali sebagai Port 0, Port 1, Port 2 dan Port 3.
Pemrograman Untuk Port Paralel Pada MCS51 Masing-masing jalur (kaki) dari port paralel di-nomor-i mulai dari 0 sampai 7, jalur (kaki) pertama Port 0 disebut sebagai P0.0, jalur terakhir Port 3 adalah P3.7. MCS51 mempunyai dua kelompok instruksi untuk mengeluarkan data ke port paralel: kelompok instruksi pertama bekerja pada port seutuhnya artinya 8 jalur dari port bersangkutan, misalnya MOV P1,#FFh membuat ke-delapan jalur port 0 sekaligus menjadi ‘1’.
Pemrograman Untuk Port Paralel Pada MCS51 kelompok instruksi kedua hanya berpengaruh pada salah satu jalur dari port, misalnya SETB P3.4    P3.4  ’1’ atau CLR P3.3    P3.3  ‘0’. Selain itu port paralel bisa pula dipakai untuk menerima sinyal digital dari rangkaian di luar chip mikrokontroler: MOV A,P1 ;ambil sinyal digital pada  semua jalur Port 1 dan  menyimpannya di  A
Pemrograman Untuk Port Paralel Pada MCS51 ORG 0 JMP PROGRAM ORG 100H PROGRAM:MOV A,#0H ULANG:  MOV P1,A CALL DELAY INC A JMP ULANG DELAY:  MOV R0,#00H MOV R1,#00H ULANG1: INC R1 ULANG2: INC R0 CJNE R0,#0FFH,ULANG2 CJNE R1,#040H,ULANG1 RET
Pemrograman Untuk Port Paralel Pada MCS51 ORG 000H JMP MULAI ORG 100H MULAI: MOV P1,#0FFH ULANG: JNB P1.0,ULANG MOV P1,#00H END
Pemrograman Untuk Port Paralel Pada MCS51 ORG 000H JMP PROGRAM ORG 100H PROGRAM: MOV P1,#0FFh ULANG1:  MOV C,P1.0 MOV P1.1,C JMP ULANG1 END
Pemrograman Untuk Port Paralel Pada MCS51 ORG 000H JMP PROGRAM ORG 100H PROGRAM: MOV A,#01H ;A=00000001 ULANG:  MOV P1,A ;P1=00000001 RL A ;A=00000010  dst CALL DELAY JMP ULANG DELAY: MOV R1,#00H ULANG1: INC R1 CJNE R1,#0FFH,ULANG1 RET END
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
LECTURE 5 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 3)
Pemrograman Dasar MCS-51 ,[object Object],Proses kompilasi akan diperagakan
STRUKTUR MEMORI ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
STRUKTUR MEMORI
STRUKTUR MEMORI Accumulator (ACC) - Terletak pada alamat E0H - Operasi Aritmatik (Add A,#05H) - Operasi Logika (Anl A,#05H) - Akses Memori Eksternal (Movx A,@DPTR) - Untuk fungsi umum Register B - Terletak pada alamat B0H - Fungsi umum - Digunakan bersama Acc untuk operasi Aritmatik (Mul AB)
STRUKTUR MEMORI
STRUKTUR MEMORI Data Pointer (DPTR) - Terdiri dari dua register yaitu o DPH (82H) o DPL (83H) - Untuk akses data atau source code di memori Flash PEROM atau Memori Eksternal
STRUKTUR MEMORI
STRUKTUR MEMORI Flash PEROM - Kapasitas 4 Kb - Alamat 000H hingga FFFH - Diakses bila: o Pin EA/VP 89S51 berlogika high o Ada perintah untuk memanggil instruksi di alamat tersebut  -Dapat diproteksi dengan: o Lock Bit 1, tidak dapat dibaca oleh program yang berada di memori eksternal o Lock Bit 2, tidak dapat dibaca oleh peralatan Programmer o Lock Bit 3, sama sekali tidak dapat mengakses/diakses oleh/dari memori eksternal
STRUKTUR MEMORI External Memory - Dibutuhkan untuk: o Memori berkapasitas besar o Emulasi Program - Sistem pengalamatan Multiplex Addressing
STRUKTUR MEMORI
STRUKTUR MEMORI Akses Memori Eksternal terdiri dari: o Pembacaan Data o Pembacaan Program (Kode) o Penulisan Data/Kode Proses Pembacaan Proses pembacaan dapat dianalogikan sebagai proses membaca dari halaman tertentu dari sebuah buku di mana pada proses tersebut dibutuhkan: - Halaman dari tulisan yang akan dibaca = Alamat Memori - Perintah untuk membaca = Sinyal Read untuk Data dan Sinyal PSEN untuk kode
STRUKTUR MEMORI
STRUKTUR MEMORI
STRUKTUR MEMORI
STRUKTUR MEMORI
STRUKTUR MEMORI
LECTURE 6 TIMER DAN COUNTER
TIMER PADA MCS51 ,[object Object]
TIMER PADA MCS51 ,[object Object]
TIMER PADA MCS51
TIMER PADA MCS51 ,[object Object],[object Object],[object Object]
TIMER PADA MCS51 ,[object Object],[object Object]
TIMER PADA MCS51 ,[object Object],[object Object]
TIMER PADA MCS51 Keluarga mikrokontroler MCS51, misalnya 8951, 8051, atau 8031 dilengkapi dengan dua perangkat Timer/Counter, masing-masing dinamakan sebagai  Timer 0  dan  Timer 1 . Sedangkan untuk jenis yang lebih  besar , misalnya 8952 dan 8052 mempunyai tambahan yaitu  Timer 2 . Perangkat Timer/Counter tersebut merupakan perangkat keras yang menjadi satu dalam chip mikrokontroler MCS51, perangkat tersebut dikenal sebagai SFR ( Special Function Register ) yang berkedudukan sebagai  memori-data internal .
TIMER PADA MCS51 Pencacah biner untuk Timer 0 dibentuk dengan register TL0 ( Timer 0 Low Byte , memori-data internal alamat 6Ah) dan register TH0 ( Timer 0 High Byte , memori-data internal alamat 6Ch). Pencacah biner untuk Timer 1 dibentuk dengan register TL1 ( Timer 1 Low Byte , memori-data internal alamat 6Bh) dan register TH1 ( Timer 1 High Byte , memori-data internal alamat 6Dh).
TIMER PADA MCS51 ,[object Object],[object Object],[object Object],[object Object]
TIMER PADA MCS51 ,[object Object],[object Object],[object Object]
TIMER PADA MCS51 ,[object Object],[object Object]
TIMER MODE 0 PADA MCS51 Susunan TL0, TH0, TL1 dan TH1 pada mode 0 adalah sebagai berikut:  Pencacah biner dibentuk dengan TLx (TL0 atau TL1) sebagai pencacah biner 5 bit (meski kapasitas riil 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 (TF0 atau TF1) yang berada di dalam register TCON.
TIMER MODE 1 PADA MCS51 Susunan TL0, TH0, TL1 dan TH1 pada mode 1 adalah sebagai berikut:  Mode ini sama dengan Mode 0, hanya saja register TLx dipakai sepenuhnya sebagai pencacah biner 8 bit    pencacah biner 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), dan melimpah kembali menjadi 0000h.
TIMER MODE 2 PADA MCS51 Mode 2 – Pencacah Biner 8 bit dengan Isi Ulang (  8 bit Autoreload Binary Counter ) 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 FFh menjadi 00h).  Dengan cara ini bisa didapatkan sinyal limpahan yang frekuensinya ditentukan oleh nilai yang disimpan dalam TH0.
TIMER MODE 3 PADA MCS51 Pada Mode 3 TL0, TH0, TL1 dan TH1 dipakai untuk membentuk 3 untaian pencacah, yang pertama adalah untaian pencacah biner 16 bit tanpa fasilitas pemantau sinyal limpahan yang dibentuk dengan TL1 dan TH1. Yang kedua adalah TL0 yang dipakai sebagai pencacah biner 8 bit dengan TF0 pemantau limpahan. Pencacah biner ketiga adalah TH0 yang dipakai sebagai pencacah biner 8 bit dengan TF1 pemantau limpahan.
Register Pengatur Timer Register TMOD dibagi menjadi 2 bagian secara simetris, bit 0 sampai 3 register TMOD (TMOD bit 0 .. TMOD bit 3) dipakai untuk mengatur  Timer 0 , bit 4 sampai 7 register TMODE (TMOD bit 4 .. TMOD bit 7) dipakai untuk mengatur  Timer1,  pemakaiannya sebagai berikut : 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 .
Register Pengatur Timer ,[object Object],[object Object],[object Object],[object Object]
Register Pengatur Timer Register  TCON  dibagi menjadi 2 bagian, 4 bit pertama (bit 0 .. bit 3, bagian yang diarsir dalam Gambar 3b) dipakai untuk keperluan mengatur kaki  INT0  dan  INT1 Sisa 4 bit dari register  TCON  (bit 4..bit 7) dibagi menjadi 2 bagian secara simetris yang dipakai untuk mengatur  Timer 0/Timer 1
Register Pengatur Timer Bit  TFx  (maksudnya adalah  TF0  atau  TF1)  merupakan bit penampung limpahan,  TFx  akan menjadi ‘ 1 ’ setiap kali pencacah biner yang terhubung padanya melimpah (pencacah berubah dari FFFFh kembali menjadi 0000h).  Bit  TFx  di-nol-kan dengan istruksi  CLR TF0  atau  CLR TF1 . Jika sarana interupsi dari  Timer 0 / Timer 1  dipakai,  TRx  di-nol-kan saat MCS51 menjalankan  rutin layanan interupsi  ( ISR  –  Interupt Service Routine ).
Register Pengatur Timer Bit  TRx  (maksudnya adalah  TR0  atau  TR1)  merupakan bit pengatur saluran sinyal denyut, bila bit ini = 0  sinyal denyut tidak disalurkan ke pencacah biner sehingga pencacah berhenti mencacah. Bila bit  GATE  pada register  TMOD  = 1 , maka saluran sinyal denyut ini diatur bersama oleh  TRx  dan sinyal pada kaki  INT0 / INT1
Register Pengatur Timer Setelah MCS51 di-reset register  TMOD  bernilai $00, hal ini berarti : •  bit  C/T*  =’ 0 ’, menurut Gambar 4 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 .
Register Pengatur Timer Jika sistem yang dirancang memang menghendaki  Timer 1  bekerja sebagai timer  maka bit  C/T * tidak perlu diatur lagi. 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 ’.
Register Pengatur Timer 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’ .
Register Pengatur Timer 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 ’
Register Pengatur Timer Jika sistem yang dirancang menghendaki kerja dari timer/counter dikendalikan dari sinyal yang berasal dari luar chip, maka bit  GATE  harus dibuat menjadi ‘ 1 ’ 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 maka bit  M1  harus dibuat ‘ 0 ’ dan bit  M0  ‘ 1’ .
Register Pengatur Timer 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
Register Pengatur Timer Bilangan biner  00010000  diisikan ke  TMOD , berakibat bit 7  TMOD  (bit  GATE ) bernilai ‘ 0 ’, bit 6 (bit  C/T* ) bernilai ‘ 0 ’, bit 5 dan 4 (bit  M1  dan  M0 ) bernilai ‘ 01’ , ke-empat bit ini dipakai untuk mengatur  Timer 1 , sehingga Timer 1 bekerja sebagai  timer dengan pencacah biner 16 bit yang dikendalikan hanya dengan TR1 . Jika dikehendaki pencacah biner dipakai sebagai counter untuk mencacah jumlah pulsa yang masuk lewat kaki  T1  ( P3.5 ), instruksinya menjadi : MOV TMOD,#01010000b
Register Pengatur Timer 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 Jika bit  GATE  = ‘ 1 ’, selama kaki  INT1  bernilai ‘ 0 ’ pencacah biner belum akan mencacah. Untuk menghentikan proses pencacahan, dipakai instruksi  CLR TR1
Register Pengatur Timer ,[object Object],[object Object],[object Object]
Aplikasi Timer Pemakaian waktu tunda Waktu tunda banyak dipakai dalam pemrograman mikrokontroler untuk membangkitkan pulsa, membangkitkan sinyal periodik dengan frekuensi tertentu, untuk menghilangkan effek bouncing dari skalar dalam membuat key pad (keyboard sederhana) dan lain sebagainya. Waktu tunda bisa dibangkitkan secara sederhana dengan menjalankan instruksi-instruksi yang waktu pelaksanaanya bisa diperhitungkan dengan tepat. Untuk mendapatkan waktu tunda yang panjang, tidak dipakai cara di atas tapi pakai Timer. Waktu tunda yang dibentuk dengan kedua cara tersebut sangat tergantung pada frekuensi kerja mikrokontroler, dalam contoh-contoh berikut dianggap mikrokontroler bekerja pada frekuensi 12 MHz.
Aplikasi Timer Instruksi-instruksi berikut ini bisa dipakai untuk membangkitkan pulsa ‘ 0 ’ dengan lebar 3 mikro-detik pada kaki  P1.0 CLR P1.0 NOP  ; 1 mikro-detik NOP  ; 1 mikro-detik SETB P1.0  ; 1 mikro-detik Instruksi baris pertama membuat  P1.0  yang mula-mula ‘ 1 ’ menjadi ‘ 0 ’,pelaksanaan instruksi  NOP  memerlukan waktu 1 mikro-detik ,instruksi  SETB P1.0  juga memerlukan waktu 1 mikrodetik, total waktu sebelum  P1.0  kembali menjadi ‘ 1 ’ adalah 3 mikro-detik
Aplikasi Timer Dengan sedikit perubahan instruksi-instruksi di atas bisa membangkitkan sinyal dengan frekuensi 100 KHz pada kaki  P1.0  : Sinyal100KHz: CPL P1.0  ; 1 mikro-detik NOP  ; 1 mikro-detik NOP  ; 1 mikro-detik SJMP Sinyal100KHz  ; 2 mikro-detik Instruksi  CPL P1.0  pada baris 1 membalik keadaan pada  P1.0 , bila mula-mula  P1.0  bernilai ‘ 1 ’ akan dirubah menjadi ‘ 0 ’, sebaliknya bila mula-mula ‘ 0 ’ akan dirubah menjadi ‘ 1 ’. Total waktu tunda ke-empat baris di atas adalah 5 mikro-detik, sehingga yang terjadi adalah  P1.0  bernilai ‘ 0 ’ selama 5 mikro-detik dan bernilai ‘ 1 ’ selama 5 mikro-detik berulang terus tanpa henti, dengan frekuensi sebesar 1/10 mikro-detik = 100.000 Hertz.
Aplikasi Timer Program di atas bisa pula dibuat dengan memakai  Timer 1  sebagai pengatur waktu tunda sebagai berikut : MOV TMOD,#00100000b  ; Timer 1 bekerja pada Mode 2 MOV TH1,#0F6h  ; Nilai pengisi ulang TL1 SETB TR1  ; Timer 1 mulai mencacah Ulangi: JNB TF1,$  ; Tunggu sampai melimpah CPL P1.0  ; Keadaan pada P1.0 di-balik CLR TF1  ; Hapus limpahan pencacah SJMP Ulangi  ; Ulangi terus tiada henti… Instruksi baris pertama mempersiapkan  Timer 0  bekerja pada Mode 2 – Pencacah Biner 8 bit dengan Isi Ulang, bilangan pengisi ulang ditentukan sebesar  F0h  yang disimpan ke register  TH1  pada baris 2, instruksi berikutnya memerintahkan pencacah biner mulai mencacah.
Aplikasi Timer Pencacah biner yang dibentuk dengan register  TL1  akan mencacah naik seirama dengan siklus sinyal denyut, mulai dari  F6h  sampai  FFh , saat pencacah melimpah dari  FFh  ke  00h  bit  TR1  pada register  TCON  akan menjadi ‘ 1 ’ dan  TL1  secara otomatis di isi ulang dengan bilangan  F0h  yang tersimpan pada register  TH0 . Hal ini akan terjadi terus menerus dan berulang setiap 10 siklus sinyal denyut ( F6h ,  F7h ,  F8h ,  F9h ,  FAh ,  FBh ,  FCh ,  FDh ,  FEh ,  FFh  kembali ke  00h , total 10siklus)
Aplikasi Timer Instruksi  JNB TR1,$  menunggu bit  TR1  menjadi ‘ 1 ’, yakni saat pencacah biner melimpah dari  FFh  ke  00h  yang dibahas di atas. Lepas dari penantian tersebut,  P1.0  dibalik keadaanya dengan instruksi  CPL P1.0 ,  TR1  dikembalikan menjadi 0 (harus dikembalikan sendiri dengan instruksi ini), agar bisa ditunggu lagi sampai menjadi ‘ 1 ’ kembali setelah instruksi  SJMP Ulangi . Frekuensi dari sinyal di  P1.0  sebesar 1 / 16 mikro-detik = 31,25 KHz.
Aplikasi Timer Contoh Penggunaan dalam subrutin MOV TMOD,#01H … … CALL DELAY … … … DELAY: MOV TH0,#HIGH (-50000)  ;SEKITAR 50000 MIKROSEKON MOV TL0,#LOW (-50000)  SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET
LECTURE 7 KOMUNIKASI SERIAL
SERIAL INTERFACE ,[object Object],[object Object]
STANDART SERIAL INTERFACE ,[object Object],[object Object],[object Object]
STANDART SERIAL INTERFACE ,[object Object],[object Object]
STANDART SERIAL INTERFACE ,[object Object],[object Object]
STANDART SERIAL INTERFACE ,[object Object],[object Object],[object Object]
SERIAL REGISTER Register yang digunakan untuk mengatur komunikasi serial terdapat pada Serial Control (SCON)
SERIAL REGISTER Baud rate pada mode 1, 2, dan 3 dapat dilipatgandakan dengan memberi nilai ‘1’ pada SMOD (dalam SFR PCON)
SERIAL REGISTER
SERIAL REGISTER -  REN  REN harus diberi nilai ‘1’ untuk mengaktifkan penerimaan data. Jika REN diberi nilai ‘0’, maka tidak akan ada penerimaan data.  -  TB8  TB8 adalah bit ke-9 yang dikirimkan dalam mode 2 atau 3. Nilai bit ini diatur oleh program user.  -  RB8  RB8 adalah bit ke-9 yang diterima dalam mode 2 atau 3. Pada mode 1, RB8 adalah stop bit yang diterima. Pada mode 0, RB8 tidak digunakan.
MODE OPERASI ,[object Object],[object Object],[object Object],[object Object]
MODE OPERASI ,[object Object],[object Object],[object Object]
MODE OPERASI ,[object Object],[object Object],[object Object]
MODE OPERASI ,[object Object],[object Object],[object Object],[object Object]
MODE OPERASI ,[object Object],[object Object],[object Object]
BAUD RATE ,[object Object],[object Object],[object Object]
BAUD RATE Sedangkan  baud rate  untuk mode 2 memiliki 2 variasi tergantung dari kondisi SMOD.
BAUD RATE Baud rate untuk mode 1 dan 3 dihasilkan oleh Timer 1. Pengaturan baudrate  untuk mode 1 dan 3 dapat dilakukan  dengan cara mengubah nilai SMOD,TMOD, dan TH1.  Umumnya  Timer  1 dioperasikan pada mode 2 (8-bit Auto Reload)
BAUD RATE ,[object Object],[object Object],[object Object],[object Object]
BAUD RATE Misalkan baud rate yang diinginkan adalah 19200 bps dengan frekuensi osilator 11,0592 MHz
BAUD RATE Untuk mendapatkan  baud rate  yang lambat,  user  dapat mengoperasikan Timer 1 pada mode 1 dengan rumus
INISIALISASI SERIAL Proses inisialisasi bertujuan untuk menentukan mode komunikasi serial dan baud rate yang digunakan.  Register yang harus diatur terlebih dahulu meliputi:  1.  SCON  Langkah pertama adalah menentukan mode yang akan digunakan (mode 0, 1, 2, atau 3), kemampuan menerima data, dan nilai bit ke-9. Misalnya mode yang digunakan adalah mode 1 dengan kemampuan menerima data namun tanpa komunikasi multiprosesor, maka instruksinya adalah sebagai  berikut:  MOV SCON, #01010000b  atau  MOV SCON, #50h  atau  SETB SM1  SETB REN
INISIALISASI SERIAL 2.  TMOD, TH1 dan/atau TL1, PCON, dan TCON  Jika komunikasi serial digunakan dalam mode 1 atau 3, maka langkah berikutnya adalah menentukan baud rate.  Misalnya  Timer/Counter 1 digunakan sebagai  timer dalam mode 2 untuk membangkitkan  baud rate  19200 bps, maka instruksinya adalah sebagai berikut:  MOV TMOD, #00100000b  MOV TH1, #0FDh  MOV PCON, #10000000b  MOV TCON, #01000000b  atau  MOV TMOD, #20h  MOV TH1, #0FDh  MOV PCON, #80h  MOV TCON, #40h  atau  MOV TMOD, #20h  MOV TH1, #0FDh  MOV PCON, #80h  SETB TR1
INISIALISASI SERIAL 3.  IE dan/atau IP  Jika komunikasi serial yang diprogram akan digunakan sebagai sumber interrupt, maka IE dan/atau IP juga harus diatur.  Misalnya komunikasi serial digunakan sebagai sumber  interrupt dengan prioritas tinggi, maka instruksinya adalah sebagai berikut:  MOV IP, #00010000b  MOV IE, #10010000b  atau  MOV IP, #10h  MOV IE, #90h  atau  SETB PS  SETB ES  SETB EA
LECTURE 8 INTERUPSI
PENGANTAR ,[object Object],[object Object],[object Object],[object Object]
PENGANTAR ,[object Object],[object Object],[object Object]
PENGANTAR ,[object Object],[object Object]
PENGANTAR ,[object Object],[object Object]
TEORI DASAR ,[object Object],[object Object]
BAGAN KERJA INTERUPSI ,[object Object],[object Object],[object Object]
BAGAN KERJA INTERUPSI ,[object Object]
BAGAN KERJA INTERUPSI ,[object Object],[object Object],[object Object]
BAGAN KERJA INTERUPSI ,[object Object]
SUMBER INTERUPSI MCS51
SUMBER INTERUPSI MCS51 ,[object Object],[object Object],[object Object],[object Object],[object Object]
SUMBER INTERUPSI MCS51 ,[object Object],[object Object],[object Object]
SUMBER INTERUPSI MCS51 Kalau bit  IT0  (atau  IT1 ) =’ 0 ’ maka bit  IE0  (atau  IE1 ) dalam  TCON  menjadi ‘ 1 ’ saat kaki  INT0 =’ 0 ’. 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 .
SUMBER INTERUPSI MCS51 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!
SUMBER INTERUPSI MCS51 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.
SUMBER INTERUPSI MCS51 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 ’.
SUMBER INTERUPSI MCS51 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.
SUMBER INTERUPSI MCS51 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 bisadiajukan 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-aktif-kan atau di-nonaktif-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.  Disamping itu ada pula bit  EA  yang bisa dipakai untuk mengatur semua sumber interupsi sekaligus.
Mengaktifkan Interupsi 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 .
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 instruksi  LCALL  yang diaktipkan secara perangkat keras.
Vektor Interupsi Vektor interupsi untuk interupsi eksternal  INT0  adalah  0003h , untuk interupsi timer 0 adalah  000Bh   Interupsi ekternal  INT1  adalah  0013h 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.
LECTURE 9 INTERFACING DENGAN  LCD KARAKTER
INTERFACING DENGAN  LCD KARAKTER
INTERFACING DENGAN  LCD KARAKTER RS=P1.0 RW=P1.1 E=P1.2 DB7=P2.7 DB6=P2.6 DB5=P2.5 DB4=P2.4
INTERFACING DENGAN  LCD KARAKTER Inisialisasi dan file pendukung LCD : hd44780.asm bagian variabel rs bit p1.0 rw bit p1.1 e bit p1.2 rkursor equ 14h lkursor equ 10h rdisplay equ 1fh ldisplay equ 18h homelcd equ 02h barisdua equ 0c0h display_clear equ 01h display_off equ 08h cursor_on equ 0eh cursor_off equ 0ch blink_on equ 0fh blink_off equ 0eh set4bit equ 28h set8bit equ 38h
INTERFACING DENGAN  LCD KARAKTER DELAY1S: mov r0,#100 ss: call delay5ms djnz r0,ss RET delay5ms: MOV TMOD,#01H MOV TH0,#HIGH(-5000) MOV TL0,#LOW(-5000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET
INTERFACING DENGAN  LCD KARAKTER baris2_lcd: mov a,#barisdua call kirim_perintah ret baris1_lcd: mov a,#homelcd call kirim_perintah ret
INTERFACING DENGAN  LCD KARAKTER geser_display_kanan: mov a,#rdisplay call kirim_perintah ret geser_display_kiri: mov a,#ldisplay call kirim_perintah ret geser_kursor_kiri: mov a,#lkursor call kirim_perintah ret geser_kursor_kanan: mov a,#rkursor call kirim_perintah ret
INTERFACING DENGAN  LCD KARAKTER baca_register: mov p2,#0ffh ;jadikan p2 sebagai input setb rw clr rs setb e mov a,p2 anl a,#0f0h clr e push acc setb e mov a,p2 anl a,#0f0h clr e swap a pop b add a,b clr rw ret
INTERFACING DENGAN  LCD KARAKTER periksa_busy: call baca_register jb acc.7,periksa_busy ret kirim_data_lcd: setb e mov p2,a clr e ret kirim_karakter: clr rw setb rs call kirim_data_lcd swap a call kirim_data_lcd call periksa_busy ret
INTERFACING DENGAN  LCD KARAKTER kirim_perintah: clr rw clr rs call kirim_data_lcd ;4bit sebanyak 2kali swap a call kirim_data_lcd call periksa_busy ret
INTERFACING DENGAN  LCD KARAKTER init_lcd: setb rs clr e call delay5ms call delay5ms call delay5ms call delay5ms mov a,#30h ;d7='0',d6='0',d5='1',d4='1' call kirim_perintah call delay50us call delay50us mov a,#30h call kirim_perintah mov a,#20h ;send init call kirim_perintah mov a,#28h ;8x5, 2lines d5='0'-->4bit;d3='1'-->2baris,d2='0'-->5x8 call kirim_perintah mov a,#08h ;display off call kirim_perintah mov a,#01h ;display clear call kirim_perintah mov a,#0eh ;display on call kirim_perintah mov a,#06h ;mode increment address call kirim_perintah ret
INTERFACING DENGAN  LCD KARAKTER hapus_layar: mov a,#01h call kirim_perintah ret data_lcd data p2 ;set4bit posisi msb kursor_on: mov a,#cursor_on call kirim_perintah ret kursor_off: mov a,#cursor_off call kirim_perintah ret
INTERFACING DENGAN  LCD KARAKTER posisi_awal_lcd: mov a,#02h ;set ke posisi paling awal call kirim_perintah ret kirim_pesan_lcd: loop_kirim_pesan_lcd: mov a,#0 ;ambil data dr memori yang ditunjuk movc a,@a+dptr cjne a,#0fh,kirim_lcd ;kirim ke lcd selama belum  ;ditemukan 0fh ret kirim_lcd: call kirim_karakter inc dptr ;tunjuk ke memori selanjutnya jmp loop_kirim_pesan_lcd
INTERFACING DENGAN  LCD KARAKTER kirim_pesan_lcd_with_delay: loop_kirim_pesan_lcd_with_delay: mov a,#0 ;ambil data dr memori yang ditunjuk movc a,@a+dptr cjne a,#0fh,kirim_lcd_with_delay ;kirim ke lcd selama belum ditemukan 0fh ret kirim_lcd_with_delay: call kirim_karakter inc dptr ;tunjuk ke memori selanjutnya call delay1s jmp loop_kirim_pesan_lcd_with_delay
INTERFACING DENGAN  LCD KARAKTER ;Contoh Program sederhana menampilkan karakter dan grafis ;Tabel karakter dan file library lcd hd44780 pesanlcd1: db 'Deddy Susilo, ST',0fh pesanlcd2: db '-- NIP: 61546 --',0fh pesanlcd3: db ' Please Wait... ',0fh  pesanlcd4: db '#  SWITCH.COM  #',0fh  pesanlcd5: db '@@-FTEK  UKSW-@@',0fh heart: db 0,10,31,31,14,4,0,0,0fh oke: db 4,0,0eh,0,1fh,0,1fh,0,0fh $include (hd44780.asm)
INTERFACING DENGAN  LCD KARAKTER POLA: mov r1,#40h mov r2,#0 loop: mov a,r1 call kirim_perintah mov dptr,#heart mov a,r2 movc a,@a+dptr inc r2 inc r1 cjne a,#0fh,kirim_lcd_grafik mov a,#02h call kirim_perintah mov a,#0 call kirim_karakter call delay1s jmp exit kirim_lcd_grafik: call kirim_karakter jmp loop exit: ret
INTERFACING DENGAN  LCD KARAKTER call init_lcd mov dptr,#pesanlcd1 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd2 call kirim_pesan_lcd call delay1s call delay1s call delay1s call hapus_layar mov dptr,#pesanlcd3 call kirim_pesan_lcd_with_delay call delay1s
INTERFACING DENGAN  LCD KARAKTER call hapus_layar call baris2_lcd call kursor_off mov dptr,#pesanlcd4 call kirim_pesan_lcd call delay1s call hapus_layar call delay1s call baris1_lcd mov dptr,#pesanlcd4 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd5 call kirim_pesan_lcd call delay1s call delay1s call hapus_layar call delay1s call pola
INTERFACING DENGAN  LCD KARAKTER call init_lcd mov dptr,#pesanlcd1 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd2 call kirim_pesan_lcd call delay1s call delay1s call delay1s
INTERFACING DENGAN  LCD KARAKTER call hapus_layar mov dptr,#pesanlcd3 call kirim_pesan_lcd_with_delay call delay1s
INTERFACING DENGAN  LCD KARAKTER call hapus_layar call baris2_lcd call kursor_off mov dptr,#pesanlcd4 call kirim_pesan_lcd call delay1s
INTERFACING DENGAN  LCD KARAKTER call hapus_layar call delay1s call baris1_lcd mov dptr,#pesanlcd4 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd5 call kirim_pesan_lcd call delay1s call delay1s
INTERFACING DENGAN  LCD KARAKTER call hapus_layar call delay1s call pola
LECTURE 10 INTERFACING DENGAN  LCD  GRAFIK
Koneksi LCD dengan Mikrokontroler
Spesifikasi Teknis
Spesifikasi Teknis
Spesifikasi Teknis
Spesifikasi Teknis
Spesifikasi Teknis
Spesifikasi Teknis
Spesifikasi Teknis
Spesifikasi Teknis
Spesifikasi Teknis
Spesifikasi Teknis
Spesifikasi Teknis
Spesifikasi Teknis
Pengalamatan Pada Layar LCD
Command
Command
Command
Start Line
Pembagian Daerah Frekuensi Pada Layar 16000 12500 10000 8000 Halaman 7 6300 5000 4000 3150 Halaman 6 2500 2000 1600 1250 Halaman 5 1000 800 630 500 Halaman 4 400 315 250 200 Halaman 3 160 125 100 80 Halaman 2 63 50 40 31,5 Halaman 1 Untuk skala amplitudo sinyal Halaman 0 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Rutin Hapus Layar
Konversi dan nilai untuk Layar LCD2
Diagram Alir Menggambar Data Hasil Pengukuran di Layar LCD
Contoh Hasil di Layar Sinyal Uji 1kHz Sinus Sinyal Uji 125 Hz & 1kHz Sinus
Contoh Hasil di Layar Sinyal Uji Derau Putih Sinyal Uji Derau Merah Jambu
Contoh Hasil di Layar Sinyal Uji Derau Putih Sinyal Uji Derau Merah Jambu
LECTURE 11 EKSPANSI SISTEM MCS51 DENGAN DAC, ADC, SIPO, PISO, MUX ANALOG, LATCHES, PPI
LECTURE 12 Sensor-Sensor +  IC Special Function
Robot Sensing and Sensors
References ,[object Object],[object Object]
Some websites ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
What is Sensing ? ,[object Object],[object Object],[object Object]
Human sensing and organs ,[object Object],[object Object],[object Object],[object Object],[object Object],Counterpart?
Extended ranges and modalities ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Transduction to electronics ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Sensor Fusion and Integration ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Sensor Fusion ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
General Processing Fusion Interpretation Sensing Perception Preprocessing Preprocessing Preprocessing Preprocessing Sensor Sensor Sensor Sensor
Preprocessing ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Sensor/Data Fusion ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Interpretation ,[object Object],[object Object],[object Object]
Classification of  Sensors ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Proprioceptive Sensors ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Touch Sensors ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Sensors Based on Sound ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Robotics Sensor Based on EM Spectrum
Electromagnetic Spectrum Visible Spectrum 700 nm 400 nm
Sensors Based on EM Spectrum ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Sensors Based on EM Spectrum ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
General Classification (1)
General Classification (2)
Sensors Used in Robot
Solar Cell Digital Infrared Ranging Compass Touch Switch Pressure Switch Limit Switch Magnetic Reed Switch Magnetic Sensor Miniature Polaroid Sensor Polaroid Sensor Board Piezo Ultrasonic Transducers Pyroelectric Detector Thermistor Gas Sensor Gieger-Muller Radiation Sensor Piezo Bend Sensor Resistive Bend Sensors Mechanical Tilt Sensors Pendulum Resistive  Tilt Sensors CDS Cell  Resistive Light Sensor Hall Effect Magnetic Field Sensors Compass IRDA Transceiver IR Amplifier Sensor IR Modulator Receiver Lite-On IR  Remote Receiver Radio Shack Remote Receiver IR Sensor w/lens Gyro Accelerometer IR Reflection Sensor IR Pin  Diode UV Detector Metal Detector
Sensors Used in Robot ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Resistive Sensors Resistive Bend Sensor Photocell Potentiometer R is small when brightly illuminated
Applications Sensor ,[object Object],[object Object],[object Object],Sensors Sensor
Inputs for Resistive Sensors Voltage divider:  You have two resisters, one is fixed and the other varies, as well as a constant voltage V micro R1 R2 Vsense Comparator:  If voltage at + is greater than at -, digital high out A/D converter Digital I/O + - Binary  Threshold V
Infrared Sensors ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Intensity Based Infrared   ,[object Object],[object Object],[object Object],time voltage time voltage Increase in ambient light  raises DC bias Break-Beam sensor Reflective Sensor
IR Reflective Sensors ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Modulated Infrared ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Negative true logic: Detect = 0v No detect = 5v
IR Proximity Sensors ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],limiter demodulator bandpass filter amplifier comparator integrator
IR Distance Sensors ,[object Object],[object Object],Location of the spot on the detector corresponds to the distance to the target surface, Optics to covert horizontal distance to vertical distance Modulated IR light
IR Distance Sensors ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Basic Navigation Techniques ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Dead Reckoning Cause of unbounded accumulation error: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Sensors used in navigation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Robotics Sensor and Aktuator Example
Incremental Optical Encoders ,[object Object],- calibration ?   - direction ?   - resolution ?   grating light emitter light sensor decode circuitry
Quiz 2: How could you augment a grating-based (relative) encoder in order to detect the  direction  of rotation? light emitter/detector Quiz 1: If there are 100 lines in the grating, what is the smallest detectable change in motor-shaft angle? Incremental Optical Encoders
[object Object],grating light emitter light sensor decode circuitry A B A B A leads B - calibration ?   - direction ?   - resolution ?   Incremental Optical Encoders
Incremental Optical Encoders - direction   - resolution   grating light emitter light sensor Decode circuitry ,[object Object],[object Object],[object Object],A B A leads B
Incremental Optical Encoders ,[object Object],Encoder pulse and motor direction A B A leads B
Absolute Optical Encoders Gray Code ,[object Object],[object Object],[object Object],000 001 011 010 110 111 101 100 000 001 010 011 100 101 110 111 Binary
Other Odometry Sensors ,[object Object],[object Object],[object Object],It has two stator windings positioned at 90 degrees. The output voltage is proportional to the sine or cosine function of the rotor's angle. The rotor is made up of a third winding, winding C
Range Finder (Ultrasonic, Laser)
Range Finder ,[object Object],[object Object]
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new

More Related Content

What's hot

Mikroprosesor &amp; mikrokomputer
Mikroprosesor &amp; mikrokomputerMikroprosesor &amp; mikrokomputer
Mikroprosesor &amp; mikrokomputer
agus ismangil
 
Bab vi mikrokontroler
Bab vi mikrokontrolerBab vi mikrokontroler
Bab vi mikrokontroler
Ikka Utamy
 
Catatan2 embedded sys, arduino, raspberry, iot, home automation
Catatan2 embedded sys, arduino, raspberry, iot, home automationCatatan2 embedded sys, arduino, raspberry, iot, home automation
Catatan2 embedded sys, arduino, raspberry, iot, home automation
Wawas P
 
Presentasi makalah interface & peripheral
Presentasi makalah interface & peripheralPresentasi makalah interface & peripheral
Presentasi makalah interface & peripheral
yohanesjati
 

What's hot (20)

Mikroprosesor &amp; mikrokomputer
Mikroprosesor &amp; mikrokomputerMikroprosesor &amp; mikrokomputer
Mikroprosesor &amp; mikrokomputer
 
Konsep mikrokontroler
Konsep mikrokontrolerKonsep mikrokontroler
Konsep mikrokontroler
 
Pertemuan 2.1 perkembangan teknis
Pertemuan 2.1 perkembangan teknisPertemuan 2.1 perkembangan teknis
Pertemuan 2.1 perkembangan teknis
 
K14. mikrokontroler
K14. mikrokontrolerK14. mikrokontroler
K14. mikrokontroler
 
Presentasi dan video pembelajaran Mikrokontroller
Presentasi dan video pembelajaran MikrokontrollerPresentasi dan video pembelajaran Mikrokontroller
Presentasi dan video pembelajaran Mikrokontroller
 
Laporan Joystick
Laporan JoystickLaporan Joystick
Laporan Joystick
 
Bahan ajar
Bahan ajarBahan ajar
Bahan ajar
 
Bab vi mikrokontroler
Bab vi mikrokontrolerBab vi mikrokontroler
Bab vi mikrokontroler
 
Catatan2 embedded sys, arduino, raspberry, iot, home automation
Catatan2 embedded sys, arduino, raspberry, iot, home automationCatatan2 embedded sys, arduino, raspberry, iot, home automation
Catatan2 embedded sys, arduino, raspberry, iot, home automation
 
Dasar dasar mikrokontroler
Dasar dasar mikrokontrolerDasar dasar mikrokontroler
Dasar dasar mikrokontroler
 
Bab ii atmega8
Bab ii atmega8Bab ii atmega8
Bab ii atmega8
 
Mikroprosesor dan Mikrokontroler
Mikroprosesor dan MikrokontrolerMikroprosesor dan Mikrokontroler
Mikroprosesor dan Mikrokontroler
 
Bab 5 Pengolahan Input Output
Bab 5  Pengolahan Input OutputBab 5  Pengolahan Input Output
Bab 5 Pengolahan Input Output
 
Membuat stopwatch menggunakan mikrokontroler atmega16 by muhammad kennedy gin...
Membuat stopwatch menggunakan mikrokontroler atmega16 by muhammad kennedy gin...Membuat stopwatch menggunakan mikrokontroler atmega16 by muhammad kennedy gin...
Membuat stopwatch menggunakan mikrokontroler atmega16 by muhammad kennedy gin...
 
Pendahuluan plc
Pendahuluan plcPendahuluan plc
Pendahuluan plc
 
Pertemuan 2 & 3 dasar & arsitektur
Pertemuan 2 & 3 dasar & arsitekturPertemuan 2 & 3 dasar & arsitektur
Pertemuan 2 & 3 dasar & arsitektur
 
Modul dasar-mikrokontroler-bab-ii-kebutuhan-hardware-at mega16
Modul dasar-mikrokontroler-bab-ii-kebutuhan-hardware-at mega16Modul dasar-mikrokontroler-bab-ii-kebutuhan-hardware-at mega16
Modul dasar-mikrokontroler-bab-ii-kebutuhan-hardware-at mega16
 
Makalah mikroprosesor jam digital dengan LCD16X2
Makalah mikroprosesor jam digital dengan LCD16X2 Makalah mikroprosesor jam digital dengan LCD16X2
Makalah mikroprosesor jam digital dengan LCD16X2
 
Presentasi makalah interface & peripheral
Presentasi makalah interface & peripheralPresentasi makalah interface & peripheral
Presentasi makalah interface & peripheral
 
Macam dan jenis mikrokontroler populer komputer terapan jaringan
Macam dan jenis mikrokontroler populer   komputer terapan jaringanMacam dan jenis mikrokontroler populer   komputer terapan jaringan
Macam dan jenis mikrokontroler populer komputer terapan jaringan
 

Similar to M I C R O C O N T R O L L E R 2009new

Menerapkan dasar dasar mikrokontroler
Menerapkan dasar dasar mikrokontrolerMenerapkan dasar dasar mikrokontroler
Menerapkan dasar dasar mikrokontroler
gixcznow
 
PS2 Mouse Interfacing dengan pemrograman bahasa C
PS2 Mouse Interfacing dengan pemrograman bahasa CPS2 Mouse Interfacing dengan pemrograman bahasa C
PS2 Mouse Interfacing dengan pemrograman bahasa C
Josephine Prasetya
 
Pengantar sistem teknologi informasi (tugas 1)
Pengantar sistem teknologi informasi (tugas 1)Pengantar sistem teknologi informasi (tugas 1)
Pengantar sistem teknologi informasi (tugas 1)
Yudi WindyatmiKabilly
 
alat pencampur minuman berbasis PLC
alat pencampur minuman berbasis PLCalat pencampur minuman berbasis PLC
alat pencampur minuman berbasis PLC
5223127190
 
Makalah mikroprosesor
Makalah mikroprosesorMakalah mikroprosesor
Makalah mikroprosesor
Aip Goper
 

Similar to M I C R O C O N T R O L L E R 2009new (20)

Sensor suhu LM 35
Sensor suhu LM 35Sensor suhu LM 35
Sensor suhu LM 35
 
PROYEK1
PROYEK1PROYEK1
PROYEK1
 
Tutorial at89s51
Tutorial at89s51Tutorial at89s51
Tutorial at89s51
 
Mikrokontroler
MikrokontrolerMikrokontroler
Mikrokontroler
 
PENGERTIAN MIKROKONTROLLER.pptx
PENGERTIAN MIKROKONTROLLER.pptxPENGERTIAN MIKROKONTROLLER.pptx
PENGERTIAN MIKROKONTROLLER.pptx
 
Menerapkan dasar dasar mikrokontroler
Menerapkan dasar dasar mikrokontrolerMenerapkan dasar dasar mikrokontroler
Menerapkan dasar dasar mikrokontroler
 
arsitektur mikrokontroler oertemuan ke 7
arsitektur mikrokontroler oertemuan ke 7arsitektur mikrokontroler oertemuan ke 7
arsitektur mikrokontroler oertemuan ke 7
 
K14. mikrokontroler
K14. mikrokontrolerK14. mikrokontroler
K14. mikrokontroler
 
Evolusi dan Kinerja Komputer
Evolusi dan Kinerja KomputerEvolusi dan Kinerja Komputer
Evolusi dan Kinerja Komputer
 
Pengantar Sistem Mikroprosesor.ppt
Pengantar Sistem Mikroprosesor.pptPengantar Sistem Mikroprosesor.ppt
Pengantar Sistem Mikroprosesor.ppt
 
PS2 Mouse Interfacing dengan pemrograman bahasa C
PS2 Mouse Interfacing dengan pemrograman bahasa CPS2 Mouse Interfacing dengan pemrograman bahasa C
PS2 Mouse Interfacing dengan pemrograman bahasa C
 
Pengantar teknologi informasi
Pengantar teknologi informasiPengantar teknologi informasi
Pengantar teknologi informasi
 
Pengantar sistem teknologi informasi (tugas 1)
Pengantar sistem teknologi informasi (tugas 1)Pengantar sistem teknologi informasi (tugas 1)
Pengantar sistem teknologi informasi (tugas 1)
 
Komputer terapan
Komputer terapanKomputer terapan
Komputer terapan
 
Kurikulum plc
Kurikulum plc Kurikulum plc
Kurikulum plc
 
Kertas penerangan c02 Microprcessor
Kertas penerangan c02 MicroprcessorKertas penerangan c02 Microprcessor
Kertas penerangan c02 Microprcessor
 
Traffic Light Berbasis ATMega32A
Traffic Light Berbasis ATMega32ATraffic Light Berbasis ATMega32A
Traffic Light Berbasis ATMega32A
 
alat pencampur minuman berbasis PLC
alat pencampur minuman berbasis PLCalat pencampur minuman berbasis PLC
alat pencampur minuman berbasis PLC
 
Makalah mikroprosesor
Makalah mikroprosesorMakalah mikroprosesor
Makalah mikroprosesor
 
Pertemuan 3 Mikroprosessor dan Mikrokontroler
Pertemuan 3 Mikroprosessor dan MikrokontrolerPertemuan 3 Mikroprosessor dan Mikrokontroler
Pertemuan 3 Mikroprosessor dan Mikrokontroler
 

M I C R O C O N T R O L L E R 2009new

  • 1. Deddy Susilo, S.T. 61546 EE-632 MICROCONTROLLER
  • 2. Silabus (3 sks) - 16 minggu 1. Sekilas ttg Mikroprosesor, Mikrokomputer,Mikrokontroler 2. Arsitektur Mikrokontoler MCS-51 3. Pemrograman Bahasa Assembly untuk MCS-51 4. Timer dan Counter 5. Komunikasi Serial 6. Interupsi 7. Ekspansi Sistem MCS-51 dengan DAC, ADC, SIPO, PISO, Mux Analog, Latches, PPI 8. Interfacing dengan LCD karakter dan Grafik, driver motor
  • 3. Silabus (3 sks) - 16 minggu 9. Sensor-Sensor + IC Special Func 10. Protokol I2C (I square C) 11. Protokol I2S (I square S) 12. Protokol SPI (Serial Paralel Interface) 13. Penerapan Kontrol PID 14. Penerapan Kontrol Fuzzy 15. Arsitektur uC AVR + AVR STUDIO 16. Pemrograman Dasar AVR 17. Menggunakan Code Vision AVR
  • 4. silabus (3 sks) Bobot Penilaian : TTS : 30% TAS : 40% LAB : 30% - 12 x Praktikum ( @ 1,5% ) - 1 x Tes Praktek (Pengali Praktikum) - Proyek 12 % Kuliah : Selasa 11-13 (F-212) Rabu 14-16 (E-138)
  • 5. LECTURE 1 ARSITEKTUR MIKROKONTROLER MCS51 (PART 1)
  • 6. MIKROPROSESOR ? MIKROKOMPUTER ? MIKROKONTROLER ?
  • 7. MIKROPROSESOR ? sebuah IC ( Integrated Circuit ) yang digunakan sebagai otak/pengolah utama dalam sebuah sistem komputer
  • 8. MIKROPROSESOR ? 1971 oleh Intel Corp, yaitu Mikroprosesor Intel 4004 yang mempunyai arsitektur 4 bit
  • 9. MIKROPROSESOR ? 8080(berarsitektur 8 bit), 8085, dan kemudian 8086 (berarsitektur 16 bit)
  • 10. MIKROPROSESOR ? Motorola dengan M6800 dan Zilog dengan Z80 nya
  • 11. MIKROKOMPUTER ? sebuah mikroprosesor merupakan CPU (unit pengolah pusat) sistem 8
  • 12. MIKROKOMPUTER ? pada PC, mikroprosesor digunakan sebagai pengolah utama pada semua kerja komputer, yaitu untuk menjalankan perangkat lunak, memecahkan persoalan-persoalan aritmatika, mengendalikan proses Input/Output ,
  • 14. MIKROKOMPUTER ? mikroprosesor dengan piranti pendukungnya dikatakan membentuk suatu mikrokomputer (mikrokomputer = sistem komputer yang menggunakan sebuah mikroprosesor sebagai CPUnya)
  • 15. MIKROKONTROLER ? CPU dan peralatan pendukungnya berada pada IC yang sama, serta digunakan untuk penerapan sistem kendali, maka IC tersebut disebut sebagai sebuah mikrokontroler
  • 16. MIKROPROSESOR DAN MIKROKONTROLER Mikroprosesor dan mikrokontroler mulai banyak digunakan dalam berbagai aplikasi elektronika, antara lain di bidang otomatisasi industri, otomotif, pengukuran, telekomunikasi, penerbangan, dsb.
  • 17. MIKROPROSESOR DAN MIKROKONTROLER Keuntungan dari penggunaaan mikroprosesor dan mikrokontroler adalah sistem yang diciptakan menjadi sangat fleksibel karena modifikasi dan pengembangan cukup dilakukan pada perangkat lunaknya.
  • 18. STRUKTUR SISTEM MIKROKOMPUTER Dengan penambahan beberapa piranti pendukung (memori, piranti Input/Output, dsb), sebuah mikroprosesor dapat diubah menjadi sebuah mikrokomputer
  • 19. BAGIAN BAGIAN MIKROKOMPUTER Mikroprosesor sebagai unit pengolah pusat keseluruhan sistem, yaitu untuk menjalankan perangkat lunak yang disimpan pada memori, mengatur jalur pengiriman data dari/ke piranti-piranti (memori,I/O, dsb), mengolah data-data yang ada pada perangkat lunak, dsb. 16
  • 20. BAGIAN BAGIAN MIKROKOMPUTER ROM berguna untuk menyimpan perangkat lunak yang akan dijalankan oleh mikroprosesor.
  • 21. BAGIAN BAGIAN MIKROKOMPUTER RAM berguna sebagai tempat penyimpanan data sementara yang mungkin diperlukan oleh mikroprosesor sewaktu menjalankan perangkat lunak. Misalnya digunakan untuk menyimpan nilai-nilai pada variabel.
  • 22. BAGIAN BAGIAN MIKROKOMPUTER Piranti I/O (Input/Output) berguna untuk mengkoneksikan sistem dengan dunia luar  untuk mengirimkan dan menerima data dari/ke luar sistem. pada PC, salah satu piranti I/O bertugas menerima masukan data dari keyboard, serta piranti I/O yang lain bertugas mengirimkan data ke printer untuk dicetak, dsb.
  • 23. BAGIAN BAGIAN MIKROKOMPUTER Clock (denyut)  menyinkronkan kerja semua piranti dalam sistem. Sumber sinyal dari Clock biasanya didapatkan dari osilator kristal.
  • 24. KESIMPULAN 1 IC mikroprosesor tak dapat berdiri sendiri, karena kerjanya sangatlah bergantung dari piranti2 pendukung lainnya. Misal tanpa adanya piranti Input/Output akan membuat sistem tak dapat berinteraksi dengan dunia luar. Atau misalnya tanpa adanya RAM, mikroprosesor tidak dapat bekerja dan mengolah data-data pada variabel yang diinstruksikan oleh perangkat lunak.
  • 25. KESIMPULAN 2 Akibat dari kebergantungannya yang besar pada piranti2 pendukung  mikroprosesor menjadi kurang efisien. Perusahaan2 semikonduktor menciptakan sebuah IC mikroprosesor jenis lain yang didalamnya sudah terdapat piranti-piranti pendukungnya  mikrokontroler. ‘mikrokomputer dalam sebuah chip’ ( single chip microcomputer ).
  • 26. KESIMPULAN 3 Meski kurang efisien dibanding mikrokontroler, untuk penggunaan tertentu mikroprosesor tetap mempunyai kelebihan2, antara lain lebih cepat dan lebih upgradable (karena semua piranti tambahan diletakkan di luar sehingga bisa diganti).
  • 27. BEBERAPA JENIS MIKROPROSESOR DAN MIKROKONTROLER 24
  • 28. ARSITEKTUR MIKROKONTROLER KELUARGA MCS-51 Mikrokontroler 8051  Intel mikrokontroler  populer, banyak perusahaan2 semikonduktor lain yang membuat ‘clone’ -nya. Perusahaan tsb antara lain adalah Atmel, Siemens, AMD, Philips, dsb. banyak ‘clone’ dari 8051, maka terbentuklah keluarga besar mikrokontroler yang mempunyai arsitektur dasar yang sama dengan 8051, yang selanjutnya ‘clone-clone’ tersebut lazim disebut dengan keluarga mikrokontroler MCS-51.
  • 29. LECTURE 2 ARSITEKTUR MIKROKONTROLER MCS51 (PART 2)
  • 30. Fasilitas-Fasilitas Mikrokontroler 8051 • 4K bytes ROM • 128 bytes RAM • Empat buah I/O (Input/Output) port. Masing-masing I/O port terdiri dari 8bit • Dua buah timer/counter. Masing-masing adalah 16bit timer. • Antarmuka ( Interface ) Serial • Ruang pengalamatan memori eksternal untuk kode (program) sebesar 64Kbytes • Ruang pengalamatan memori eksternal untuk data sebesar 64K bytes
  • 31. 3 256 bytes RAM 8KB FLASH EPROM 8952 2 128 bytes RAM 4KB FLASH EPROM 8951 3 256 bytes RAM 8KB EPROM 8752 3 256 bytes RAM 8KB EPROM 8032 3 256 bytes RAM 0KB 8052 2 128 bytes RAM 8KB ROM 8751 2 128 bytes RAM 0KB 8031 2 128 bytes RAM 4KB ROM 8051 Jumlah Timer Memori Data Intenal Memori Program (Kode) Internal Tipe
  • 32. Susunan Pin IC 8051/8031/8751/8951
  • 33.
  • 34.
  • 35. Port 3 pada pin 10-17 adalah port multifungsi, setiap pin dari port 3 mempunyai fungsi-fungsi tersendiri.
  • 36. PSEN (Program Store Enable) pin 29  untuk output sinyal pengontrol pada pengambilan program (kode) jika memakai ROM/EPROM eksternal. Pin PSEN akan mengeluarkan sinyal low selama pengambilan byte program (kode) dari ROM/EPROM. Pin PSEN biasa dihubungkan dengan pin OE (Output Enable) pada IC EPROM. 32
  • 37.
  • 38.
  • 39.
  • 41. Contoh 8951 Development Board Minimum System P0 P1 P2 P3 AT89SXX Vin 1 2 3
  • 42. 1. Ruang alamat memori kode program (code address space)  maksimal 64KB ditempati EEPROM/ROM internal atau bisa juga ditempati oleh IC EEPROM (misalnya 2864) jika diinginkan kode program disimpan dalam EEPROM eksternal. 2. Ruang alamat memori data internal yang dapat dialamati secara langsung  RAM (Random Access Memory) sebanyak 128 byte dan Special Function Register sebanyak 128 byte. RAM internal dan hardware register ini terletak di dalam IC 8951. Sebagian ruang alamat pada RAM internal dapat diakses secara bit (bukan secara byte). Pengalamatan Memori dan Register Pada MCS51 Khususnya AT89S51
  • 43. 3. Ruang alamat memori data eksternal sebanyak maksimal 64KB misalnya 6264. Ruang alamat memori kode program dan ruang alamat memori data eksternal sebenarnya memiliki ruang alamat yang sama (overlap). Ruang alamat memori kode program dan ruang alamat memori data eksternal dialamati dari alamat 0000h sampai FFFFh. Sedangkan memori-data internal dialamati dari alamat 00h sampai FFh. Alamat 00h sampai 7Fh dipakai untuk mengalamati RAM internal dan alamat 80h sampai FFh dipakai untuk mengalamati Special Function Register. Pengalamatan Memori dan Register Pada MCS51 Khususnya AT89S51
  • 44. Pengalamatan Memori dan Register Pada MCS51 Khususnya AT89S51
  • 45. Memori-data nomor 00h sampai 7Fh bisa dipakai sebagai memori penyimpan data biasa, dibagi menjadi 3 bagian:  Alamat memori 00h sampai 18h selain sebagai memori-data biasa, bisa pula dipakai sebagai Register Serba Guna ( General Purpose Register ).  Alamat memori 20h sampai 2Fh selain sebagai memori-data biasa, bisa dipakai untuk menyimpan informasi dalam level bit .  Alamat memori 30h sampai 7Fh (sebanyak 80 byte) merupakan memori-data biasa, bisa dipakai untuk menyimpan data maupun dipakai sebagai Stack. Pengalamatan Memori dan Register Pada MCS51 Khususnya AT89S51
  • 46. Menempati alamat memori-data 00h sampai 18h (32 byte)  4 Kelompok Register ( Register Bank ), 8 byte memori dari masing2 Kelompok  Register 0 , .. Register 7 (R0, R1, R2, R3, R4, R5, R6 dan R7). Penulisan program memori2 ini  disebut R0, R1, R2, R3, R4, R5, R6 dan R7, tidak lagi dengan nomor memori Pengertian ini bisa diperjelas dengan contoh 2 instruksi berikut : MOV A,04h (isi di alamat 04h  Akumulator) MOV A,R4 (isi R4  Akumulator) Penerjemahan ke kode mesin, instruksi pertama dirubah menjadi E5 04 (heksadesimal) dan instruksi kedua menjadi E6 (heksadesimal), jadi instruksi kedua lebih sederhana dari instruksi pertama. Register Serba Guna ( General Purpose Register )
  • 47. Khusus Register 0 dan Register 1 (R0 dan R1) masih punya mempunyai kemampuan lain  register penampung alamat yang dipakai dalam pengaksesan memori secara tidak langsung ( indirect memori addressing ) Memori level Bit ( Memori-data internal 20h sampai 2Fh) Setiap byte memori di daerah ini bisa dipakai menampung 8 bit informasi yang masing-masing dinomori tersendiri, dengan demikian dari 16 byte memori yang ada bisa dipakai untuk menyimpan 128 bit (16 x 8 bit) yang dialamati dengan alamat 00h sampai 7Fh. Informasi dalam level bit tersebut masing-masing bisa di-‘1’-kan, di - ‘0’- kan dengan instruksi SETB dan CLR. Register Serba Guna ( General Purpose Register )
  • 48. Instruksi SETB 00h  memori-bit alamat 0h menjadi ‘1’ = membuat bit nomor 0 dari memori-data pada alamat 20h menjadi ‘1’  bit-bit lain memori 20h tidak berubah nilai. Instruksi CLR 7Fh  memori-bit alamat 7Fh menjadi ‘0’ = membuat bit nomor 7 dari memori-data pada alamat 2Fh menjadi ‘0’  bit-bit lain memori 2Fh tidak berubah nilai. MOV 21h,#0Fh = SETB 08h SETB 09h SETB 0Ah SETB 0Bh CLR 0Ch CLR 0Dh CLR 0Eh CLR 0Fh Register Serba Guna ( General Purpose Register )
  • 49. Special Function Register (SFR)  satu daerah RAM dalam IC keluarga MCS51  untuk mengatur perilakunya dalam hal-hal khusus, misalnya tempat untuk berhubungan dengan port paralel P1 atau P3, dan sarana input/output lainnya, tapi tidak umum dipakai untuk menyimpan data seperti layaknya memori-data. Penulisan program SFR diperlakukan persis sama dengan memori-data. Untuk mengisi memori-data pada alamat 60h dengan bilangan 0Fh, instruksi  MOV 60h,#0Fh Register Khusus (SFR - Special Function Register )
  • 50. Sedangkan untuk menyimpan 0Fh ke Port 1 yang di SFR menempati memori-data pada alamat 90h, instruksi yang dipergunakan adalah : MOV 90h,#0Fh Mengakses memori-data ada dua cara, yakni - langsung ( direct memory addressing) -tidak langsung ( indirect memory addressing ) lewat bantuan R0 dan R1. Tapi untuk SFR hanya bisa dipakai penyebutan nomor memori secara langsung ( direct memory addressing ) saja. Register Khusus (SFR - Special Function Register )
  • 51.
  • 52. Dalam mikroprosesor/mikrokontroler yang lain, register-register dasar biasanya ditempatkan ditempat tersendiri dalam inti prosesor  MCS51 register-register itu ditempatkan secara terpisah. 􀁸 Program Counter ditempatkan ditempat tersendiri di dalam inti prosesor 􀁸 Register Serba Guna R0..R7 ditempatkan di salah satu bagian dari memori-data internal 􀁸 Register lainnya ditempatkan dalam Special Function Register (SFR). Register Dasar MCS51
  • 54.
  • 55. LECTURE 3 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 1)
  • 56.
  • 57.
  • 58. Register Dasar MCS51 Program Status Word Program Status Word (PSW) berfungsi mencatat kondisi prosesor setelah melaksanakan instruksi. Pembahasan tentang PSW secara rinci akan dilakukan dibagian lain. Register B Merupakan register dengan kapasitas 8 bit, merupakan register pembantu Akumulator saat menjalankan instruksi perkalian dan pembagian.
  • 59. Register Dasar MCS51 Data Pointer High Byte (DPH) dan Data Pointer Low Byte (DPL) masing-masing merupakan register dengan kapasitas 8 bit, tapi dalam pemakaiannya kedua register ini digabungkan menjadi satu register 16 bit yang dinamakan sebagai Data Pointer Register (DPTR). Sesuai dengan namanya, Register ini dipakai untuk mengalamati data dalam jangkauan yang luas, yaitu terutama untuk mengakses data yang berada pada memori eksternal
  • 60. PEMROGRAMAN ASSEMBLY UNTUK MCS-51 Kode Program (perangkat lunak/ software ) pengendali mikrokontroler disusun dari kumpulan instruksi, instruksi tersebut setara dengan kalimat perintah bahasa manusia yang hanya terdiri atas predikat dan objek. Dengan demikian tahap pertama pembuatan program pengendali mikrokontroler dimulai dengan pengenalan dan pemahaman predikat (kata kerja) dan objek apa saja yang dimiliki mikrokontroler.
  • 61. PEMROGRAMAN ASSEMBLY UNTUK MCS-51 Objek dalam pemrograman mikrokontroler adalah data yang tersimpan di dalam memori,register dan input/output. Sedangkan ‘kata kerja’ yang dikenal pun secara umum dikelompokkan menjadi perintah untuk perpindahan data, arithmetik, operasi logika, pengaturan alur program dan beberapa hal khusus. Kombinasi dari ‘kata kerja’ dan objek itulah yang membentuk perintah pengatur kerja mikrokontroler.
  • 62. PEMROGRAMAN ASSEMBLY UNTUK MCS-51 Instruksi MOV A,7Fh merupakan contoh sebuah instruksi dasar yang sangat spesifik, MOV merupakan ‘kata kerja’ yang memerintahkan peng-copy-an data, merupakan predikat dalam kalimat perintah ini. Sedangkan objeknya adalah data yang di-copy-kan, dalam hal ini adalah data yang ada di dalam alamat memori 7Fh di-copy-kan ke Akumulator A.
  • 63. Pengalamatan Data dalam MCS51 Instruksi MOV A,7Fh merupakan contoh sebuah instruksi dasar yang sangat spesifik, MOV merupakan ‘kata kerja’ yang memerintahkan peng-copy-an data, merupakan predikat dalam kalimat perintah ini. Sedangkan objeknya adalah data yang di-copy-kan, dalam hal ini adalah data yang ada di dalam alamat memori 7Fh di-copy-kan ke Akumulator A.
  • 64. Pengalamatan Data dalam MCS51 Pengalamatan/penempatan data konstan/konstanta ( immediate addressing mode ): Contoh :MOV A,#20h. Contoh instruksi ini mempunyai makna data konstanta 20h (sebagai data konstan ditandai dengan ‘#’) di-copy-kan ke Akumulator A. Pengalamatan data secara langsung ( direct addressing mode )  memindahkan data yang berada di dalam memori  mengakses alamat memori tempat data tersebut berada : MOV A,20h. Contoh instruksi ini mempunyai makna data yang berada di dalam alamat memori 20h di-copy-kan ke Akumulator.
  • 65. Pengalamatan Data dalam MCS51 Pengalamatan data secara tidak langsung ( indirect addressing mode )  menunjuk data yang berada di dalam memori, kalau memori penyimpan data ini letaknya berubah-rubah sehingga alamat memori tidak diakses secara langsung tapi di-‘titip’-kan ke register lain. MOV A,@R0. Register serba guna R0 dipakai untuk mencatat alamat memori, sehingga instruksi ini mempunyai makna memori yang alamatnya tercatat dalam R0 isinya di-copy-kan ke Akumulator A. Tanda ‘@’ dipakai untuk menandai alamat memori disimpan di dalam R0.
  • 66. Pengalamatan Data dalam MCS51 Pengalamatan data dalam register ( register addressing mode ): MOV A,R5. Instruksi ini mempunyai makna data dalam register serba guna R5 di-copykan ke Akumulator A. Instruksi ini membuat register serba guna R0 sampai R7 sebagai tempat penyimpan data yang sangat praktis yang kerjanya sangat cepat.
  • 67.
  • 68. Instruksi-instruksi dalam MCS51 KELOMPOK PENG-COPY-AN DATA Kode dasar  MOV  singkatan dari MOVE  memindahkan  lebih tepat dikatakan peng-copy-an data. MOV A,R7 Akumulator A dan register serba guna R7 berisikan data yang sama, yang asalnya tersimpan di dalam R7. MOV A,20h MOV A,@R1 MOV A,P1 MOV P3,A
  • 69. Instruksi-instruksi dalam MCS51 KELOMPOK ARITMATIK (ADD, ADDC, SUBB, DA, MUL dan DIV) Perintah ADD dan ADDC Isi Akumulator A + ( 1 byte )  hasil di Akumulator . Dalam operasi ini bit Carry (C flag dalam PSW)  penampung limpahan hasil penjumlahan. Jika hasil penjumlahan nilainya lebih besar dari 255, bit Carry  ‘1’, kalau tidak  ‘0’. ADDC sama dengan ADD, hanya saja dalam ADDC nilai bit Carry dalam proses sebelumnya ikut dijumlahkan bersama.
  • 70. Instruksi-instruksi dalam MCS51 Bilangan 1 byte  bilangan konstan, register serba guna, dari memori data yang alamat memorinya dialamati secara langsung maupun tidak langsung ADD A,R0 ; register serba guna ADD A,#23h ; bilangan konstan ADD A,@R0 ; no memori tak langsung ADD A,P1 ; no memori langsung (port 1)
  • 71. Instruksi-instruksi dalam MCS51 Perintah SUBB Isi Akumulator A - bilangan 1 byte dengan nilai bit Carry , hasil pengurangan  Akumulator . Dalam operasi ini bit Carry juga berfungsi sebagai penampung limpahan hasil pengurangan. Jika hasil pengurangan tersebut melimpah (nilainya kurang dari 0) bit Carry  ‘1’, tidak bit Carry  ‘0’. SUBB A,R0 ; A = A - R0 - C SUBB A,#23h ; A = A – 23H SUBB A,@R1 SUBB A,P0
  • 72. Instruksi-instruksi dalam MCS51 Perintah DA Perintah DA ( Decimal Adjust ) dipakai setelah perintah ADD; ADDC atau SUBB, dipakai untuk merubah nilai biner 8 bit yang tersimpan dalam Akumulator menjadi 2 buah bilangan desimal yang masing-masing terdiri dari nilai biner 4 bit. DA A
  • 73. Instruksi-instruksi dalam MCS51 Perintah MUL AB Bilangan biner 8 bit dalam Akumulator A dikalikan dengan bilangan biner 8 bit dalam register B. Hasil perkalian berupa bilangan biner 16 bit, 8 bit bilangan biner yang bobotnya lebih besar ditampung di register B, sedangkan 8 bit lainnya yang bobotnya lebih kecil ditampung di Akumulator A. Bit OV dalam PSW ( Program Status Word ) dipakai untuk menandai nilai hasil perkalian yang ada dalam register B. Bit OV akan bernilai ‘0’ jika register B bernilai 00h, kalau tidak bit OV bernilai ‘1’. MOV A,#10 MOV B,#20 MUL AB
  • 74. Instruksi-instruksi dalam MCS51 Perintah DIV AB Bilangan biner 8 bit dalam Akumulator A dibagi dengan bilangan biner 8 bit dalam register B. Hasil pembagian berupa bilangan biner 8 bit ditampung di Akumulator , sedangkan sisa pembagian berupa bilangan biner 8 bit ditampung di register B. Bit OV dalam PSW ( Program Status Word ) dipakai untuk menandai nilai sebelum pembagian yang ada dalam register B. Bit OV akan bernilai ‘1’ jika register B asalnya bernilai 00h. MOV A,#10 MOV B,#2 DIV AB
  • 75. Instruksi-instruksi dalam MCS51 KELOMPOK LOGIKA (ANL, ORL dan XRL) Operasi logika yang bisa dilakukan adalah operasi AND (kode operasi ANL), operasi OR  ORL dan operasi Exclusive-OR  XRL ANL A,#01111110  bit 0 sampai 7 dari Akumulator bernilai ‘0’ sedangkan bit-bit lainnya tetap tidak berubah nilai. ORL A,#01111110  bit 1 sampai 6 dari Akumulator bernilai ‘1’ sedangkan bit-bit lainnya tetap tidak berubah nilai. XRL A,#01111110  bit 1 sampai 6 dari Akumulator berbalik nilai, sedangkan bit-bit lainnya tetap tidak berubah nilai.
  • 76. LECTURE 4 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 2)
  • 77. Percabangan dan Pengaturan Alur Program Pada MCS-51 Secara umum kelompok instruksi yang dipakai untuk mengatur alur program terdiri atas instruksi-instruksi JUMP Instruksi-instruksi untuk membuat dan memakai sub-rutin/modul (setara dengan PROCEDURE dalam Pascal) Instruksi-instruksi JUMP bersyarat ( conditional Jump , setara dengan statemen IF .. THEN ).
  • 78. Percabangan dan Pengaturan Alur Program Pada MCS-51 Kelompok Instruksi JUMP Mikrokontroler menjalankan instruksi-instruksi, selesai menjalankan satu instruksi mikrokontroler langsung menjalankan instruksi berikutnya Hal ini dilakukan dengan cara nilai Program Counter bertambah sebanyak jumlah byte yang membentuk instruksi yang sedang dijalankan Dengan demikian pada saat instruksi bersangkutan dijalankan Program Counter selalu menyimpan alamat memori-program yang menyimpan instruksi berikutnya.
  • 79. Percabangan dan Pengaturan Alur Program Pada MCS-51 Kelompok Instruksi JUMP Pada saat mikrokontroler menjalankan kelompok instruksi JUMP, nilai Program Counter yang runtun sesuai dengan alur program diganti dengan alamat memori-program baru yang dikehendaki programer. Mikrokontroler MCS51 mempunyai 3 macam intruksi JUMP, yakni instruksi LJMP ( Long Jump ), instruksi AJMP ( Absolute Jump ) dan instruksi SJMP
  • 80. Percabangan dan Pengaturan Alur Program Pada MCS-51 Kelompok Instruksi JUMP Pada saat mikrokontroler menjalankan kelompok instruksi JUMP, nilai Program Counter yang runtun sesuai dengan alur program diganti dengan alamat memori-program baru yang dikehendaki programer. Mikrokontroler MCS51 mempunyai 3 macam intruksi JUMP, yakni instruksi LJMP ( Long Jump ), instruksi AJMP ( Absolute Jump ) dan instruksi SJMP( Short Jump ). Kecepatan melaksanakan ketiga instruksi ini juga persis sama, yakni memerlukan waktu 2 periode instruksi
  • 81. Percabangan dan Pengaturan Alur Program Pada MCS-51 Instruksi LJMP Kode untuk instruksi LJMP adalah 02h, memori-program baru yang dituju  bilangan biner 16 bit  memori-program MCS51 yang jumlahnya 64 KiloByte. Instruksi LJMP terdiri atas 3 byte, yang bisa dinyatakan dengan bentuk umum 02 aa aa, aa yang pertama adalah memori-program bit 8 sampai dengan bit 15, sedangkan aa yang kedua adalah memori-program bit 0 sampai dengan bit 7. LJMP TugasBaru … ORG 2000h TugasBaru: MOV A,P3.1
  • 82. Percabangan dan Pengaturan Alur Program Pada MCS-51 ORG adalah perintah pada assembler agar berikutnya assembler bekerja pada memori-program yang disebut di belakang ORG  2000H TugasBaru disebut sebagai LABEL, yakni sarana assembler untuk menandai/ menamai memori-program. Dengan demikian, dalam potonganprogram di atas, memori-program 2000h diberi nama TugasBaru, atau bisa juga dikatakan bahwa TugasBaru bernilai 2000h. Dengan demikian intruksi LJMP TugasBaru di atas, sama artinya dengan LJMP 2000h yang oleh assembler akan diterjemahkan menjadi 02 20 00 (heksadesimal).
  • 83. Percabangan dan Pengaturan Alur Program Pada MCS-51 Instruksi AJMP memori-program baru yang dituju dinyatakan dengan bilangan biner 11 bit, dengan demikian instruksi ini hanya bisa menjangkau satu daerah memori-program MCS51 sejauh 2 KiloByte. Instruksi AJMP terdiri atas 2 byte, byte pertama merupakan kode untuk instruksi AJMP (00001b) yang digabung dengan memori program bit 8 sampai dengan bit 10, byte kedua dipakai untuk menyatakan memori-program bit 0 sampai dengan bit 7.
  • 84. Percabangan dan Pengaturan Alur Program Pada MCS-51 ORG 800h AJMP DaerahIni AJMP DaerahLain ORG 900h DaerahIni: . . . ORG 1000h DaerahLain: . . .
  • 85. Percabangan dan Pengaturan Alur Program Pada MCS-51 Instruksi SJMP memori-program dalam instruksi ini tidak dinyatakan dengan memori-program yang sesungguhnya, tapi dinyatakan dengan ‘pergeseran relatip’ terhadap nilai Program Counter saat instruksi ini dilaksanakan. Pergeseran relatip tersebut dinyatakan dengan 1 byte bilangan 2’s complement, yang bisa dipakai untuk menyakatakan nilai antara –128 sampai dengan +127. Nilai minus dipakai untuk menyatakan bergeser ke instruksiinstruksi sebelumnya, sedangkan nilai positip untuk menyatakan bergeser ke instruksi-instruksi sesudahnya.
  • 86. Percabangan dan Pengaturan Alur Program Pada MCS-51 ORG 0F80h SJMP DaerahLain . . . ORG 1000h DaerahLain: instruksi SJMP DaerahLain tetap bisa dipakai, asalkan jarak antara instruksi itu dengan LABEL DaerahLain tidak lebih dari 127 byte. 1000H-F80H=80H=128D
  • 87. Percabangan dan Pengaturan Alur Program Pada MCS-51 Kelompok Instruksi untuk sub-rutin Sub-rutin merupakan suatu potong program yang karena berbagai pertimbangan dipisahkan dari program utama. Bagian-bagian di program utama akan ‘memanggil’ (CALL) sub-rutin  mikrokontroler sementara meninggalkan alur program utama untuk mengerjakan instruksi-instruksi dalam sub-rutin, kemudian kembali ke alur program utama. Satu-satunya cara membentuk sub-rutin adalah memberi instruksi RET pada akhir potongan program sub-rutin. Program sub-rutin di-’panggil’ dengan instruksi ACALL atau LCALL.
  • 88. Percabangan dan Pengaturan Alur Program Pada MCS-51 Agar nantinya mikrokontroler bisa meneruskan alur program utama, pada saat menerima instruksi ACALL atau LCALL, sebelum mikrokontroler pergi mengerjakan sub-rutin, nilai Program Counter saat itu disimpan dulu ke dalam menyimpan nilai Program Counter secara otomatis di Stack Selanjutnya mikrokontroler mengerjakan instruksi-instruksi di dalam subrutin sampai menjumpai instruksi RET yang berfungsi sebagai penutup dari subrutin.
  • 89. Percabangan dan Pengaturan Alur Program Pada MCS-51 Instruksi ACALL dipakai untuk me-‘manggil’ program sub-rutin dalam daerah memori-program 2 KiloByte yang sama, setara dengan instruksi AJMP yang sudah dibahas di atas. Sedangkan instruksi LCALL bisa menjangkau seluruh memori-program mikrokontroler MCS51 sebanyak 64 KiloByte.
  • 90. Percabangan dan Pengaturan Alur Program Pada MCS-51 Kelompok Instruksi Jump Bersyarat Instruksi JZ ( Jump if Zero ) dan instruksi JNZ ( Jump if not Zero ) adalah instruksi JUMP bersyarat yang memantau nilai Akumulator A. MOV A,#0 JNZ BukanNol JZ Nol . . . BukanNol: . . . Nol : . . .
  • 91. Percabangan dan Pengaturan Alur Program Pada MCS-51 Kelompok Instruksi Jump Bersyarat Dalam contoh program sebelumnya, MOV A,#0  A bernilai nol mengakibatkan instruksi JNZ BukanNol tidak akan pernah dikerjakan (JNZ artinya Jump kalau nilai A<>0, syarat ini tidak pernah dipenuhi karena saat instruksi ini dijalankan nilai A=0), sedangkan instruksi JZ Nol selalu dikerjakan karena syaratnya selalu dipenuhi.
  • 92. Percabangan dan Pengaturan Alur Program Pada MCS-51 Instruksi JC ( Jump on Carry ) dan instruksi JNC ( Jump on no Carry )  memantau nilai bit Carry di dalam PSW Instruksi JB ( Jump on Bit Set ), instruksi JNB ( Jump on not Bit Set ) dan instruksi JBC (Ju mp on Bit Set Then Clear Bit )  merupakan instruksi Jump bersyarat yang memantau nilai-nilai bit tertentu. Bit-bit tertentu bisa merupakan bit-bit dalam register status maupun kaki input mikrokontroler MCS51.
  • 93. Percabangan dan Pengaturan Alur Program Pada MCS-51 MOV A,#01010101B JNB ACC.0,LAGI ;JIKA A BIT KE 0=‘0’ LOMPAT KE LAGI JBC ACC.6,LAGI2 ;JIKA A BIT KE 6=‘1’ LOMPAT KE LAGI 2 DAN ACC.6  ’0’ LAGI: …… LAGI2: … ..
  • 94. Percabangan dan Pengaturan Alur Program Pada MCS-51 Kelompok Instruksi proses dan test  memantau kondisi yang sudah terjadi yang dicatat MCS51. Ada dua instruksi  melakukan dulu suatu proses baru kemudian memantau hasil proses untuk menentukan apakah harus Jump . Instruksi DJNZ ( Decrement and Jump if not Zero ), merupakan instruksi yang akan mengurangi 1 nilai register serbaguna (R0..R7) atau memori-data , dan Jump jika ternyata setelah pengurangan 1 tersebut hasilnya tidak nol.
  • 95. Percabangan dan Pengaturan Alur Program Pada MCS-51 MOV R0,#23h ;R0=’23H’ DJNZ R0,$ ;R0=R0-1 jika belum nol maka looping di tempat (tanda $ dalam instruksi ini maksudnya adalah kerjakan kembali instruksi ini). Selama mengerjakan 2 instruksi di atas, semua pekerjaan lain akan tertunda  waktu tundanya ditentukan oleh besarnya nilai yang diisikan ke R0.
  • 96. Percabangan dan Pengaturan Alur Program Pada MCS-51 Instruksi CJNE ( Compare and Jump if Not Equal ) membandingkan dua nilai yang disebut dan MCS akan Jump kalau kedua nilai tersebut tidak sama! MOV A,P1 CJNE A,#0Ah,TidakSama ... SJMP EXIT TidakSama: ... Instruksi MOV A,P1 membaca nilai input dari Port 1, instruksi CJNE A,#0Ah,Tidaksama memeriksa apakah nilai Port 1 yang sudah disimpan di A sama dengan 0Ah, jika tidak maka Jump ke TidakSama. .
  • 97.
  • 98. Assembler Directive DB – singkatan dari DEFINE BYTE , dipakai untuk memberi nilai tertentu pada memori-program. Nilai tersebut merupakan nilai 1 byte, bisa berupa angka ataupun kode ASCII. DB merupakan Assembler Directive yang dipakai untuk membentuk teks maupun tabel. Contoh : ORG 200h STRING DB ‘Belajar Mikrokontroler’ ORG 200h memerintahkan program Assembler agar bekerja mulai dari memori-program nomor 200h, instruksi selanjutnya memerintahkan program Assembler agar mengisi memori-program nomor 200h dan berikutnya dengan tulisan ‘Belajar Mikrokontroler’ (yang diisikan adalah kode ASCII dari ‘B’, ‘e’ dan seterusnya)
  • 99. Assembler Directive DW – singkatan dari DEFINE WORD , dipakai untuk memberi nilai 2 byte ke memori-program pada baris bersangkutan. Assembler Directive ini biasa dipakai untuk membentuk suatu tabel yang isinya adalah nomor-nomor memori-program . DS – singkatan dari Define Storage , Assembler Directive ini dipakai untuk membentuk variable. Sebagai variabel tentu saja memori yang dipakai adalah memori-data (RAM) bukan memori-program (ROM). Jika Assembler Directive DB dan DW yang membentuk kode di memori-program . Dan karena DS bekerja di RAM, maka DS hanya sekedar menyediakan tempat di memori, tapi tidak mengisi nilai pada memori bersangkutan.
  • 100. Pemrograman Untuk Port Paralel Pada MCS51 Port paralel merupakan sarana utama sebuah chip Mikrokontroler, lewat sarana ini mikrokontroler mengeluarkan sinyal digital yang dipakai mengendalikan rangkaian-rangkaian di luar chip secara langsung. Chip mikrokontroler 8051/8031/8751/8951 mempunyai 40 kaki, 32 kaki diantaranya adalah kaki untuk keperluan port paralel. Satu port paralel terdiri dari 8 kaki, dengan demikian 32 kaki tersebut membentuk 4 buah port paralel, yang masing-masing dikenali sebagai Port 0, Port 1, Port 2 dan Port 3.
  • 101. Pemrograman Untuk Port Paralel Pada MCS51 Masing-masing jalur (kaki) dari port paralel di-nomor-i mulai dari 0 sampai 7, jalur (kaki) pertama Port 0 disebut sebagai P0.0, jalur terakhir Port 3 adalah P3.7. MCS51 mempunyai dua kelompok instruksi untuk mengeluarkan data ke port paralel: kelompok instruksi pertama bekerja pada port seutuhnya artinya 8 jalur dari port bersangkutan, misalnya MOV P1,#FFh membuat ke-delapan jalur port 0 sekaligus menjadi ‘1’.
  • 102. Pemrograman Untuk Port Paralel Pada MCS51 kelompok instruksi kedua hanya berpengaruh pada salah satu jalur dari port, misalnya SETB P3.4  P3.4  ’1’ atau CLR P3.3  P3.3  ‘0’. Selain itu port paralel bisa pula dipakai untuk menerima sinyal digital dari rangkaian di luar chip mikrokontroler: MOV A,P1 ;ambil sinyal digital pada semua jalur Port 1 dan menyimpannya di A
  • 103. Pemrograman Untuk Port Paralel Pada MCS51 ORG 0 JMP PROGRAM ORG 100H PROGRAM:MOV A,#0H ULANG: MOV P1,A CALL DELAY INC A JMP ULANG DELAY: MOV R0,#00H MOV R1,#00H ULANG1: INC R1 ULANG2: INC R0 CJNE R0,#0FFH,ULANG2 CJNE R1,#040H,ULANG1 RET
  • 104. Pemrograman Untuk Port Paralel Pada MCS51 ORG 000H JMP MULAI ORG 100H MULAI: MOV P1,#0FFH ULANG: JNB P1.0,ULANG MOV P1,#00H END
  • 105. Pemrograman Untuk Port Paralel Pada MCS51 ORG 000H JMP PROGRAM ORG 100H PROGRAM: MOV P1,#0FFh ULANG1: MOV C,P1.0 MOV P1.1,C JMP ULANG1 END
  • 106. Pemrograman Untuk Port Paralel Pada MCS51 ORG 000H JMP PROGRAM ORG 100H PROGRAM: MOV A,#01H ;A=00000001 ULANG: MOV P1,A ;P1=00000001 RL A ;A=00000010 dst CALL DELAY JMP ULANG DELAY: MOV R1,#00H ULANG1: INC R1 CJNE R1,#0FFH,ULANG1 RET END
  • 107.  
  • 108.  
  • 109.  
  • 110.  
  • 111.  
  • 112.  
  • 113.  
  • 114.  
  • 115.  
  • 116.  
  • 117.  
  • 118.  
  • 119.  
  • 120.  
  • 121.  
  • 122.  
  • 123.  
  • 124.  
  • 125. LECTURE 5 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 3)
  • 126.
  • 127.
  • 129. STRUKTUR MEMORI Accumulator (ACC) - Terletak pada alamat E0H - Operasi Aritmatik (Add A,#05H) - Operasi Logika (Anl A,#05H) - Akses Memori Eksternal (Movx A,@DPTR) - Untuk fungsi umum Register B - Terletak pada alamat B0H - Fungsi umum - Digunakan bersama Acc untuk operasi Aritmatik (Mul AB)
  • 131. STRUKTUR MEMORI Data Pointer (DPTR) - Terdiri dari dua register yaitu o DPH (82H) o DPL (83H) - Untuk akses data atau source code di memori Flash PEROM atau Memori Eksternal
  • 133. STRUKTUR MEMORI Flash PEROM - Kapasitas 4 Kb - Alamat 000H hingga FFFH - Diakses bila: o Pin EA/VP 89S51 berlogika high o Ada perintah untuk memanggil instruksi di alamat tersebut -Dapat diproteksi dengan: o Lock Bit 1, tidak dapat dibaca oleh program yang berada di memori eksternal o Lock Bit 2, tidak dapat dibaca oleh peralatan Programmer o Lock Bit 3, sama sekali tidak dapat mengakses/diakses oleh/dari memori eksternal
  • 134. STRUKTUR MEMORI External Memory - Dibutuhkan untuk: o Memori berkapasitas besar o Emulasi Program - Sistem pengalamatan Multiplex Addressing
  • 136. STRUKTUR MEMORI Akses Memori Eksternal terdiri dari: o Pembacaan Data o Pembacaan Program (Kode) o Penulisan Data/Kode Proses Pembacaan Proses pembacaan dapat dianalogikan sebagai proses membaca dari halaman tertentu dari sebuah buku di mana pada proses tersebut dibutuhkan: - Halaman dari tulisan yang akan dibaca = Alamat Memori - Perintah untuk membaca = Sinyal Read untuk Data dan Sinyal PSEN untuk kode
  • 142. LECTURE 6 TIMER DAN COUNTER
  • 143.
  • 144.
  • 146.
  • 147.
  • 148.
  • 149. TIMER PADA MCS51 Keluarga mikrokontroler MCS51, misalnya 8951, 8051, atau 8031 dilengkapi dengan dua perangkat Timer/Counter, masing-masing dinamakan sebagai Timer 0 dan Timer 1 . Sedangkan untuk jenis yang lebih besar , misalnya 8952 dan 8052 mempunyai tambahan yaitu Timer 2 . Perangkat Timer/Counter tersebut merupakan perangkat keras yang menjadi satu dalam chip mikrokontroler MCS51, perangkat tersebut dikenal sebagai SFR ( Special Function Register ) yang berkedudukan sebagai memori-data internal .
  • 150. TIMER PADA MCS51 Pencacah biner untuk Timer 0 dibentuk dengan register TL0 ( Timer 0 Low Byte , memori-data internal alamat 6Ah) dan register TH0 ( Timer 0 High Byte , memori-data internal alamat 6Ch). Pencacah biner untuk Timer 1 dibentuk dengan register TL1 ( Timer 1 Low Byte , memori-data internal alamat 6Bh) dan register TH1 ( Timer 1 High Byte , memori-data internal alamat 6Dh).
  • 151.
  • 152.
  • 153.
  • 154. TIMER MODE 0 PADA MCS51 Susunan TL0, TH0, TL1 dan TH1 pada mode 0 adalah sebagai berikut: Pencacah biner dibentuk dengan TLx (TL0 atau TL1) sebagai pencacah biner 5 bit (meski kapasitas riil 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 (TF0 atau TF1) yang berada di dalam register TCON.
  • 155. TIMER MODE 1 PADA MCS51 Susunan TL0, TH0, TL1 dan TH1 pada mode 1 adalah sebagai berikut: Mode ini sama dengan Mode 0, hanya saja register TLx dipakai sepenuhnya sebagai pencacah biner 8 bit  pencacah biner 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), dan melimpah kembali menjadi 0000h.
  • 156. TIMER MODE 2 PADA MCS51 Mode 2 – Pencacah Biner 8 bit dengan Isi Ulang ( 8 bit Autoreload Binary Counter ) 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 FFh menjadi 00h). Dengan cara ini bisa didapatkan sinyal limpahan yang frekuensinya ditentukan oleh nilai yang disimpan dalam TH0.
  • 157. TIMER MODE 3 PADA MCS51 Pada Mode 3 TL0, TH0, TL1 dan TH1 dipakai untuk membentuk 3 untaian pencacah, yang pertama adalah untaian pencacah biner 16 bit tanpa fasilitas pemantau sinyal limpahan yang dibentuk dengan TL1 dan TH1. Yang kedua adalah TL0 yang dipakai sebagai pencacah biner 8 bit dengan TF0 pemantau limpahan. Pencacah biner ketiga adalah TH0 yang dipakai sebagai pencacah biner 8 bit dengan TF1 pemantau limpahan.
  • 158. Register Pengatur Timer Register TMOD dibagi menjadi 2 bagian secara simetris, bit 0 sampai 3 register TMOD (TMOD bit 0 .. TMOD bit 3) dipakai untuk mengatur Timer 0 , bit 4 sampai 7 register TMODE (TMOD bit 4 .. TMOD bit 7) dipakai untuk mengatur Timer1, pemakaiannya sebagai berikut : 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 .
  • 159.
  • 160. Register Pengatur Timer Register TCON dibagi menjadi 2 bagian, 4 bit pertama (bit 0 .. bit 3, bagian yang diarsir dalam Gambar 3b) dipakai untuk keperluan mengatur kaki INT0 dan INT1 Sisa 4 bit dari register TCON (bit 4..bit 7) dibagi menjadi 2 bagian secara simetris yang dipakai untuk mengatur Timer 0/Timer 1
  • 161. Register Pengatur Timer Bit TFx (maksudnya adalah TF0 atau TF1) merupakan bit penampung limpahan, TFx akan menjadi ‘ 1 ’ setiap kali pencacah biner yang terhubung padanya melimpah (pencacah berubah dari FFFFh kembali menjadi 0000h). Bit TFx di-nol-kan dengan istruksi CLR TF0 atau CLR TF1 . Jika sarana interupsi dari Timer 0 / Timer 1 dipakai, TRx di-nol-kan saat MCS51 menjalankan rutin layanan interupsi ( ISR – Interupt Service Routine ).
  • 162. Register Pengatur Timer Bit TRx (maksudnya adalah TR0 atau TR1) merupakan bit pengatur saluran sinyal denyut, bila bit ini = 0 sinyal denyut tidak disalurkan ke pencacah biner sehingga pencacah berhenti mencacah. Bila bit GATE pada register TMOD = 1 , maka saluran sinyal denyut ini diatur bersama oleh TRx dan sinyal pada kaki INT0 / INT1
  • 163. Register Pengatur Timer Setelah MCS51 di-reset register TMOD bernilai $00, hal ini berarti : • bit C/T* =’ 0 ’, menurut Gambar 4 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 .
  • 164. Register Pengatur Timer Jika sistem yang dirancang memang menghendaki Timer 1 bekerja sebagai timer maka bit C/T * tidak perlu diatur lagi. 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 ’.
  • 165. Register Pengatur Timer 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’ .
  • 166. Register Pengatur Timer 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 ’
  • 167. Register Pengatur Timer Jika sistem yang dirancang menghendaki kerja dari timer/counter dikendalikan dari sinyal yang berasal dari luar chip, maka bit GATE harus dibuat menjadi ‘ 1 ’ 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 maka bit M1 harus dibuat ‘ 0 ’ dan bit M0 ‘ 1’ .
  • 168. Register Pengatur Timer 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
  • 169. Register Pengatur Timer Bilangan biner 00010000 diisikan ke TMOD , berakibat bit 7 TMOD (bit GATE ) bernilai ‘ 0 ’, bit 6 (bit C/T* ) bernilai ‘ 0 ’, bit 5 dan 4 (bit M1 dan M0 ) bernilai ‘ 01’ , ke-empat bit ini dipakai untuk mengatur Timer 1 , sehingga Timer 1 bekerja sebagai timer dengan pencacah biner 16 bit yang dikendalikan hanya dengan TR1 . Jika dikehendaki pencacah biner dipakai sebagai counter untuk mencacah jumlah pulsa yang masuk lewat kaki T1 ( P3.5 ), instruksinya menjadi : MOV TMOD,#01010000b
  • 170. Register Pengatur Timer 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 Jika bit GATE = ‘ 1 ’, selama kaki INT1 bernilai ‘ 0 ’ pencacah biner belum akan mencacah. Untuk menghentikan proses pencacahan, dipakai instruksi CLR TR1
  • 171.
  • 172. Aplikasi Timer Pemakaian waktu tunda Waktu tunda banyak dipakai dalam pemrograman mikrokontroler untuk membangkitkan pulsa, membangkitkan sinyal periodik dengan frekuensi tertentu, untuk menghilangkan effek bouncing dari skalar dalam membuat key pad (keyboard sederhana) dan lain sebagainya. Waktu tunda bisa dibangkitkan secara sederhana dengan menjalankan instruksi-instruksi yang waktu pelaksanaanya bisa diperhitungkan dengan tepat. Untuk mendapatkan waktu tunda yang panjang, tidak dipakai cara di atas tapi pakai Timer. Waktu tunda yang dibentuk dengan kedua cara tersebut sangat tergantung pada frekuensi kerja mikrokontroler, dalam contoh-contoh berikut dianggap mikrokontroler bekerja pada frekuensi 12 MHz.
  • 173. Aplikasi Timer Instruksi-instruksi berikut ini bisa dipakai untuk membangkitkan pulsa ‘ 0 ’ dengan lebar 3 mikro-detik pada kaki P1.0 CLR P1.0 NOP ; 1 mikro-detik NOP ; 1 mikro-detik SETB P1.0 ; 1 mikro-detik Instruksi baris pertama membuat P1.0 yang mula-mula ‘ 1 ’ menjadi ‘ 0 ’,pelaksanaan instruksi NOP memerlukan waktu 1 mikro-detik ,instruksi SETB P1.0 juga memerlukan waktu 1 mikrodetik, total waktu sebelum P1.0 kembali menjadi ‘ 1 ’ adalah 3 mikro-detik
  • 174. Aplikasi Timer Dengan sedikit perubahan instruksi-instruksi di atas bisa membangkitkan sinyal dengan frekuensi 100 KHz pada kaki P1.0 : Sinyal100KHz: CPL P1.0 ; 1 mikro-detik NOP ; 1 mikro-detik NOP ; 1 mikro-detik SJMP Sinyal100KHz ; 2 mikro-detik Instruksi CPL P1.0 pada baris 1 membalik keadaan pada P1.0 , bila mula-mula P1.0 bernilai ‘ 1 ’ akan dirubah menjadi ‘ 0 ’, sebaliknya bila mula-mula ‘ 0 ’ akan dirubah menjadi ‘ 1 ’. Total waktu tunda ke-empat baris di atas adalah 5 mikro-detik, sehingga yang terjadi adalah P1.0 bernilai ‘ 0 ’ selama 5 mikro-detik dan bernilai ‘ 1 ’ selama 5 mikro-detik berulang terus tanpa henti, dengan frekuensi sebesar 1/10 mikro-detik = 100.000 Hertz.
  • 175. Aplikasi Timer Program di atas bisa pula dibuat dengan memakai Timer 1 sebagai pengatur waktu tunda sebagai berikut : MOV TMOD,#00100000b ; Timer 1 bekerja pada Mode 2 MOV TH1,#0F6h ; Nilai pengisi ulang TL1 SETB TR1 ; Timer 1 mulai mencacah Ulangi: JNB TF1,$ ; Tunggu sampai melimpah CPL P1.0 ; Keadaan pada P1.0 di-balik CLR TF1 ; Hapus limpahan pencacah SJMP Ulangi ; Ulangi terus tiada henti… Instruksi baris pertama mempersiapkan Timer 0 bekerja pada Mode 2 – Pencacah Biner 8 bit dengan Isi Ulang, bilangan pengisi ulang ditentukan sebesar F0h yang disimpan ke register TH1 pada baris 2, instruksi berikutnya memerintahkan pencacah biner mulai mencacah.
  • 176. Aplikasi Timer Pencacah biner yang dibentuk dengan register TL1 akan mencacah naik seirama dengan siklus sinyal denyut, mulai dari F6h sampai FFh , saat pencacah melimpah dari FFh ke 00h bit TR1 pada register TCON akan menjadi ‘ 1 ’ dan TL1 secara otomatis di isi ulang dengan bilangan F0h yang tersimpan pada register TH0 . Hal ini akan terjadi terus menerus dan berulang setiap 10 siklus sinyal denyut ( F6h , F7h , F8h , F9h , FAh , FBh , FCh , FDh , FEh , FFh kembali ke 00h , total 10siklus)
  • 177. Aplikasi Timer Instruksi JNB TR1,$ menunggu bit TR1 menjadi ‘ 1 ’, yakni saat pencacah biner melimpah dari FFh ke 00h yang dibahas di atas. Lepas dari penantian tersebut, P1.0 dibalik keadaanya dengan instruksi CPL P1.0 , TR1 dikembalikan menjadi 0 (harus dikembalikan sendiri dengan instruksi ini), agar bisa ditunggu lagi sampai menjadi ‘ 1 ’ kembali setelah instruksi SJMP Ulangi . Frekuensi dari sinyal di P1.0 sebesar 1 / 16 mikro-detik = 31,25 KHz.
  • 178. Aplikasi Timer Contoh Penggunaan dalam subrutin MOV TMOD,#01H … … CALL DELAY … … … DELAY: MOV TH0,#HIGH (-50000) ;SEKITAR 50000 MIKROSEKON MOV TL0,#LOW (-50000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET
  • 180.
  • 181.
  • 182.
  • 183.
  • 184.
  • 185. SERIAL REGISTER Register yang digunakan untuk mengatur komunikasi serial terdapat pada Serial Control (SCON)
  • 186. SERIAL REGISTER Baud rate pada mode 1, 2, dan 3 dapat dilipatgandakan dengan memberi nilai ‘1’ pada SMOD (dalam SFR PCON)
  • 188. SERIAL REGISTER - REN REN harus diberi nilai ‘1’ untuk mengaktifkan penerimaan data. Jika REN diberi nilai ‘0’, maka tidak akan ada penerimaan data. - TB8 TB8 adalah bit ke-9 yang dikirimkan dalam mode 2 atau 3. Nilai bit ini diatur oleh program user. - RB8 RB8 adalah bit ke-9 yang diterima dalam mode 2 atau 3. Pada mode 1, RB8 adalah stop bit yang diterima. Pada mode 0, RB8 tidak digunakan.
  • 189.
  • 190.
  • 191.
  • 192.
  • 193.
  • 194.
  • 195. BAUD RATE Sedangkan baud rate untuk mode 2 memiliki 2 variasi tergantung dari kondisi SMOD.
  • 196. BAUD RATE Baud rate untuk mode 1 dan 3 dihasilkan oleh Timer 1. Pengaturan baudrate untuk mode 1 dan 3 dapat dilakukan dengan cara mengubah nilai SMOD,TMOD, dan TH1. Umumnya Timer 1 dioperasikan pada mode 2 (8-bit Auto Reload)
  • 197.
  • 198. BAUD RATE Misalkan baud rate yang diinginkan adalah 19200 bps dengan frekuensi osilator 11,0592 MHz
  • 199. BAUD RATE Untuk mendapatkan baud rate yang lambat, user dapat mengoperasikan Timer 1 pada mode 1 dengan rumus
  • 200. INISIALISASI SERIAL Proses inisialisasi bertujuan untuk menentukan mode komunikasi serial dan baud rate yang digunakan. Register yang harus diatur terlebih dahulu meliputi: 1. SCON Langkah pertama adalah menentukan mode yang akan digunakan (mode 0, 1, 2, atau 3), kemampuan menerima data, dan nilai bit ke-9. Misalnya mode yang digunakan adalah mode 1 dengan kemampuan menerima data namun tanpa komunikasi multiprosesor, maka instruksinya adalah sebagai berikut: MOV SCON, #01010000b atau MOV SCON, #50h atau SETB SM1 SETB REN
  • 201. INISIALISASI SERIAL 2. TMOD, TH1 dan/atau TL1, PCON, dan TCON Jika komunikasi serial digunakan dalam mode 1 atau 3, maka langkah berikutnya adalah menentukan baud rate. Misalnya Timer/Counter 1 digunakan sebagai timer dalam mode 2 untuk membangkitkan baud rate 19200 bps, maka instruksinya adalah sebagai berikut: MOV TMOD, #00100000b MOV TH1, #0FDh MOV PCON, #10000000b MOV TCON, #01000000b atau MOV TMOD, #20h MOV TH1, #0FDh MOV PCON, #80h MOV TCON, #40h atau MOV TMOD, #20h MOV TH1, #0FDh MOV PCON, #80h SETB TR1
  • 202. INISIALISASI SERIAL 3. IE dan/atau IP Jika komunikasi serial yang diprogram akan digunakan sebagai sumber interrupt, maka IE dan/atau IP juga harus diatur. Misalnya komunikasi serial digunakan sebagai sumber interrupt dengan prioritas tinggi, maka instruksinya adalah sebagai berikut: MOV IP, #00010000b MOV IE, #10010000b atau MOV IP, #10h MOV IE, #90h atau SETB PS SETB ES SETB EA
  • 204.
  • 205.
  • 206.
  • 207.
  • 208.
  • 209.
  • 210.
  • 211.
  • 212.
  • 214.
  • 215.
  • 216. SUMBER INTERUPSI MCS51 Kalau bit IT0 (atau IT1 ) =’ 0 ’ maka bit IE0 (atau IE1 ) dalam TCON menjadi ‘ 1 ’ saat kaki INT0 =’ 0 ’. 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 .
  • 217. SUMBER INTERUPSI MCS51 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!
  • 218. SUMBER INTERUPSI MCS51 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.
  • 219. SUMBER INTERUPSI MCS51 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 ’.
  • 220. SUMBER INTERUPSI MCS51 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.
  • 221. SUMBER INTERUPSI MCS51 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 bisadiajukan lewat pemrograman, misalnya permintaan interupsi eksternal IT0 bisa diajukan dengan instruksi SETB IE0 .
  • 222. Mengaktifkan Interupsi Semua sumber permintaan interupsi yang di bahas di atas, masing-masing bisa di-aktif-kan atau di-nonaktif-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. Disamping itu ada pula bit EA yang bisa dipakai untuk mengatur semua sumber interupsi sekaligus.
  • 223. Mengaktifkan Interupsi 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 .
  • 224. 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 instruksi LCALL yang diaktipkan secara perangkat keras.
  • 225. Vektor Interupsi Vektor interupsi untuk interupsi eksternal INT0 adalah 0003h , untuk interupsi timer 0 adalah 000Bh Interupsi ekternal INT1 adalah 0013h 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.
  • 226. LECTURE 9 INTERFACING DENGAN LCD KARAKTER
  • 227. INTERFACING DENGAN LCD KARAKTER
  • 228. INTERFACING DENGAN LCD KARAKTER RS=P1.0 RW=P1.1 E=P1.2 DB7=P2.7 DB6=P2.6 DB5=P2.5 DB4=P2.4
  • 229. INTERFACING DENGAN LCD KARAKTER Inisialisasi dan file pendukung LCD : hd44780.asm bagian variabel rs bit p1.0 rw bit p1.1 e bit p1.2 rkursor equ 14h lkursor equ 10h rdisplay equ 1fh ldisplay equ 18h homelcd equ 02h barisdua equ 0c0h display_clear equ 01h display_off equ 08h cursor_on equ 0eh cursor_off equ 0ch blink_on equ 0fh blink_off equ 0eh set4bit equ 28h set8bit equ 38h
  • 230. INTERFACING DENGAN LCD KARAKTER DELAY1S: mov r0,#100 ss: call delay5ms djnz r0,ss RET delay5ms: MOV TMOD,#01H MOV TH0,#HIGH(-5000) MOV TL0,#LOW(-5000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET
  • 231. INTERFACING DENGAN LCD KARAKTER baris2_lcd: mov a,#barisdua call kirim_perintah ret baris1_lcd: mov a,#homelcd call kirim_perintah ret
  • 232. INTERFACING DENGAN LCD KARAKTER geser_display_kanan: mov a,#rdisplay call kirim_perintah ret geser_display_kiri: mov a,#ldisplay call kirim_perintah ret geser_kursor_kiri: mov a,#lkursor call kirim_perintah ret geser_kursor_kanan: mov a,#rkursor call kirim_perintah ret
  • 233. INTERFACING DENGAN LCD KARAKTER baca_register: mov p2,#0ffh ;jadikan p2 sebagai input setb rw clr rs setb e mov a,p2 anl a,#0f0h clr e push acc setb e mov a,p2 anl a,#0f0h clr e swap a pop b add a,b clr rw ret
  • 234. INTERFACING DENGAN LCD KARAKTER periksa_busy: call baca_register jb acc.7,periksa_busy ret kirim_data_lcd: setb e mov p2,a clr e ret kirim_karakter: clr rw setb rs call kirim_data_lcd swap a call kirim_data_lcd call periksa_busy ret
  • 235. INTERFACING DENGAN LCD KARAKTER kirim_perintah: clr rw clr rs call kirim_data_lcd ;4bit sebanyak 2kali swap a call kirim_data_lcd call periksa_busy ret
  • 236. INTERFACING DENGAN LCD KARAKTER init_lcd: setb rs clr e call delay5ms call delay5ms call delay5ms call delay5ms mov a,#30h ;d7='0',d6='0',d5='1',d4='1' call kirim_perintah call delay50us call delay50us mov a,#30h call kirim_perintah mov a,#20h ;send init call kirim_perintah mov a,#28h ;8x5, 2lines d5='0'-->4bit;d3='1'-->2baris,d2='0'-->5x8 call kirim_perintah mov a,#08h ;display off call kirim_perintah mov a,#01h ;display clear call kirim_perintah mov a,#0eh ;display on call kirim_perintah mov a,#06h ;mode increment address call kirim_perintah ret
  • 237. INTERFACING DENGAN LCD KARAKTER hapus_layar: mov a,#01h call kirim_perintah ret data_lcd data p2 ;set4bit posisi msb kursor_on: mov a,#cursor_on call kirim_perintah ret kursor_off: mov a,#cursor_off call kirim_perintah ret
  • 238. INTERFACING DENGAN LCD KARAKTER posisi_awal_lcd: mov a,#02h ;set ke posisi paling awal call kirim_perintah ret kirim_pesan_lcd: loop_kirim_pesan_lcd: mov a,#0 ;ambil data dr memori yang ditunjuk movc a,@a+dptr cjne a,#0fh,kirim_lcd ;kirim ke lcd selama belum ;ditemukan 0fh ret kirim_lcd: call kirim_karakter inc dptr ;tunjuk ke memori selanjutnya jmp loop_kirim_pesan_lcd
  • 239. INTERFACING DENGAN LCD KARAKTER kirim_pesan_lcd_with_delay: loop_kirim_pesan_lcd_with_delay: mov a,#0 ;ambil data dr memori yang ditunjuk movc a,@a+dptr cjne a,#0fh,kirim_lcd_with_delay ;kirim ke lcd selama belum ditemukan 0fh ret kirim_lcd_with_delay: call kirim_karakter inc dptr ;tunjuk ke memori selanjutnya call delay1s jmp loop_kirim_pesan_lcd_with_delay
  • 240. INTERFACING DENGAN LCD KARAKTER ;Contoh Program sederhana menampilkan karakter dan grafis ;Tabel karakter dan file library lcd hd44780 pesanlcd1: db 'Deddy Susilo, ST',0fh pesanlcd2: db '-- NIP: 61546 --',0fh pesanlcd3: db ' Please Wait... ',0fh pesanlcd4: db '# SWITCH.COM #',0fh pesanlcd5: db '@@-FTEK UKSW-@@',0fh heart: db 0,10,31,31,14,4,0,0,0fh oke: db 4,0,0eh,0,1fh,0,1fh,0,0fh $include (hd44780.asm)
  • 241. INTERFACING DENGAN LCD KARAKTER POLA: mov r1,#40h mov r2,#0 loop: mov a,r1 call kirim_perintah mov dptr,#heart mov a,r2 movc a,@a+dptr inc r2 inc r1 cjne a,#0fh,kirim_lcd_grafik mov a,#02h call kirim_perintah mov a,#0 call kirim_karakter call delay1s jmp exit kirim_lcd_grafik: call kirim_karakter jmp loop exit: ret
  • 242. INTERFACING DENGAN LCD KARAKTER call init_lcd mov dptr,#pesanlcd1 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd2 call kirim_pesan_lcd call delay1s call delay1s call delay1s call hapus_layar mov dptr,#pesanlcd3 call kirim_pesan_lcd_with_delay call delay1s
  • 243. INTERFACING DENGAN LCD KARAKTER call hapus_layar call baris2_lcd call kursor_off mov dptr,#pesanlcd4 call kirim_pesan_lcd call delay1s call hapus_layar call delay1s call baris1_lcd mov dptr,#pesanlcd4 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd5 call kirim_pesan_lcd call delay1s call delay1s call hapus_layar call delay1s call pola
  • 244. INTERFACING DENGAN LCD KARAKTER call init_lcd mov dptr,#pesanlcd1 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd2 call kirim_pesan_lcd call delay1s call delay1s call delay1s
  • 245. INTERFACING DENGAN LCD KARAKTER call hapus_layar mov dptr,#pesanlcd3 call kirim_pesan_lcd_with_delay call delay1s
  • 246. INTERFACING DENGAN LCD KARAKTER call hapus_layar call baris2_lcd call kursor_off mov dptr,#pesanlcd4 call kirim_pesan_lcd call delay1s
  • 247. INTERFACING DENGAN LCD KARAKTER call hapus_layar call delay1s call baris1_lcd mov dptr,#pesanlcd4 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd5 call kirim_pesan_lcd call delay1s call delay1s
  • 248. INTERFACING DENGAN LCD KARAKTER call hapus_layar call delay1s call pola
  • 249. LECTURE 10 INTERFACING DENGAN LCD GRAFIK
  • 250. Koneksi LCD dengan Mikrokontroler
  • 268. Pembagian Daerah Frekuensi Pada Layar 16000 12500 10000 8000 Halaman 7 6300 5000 4000 3150 Halaman 6 2500 2000 1600 1250 Halaman 5 1000 800 630 500 Halaman 4 400 315 250 200 Halaman 3 160 125 100 80 Halaman 2 63 50 40 31,5 Halaman 1 Untuk skala amplitudo sinyal Halaman 0 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
  • 270. Konversi dan nilai untuk Layar LCD2
  • 271. Diagram Alir Menggambar Data Hasil Pengukuran di Layar LCD
  • 272. Contoh Hasil di Layar Sinyal Uji 1kHz Sinus Sinyal Uji 125 Hz & 1kHz Sinus
  • 273. Contoh Hasil di Layar Sinyal Uji Derau Putih Sinyal Uji Derau Merah Jambu
  • 274. Contoh Hasil di Layar Sinyal Uji Derau Putih Sinyal Uji Derau Merah Jambu
  • 275. LECTURE 11 EKSPANSI SISTEM MCS51 DENGAN DAC, ADC, SIPO, PISO, MUX ANALOG, LATCHES, PPI
  • 276. LECTURE 12 Sensor-Sensor + IC Special Function
  • 277. Robot Sensing and Sensors
  • 278.
  • 279.
  • 280.
  • 281.
  • 282.
  • 283.
  • 284.
  • 285.
  • 286. General Processing Fusion Interpretation Sensing Perception Preprocessing Preprocessing Preprocessing Preprocessing Sensor Sensor Sensor Sensor
  • 287.
  • 288.
  • 289.
  • 290.
  • 291.
  • 292.
  • 293.
  • 294. Robotics Sensor Based on EM Spectrum
  • 295. Electromagnetic Spectrum Visible Spectrum 700 nm 400 nm
  • 296.
  • 297.
  • 300. Sensors Used in Robot
  • 301. Solar Cell Digital Infrared Ranging Compass Touch Switch Pressure Switch Limit Switch Magnetic Reed Switch Magnetic Sensor Miniature Polaroid Sensor Polaroid Sensor Board Piezo Ultrasonic Transducers Pyroelectric Detector Thermistor Gas Sensor Gieger-Muller Radiation Sensor Piezo Bend Sensor Resistive Bend Sensors Mechanical Tilt Sensors Pendulum Resistive Tilt Sensors CDS Cell Resistive Light Sensor Hall Effect Magnetic Field Sensors Compass IRDA Transceiver IR Amplifier Sensor IR Modulator Receiver Lite-On IR Remote Receiver Radio Shack Remote Receiver IR Sensor w/lens Gyro Accelerometer IR Reflection Sensor IR Pin Diode UV Detector Metal Detector
  • 302.
  • 303.
  • 304.
  • 305. Inputs for Resistive Sensors Voltage divider: You have two resisters, one is fixed and the other varies, as well as a constant voltage V micro R1 R2 Vsense Comparator: If voltage at + is greater than at -, digital high out A/D converter Digital I/O + - Binary Threshold V
  • 306.
  • 307.
  • 308.
  • 309.
  • 310.
  • 311.
  • 312.
  • 313.
  • 314.
  • 315.
  • 316. Robotics Sensor and Aktuator Example
  • 317.
  • 318. Quiz 2: How could you augment a grating-based (relative) encoder in order to detect the direction of rotation? light emitter/detector Quiz 1: If there are 100 lines in the grating, what is the smallest detectable change in motor-shaft angle? Incremental Optical Encoders
  • 319.
  • 320.
  • 321.
  • 322.
  • 323.
  • 325.