Deddy Susilo, S.T. 61546 EE-632 MICROCONTROLLER
Silabus  (3 sks) - 16 minggu 1. Sekilas ttg Mikroprosesor, Mikrokomputer,Mikrokontroler 2. Arsitektur Mikrokontoler MCS-51...
Silabus  (3 sks) - 16 minggu 9. Sensor-Sensor + IC Special Func 10. Protokol I2C (I square C) 11. Protokol I2S (I square S...
silabus  (3 sks) Bobot Penilaian : TTS : 30% TAS : 40% LAB : 30%  - 12 x Praktikum ( @ 1,5% ) - 1 x Tes Praktek  (Pengali ...
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...
MIKROKOMPUTER ?
MIKROKOMPUTER ? mikroprosesor dengan piranti pendukungnya dikatakan membentuk suatu mikrokomputer (mikrokomputer = sistem ...
MIKROKONTROLER ? CPU dan peralatan pendukungnya berada pada IC yang sama, serta digunakan untuk penerapan sistem kendali, ...
MIKROPROSESOR DAN MIKROKONTROLER Mikroprosesor dan mikrokontroler mulai banyak digunakan dalam berbagai aplikasi elektroni...
MIKROPROSESOR DAN MIKROKONTROLER Keuntungan dari penggunaaan mikroprosesor dan mikrokontroler adalah sistem yang diciptaka...
STRUKTUR SISTEM MIKROKOMPUTER Dengan penambahan beberapa piranti pendukung (memori, piranti Input/Output, dsb), sebuah mik...
BAGIAN BAGIAN MIKROKOMPUTER Mikroprosesor sebagai unit pengolah pusat keseluruhan sistem, yaitu untuk menjalankan perangka...
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 mikroproses...
BAGIAN BAGIAN MIKROKOMPUTER Piranti I/O (Input/Output) berguna untuk mengkoneksikan sistem dengan dunia luar    untuk men...
BAGIAN BAGIAN MIKROKOMPUTER Clock  (denyut)    menyinkronkan kerja semua piranti dalam sistem. Sumber sinyal dari Clock b...
KESIMPULAN 1 IC mikroprosesor tak dapat berdiri sendiri, karena kerjanya sangatlah bergantung dari piranti2 pendukung lain...
KESIMPULAN 2 Akibat dari kebergantungannya yang besar pada piranti2 pendukung   mikroprosesor menjadi kurang efisien. Per...
KESIMPULAN 3 Meski kurang efisien dibanding mikrokontroler, untuk penggunaan tertentu mikroprosesor tetap mempunyai kelebi...
BEBERAPA JENIS MIKROPROSESOR  DAN MIKROKONTROLER 24
ARSITEKTUR MIKROKONTROLER  KELUARGA MCS-51 Mikrokontroler 8051    Intel mikrokontroler    populer, banyak perusahaan2 se...
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-ma...
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 8...
Susunan Pin IC 8051/8031/8751/8951
<ul><li>Port 0 (P0.0-P0.7)  punya fungsi ganda. Pada perancangan dengan minimum sistem (tanpa eksternal memori)    port0...
<ul><li>Port 1 pada pin 1-8 murni berfungsi sebagai I/O port. Terutama digunakan untuk mengkoneksikan mikrokontroler denga...
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/EP...
<ul><li>ALE (Address Latch Enable) </li></ul><ul><li>ALE pada pin 30 berguna untuk output sinyal pengontrol pada pengatura...
<ul><li>EA (External Address) </li></ul><ul><li>EA pada pin 31    memilih apakah program (kode) mikrokontroler akan dilet...
<ul><li>XTAL (=Osilator Kristal) </li></ul><ul><li>Seperti layaknya mikroprosesor pada umumnya, mikrokontroler juga memerl...
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 dit...
3. Ruang alamat memori data eksternal sebanyak maksimal 64KB misalnya 6264. Ruang alamat memori kode program dan ruang ala...
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 memor...
Menempati alamat memori-data 00h sampai 18h (32 byte)    4  Kelompok Register  ( Register Bank ), 8 byte memori dari masi...
Khusus  Register 0  dan  Register 1  (R0 dan R1) masih punya mempunyai kemampuan lain  register penampung alamat yang dip...
Instruksi SETB 00h  memori-bit  alamat 0h menjadi ‘1’ = membuat bit nomor 0 dari  memori-data  pada alamat 20h menjadi ‘1...
Special Function Register (SFR)    satu daerah RAM dalam IC keluarga MCS51   untuk mengatur perilakunya dalam hal-hal kh...
Sedangkan untuk menyimpan 0Fh ke Port 1 yang di SFR menempati memori-data pada alamat 90h, instruksi yang dipergunakan ada...
<ul><li>Untuk keperluan penulisan program, setiap mikroprosesor/mikrokontroler </li></ul><ul><li>selalu dilengkapi dengan ...
Dalam mikroprosesor/mikrokontroler yang lain, register-register dasar biasanya ditempatkan ditempat tersendiri dalam inti ...
Register Dasar MCS51
Register Dasar MCS51 <ul><li>Program Counter </li></ul><ul><li>Berkapasitas 16 bit.  </li></ul><ul><li>Di dalam PC dicatat...
LECTURE 3 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 1)
Register Dasar MCS51 <ul><li>Akumulator </li></ul><ul><li>Akumulator    sebuah register yang berfungsi untuk menampung (a...
Register Dasar MCS51 <ul><li>Stack Pointer Register </li></ul><ul><li>Salah satu bagian dari memori-data dipakai sebagai S...
Register Dasar MCS51 Program Status Word Program Status Word  (PSW) berfungsi mencatat kondisi prosesor setelah melaksanak...
Register Dasar MCS51 Data Pointer High Byte  (DPH) dan  Data Pointer Low Byte  (DPL) masing-masing merupakan register deng...
PEMROGRAMAN ASSEMBLY UNTUK MCS-51 Kode Program (perangkat lunak/ software ) pengendali mikrokontroler disusun dari kumpula...
PEMROGRAMAN ASSEMBLY UNTUK MCS-51 Objek dalam pemrograman mikrokontroler adalah data yang tersimpan di dalam memori,regist...
PEMROGRAMAN ASSEMBLY UNTUK MCS-51 Instruksi MOV A,7Fh merupakan contoh sebuah instruksi dasar yang sangat spesifik, MOV me...
Pengalamatan Data dalam MCS51 Instruksi MOV A,7Fh  merupakan contoh sebuah instruksi dasar yang sangat spesifik, MOV merup...
Pengalamatan Data dalam MCS51 Pengalamatan/penempatan data konstan/konstanta ( immediate addressing mode ): Contoh :MOV A,...
Pengalamatan Data dalam MCS51 Pengalamatan data secara tidak langsung ( indirect addressing mode )  menunjuk data yang be...
Pengalamatan Data dalam MCS51 Pengalamatan data dalam register ( register addressing mode ): MOV A,R5. Instruksi ini mempu...
Instruksi-instruksi dalam MCS51 <ul><li>Instruksi-instruksi tersebut secara dikelompokkan sebagai berikut : </li></ul><ul>...
Instruksi-instruksi dalam MCS51 KELOMPOK PENG-COPY-AN DATA Kode dasar  MOV  singkatan dari MOVE   memindahkan  lebih t...
Instruksi-instruksi dalam MCS51 KELOMPOK ARITMATIK  (ADD, ADDC, SUBB, DA, MUL dan DIV) Perintah ADD dan ADDC Isi  Akumulat...
Instruksi-instruksi dalam MCS51 Bilangan 1 byte    bilangan konstan, register serba guna, dari memori data yang alamat me...
Instruksi-instruksi dalam MCS51 Perintah SUBB Isi  Akumulator  A -  bilangan 1 byte  dengan nilai  bit Carry , hasil pengu...
Instruksi-instruksi dalam MCS51 Perintah DA Perintah DA ( Decimal Adjust ) dipakai setelah perintah ADD; ADDC atau SUBB, d...
Instruksi-instruksi dalam MCS51 Perintah MUL AB Bilangan biner 8 bit dalam  Akumulator  A dikalikan dengan bilangan biner ...
Instruksi-instruksi dalam MCS51 Perintah DIV AB Bilangan biner 8 bit dalam  Akumulator  A dibagi dengan bilangan biner 8 b...
Instruksi-instruksi dalam MCS51 KELOMPOK LOGIKA (ANL, ORL dan XRL) Operasi logika yang bisa dilakukan adalah  operasi AND ...
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 progr...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Kelompok Instruksi JUMP Mikrokontroler menjalankan instruksi-instruks...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Kelompok Instruksi JUMP Pada saat mikrokontroler menjalankan kelompok...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Kelompok Instruksi JUMP Pada saat mikrokontroler menjalankan kelompok...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Instruksi LJMP Kode untuk instruksi LJMP adalah 02h, memori-program b...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 ORG adalah perintah pada assembler agar berikutnya assembler bekerja ...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Instruksi AJMP memori-program baru yang dituju dinyatakan dengan bila...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 ORG 800h AJMP DaerahIni AJMP DaerahLain ORG 900h DaerahIni: . . . ORG...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Instruksi SJMP memori-program dalam instruksi ini tidak dinyatakan de...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 ORG 0F80h SJMP DaerahLain . . . ORG 1000h DaerahLain: instruksi SJMP ...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Kelompok Instruksi untuk sub-rutin Sub-rutin merupakan suatu potong p...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Agar nantinya mikrokontroler bisa meneruskan alur program utama, pada...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Instruksi ACALL dipakai untuk me-‘manggil’ program sub-rutin dalam da...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Kelompok Instruksi Jump Bersyarat Instruksi JZ ( Jump if Zero ) dan i...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Kelompok Instruksi Jump Bersyarat Dalam contoh program sebelumnya,  M...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Instruksi JC ( Jump on Carry ) dan instruksi JNC ( Jump on no Carry )...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 MOV A,#01010101B JNB ACC.0,LAGI ;JIKA A BIT KE 0=‘0’    LOMPAT KE LAG...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Kelompok Instruksi proses dan test  memantau kondisi yang sudah terj...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 MOV R0,#23h ;R0=’23H’ DJNZ R0,$ ;R0=R0-1 jika belum nol  maka looping...
Percabangan dan Pengaturan  Alur Program Pada MCS-51 Instruksi CJNE ( Compare and Jump if Not Equal ) membandingkan dua ni...
Assembler Directive <ul><li>Assembler Directive yang bersifat umum tersebut, antara lain adalah: </li></ul><ul><li>ORG – s...
Assembler Directive DB – singkatan dari  DEFINE BYTE , dipakai untuk memberi nilai tertentu pada memori-program. Nilai ter...
Assembler Directive DW – singkatan dari  DEFINE WORD , dipakai untuk memberi nilai 2 byte ke  memori-program  pada baris b...
Pemrograman Untuk Port Paralel Pada MCS51 Port paralel merupakan sarana utama sebuah chip Mikrokontroler, lewat sarana ini...
Pemrograman Untuk Port Paralel Pada MCS51 Masing-masing jalur (kaki) dari port paralel di-nomor-i mulai dari 0 sampai 7, j...
Pemrograman Untuk Port Paralel Pada MCS51 kelompok instruksi kedua hanya berpengaruh pada salah satu jalur dari port, misa...
Pemrograman Untuk Port Paralel Pada MCS51 ORG 0 JMP PROGRAM ORG 100H PROGRAM:MOV A,#0H ULANG:  MOV P1,A CALL DELAY INC A J...
Pemrograman Untuk Port Paralel Pada MCS51 ORG 000H JMP MULAI ORG 100H MULAI: MOV P1,#0FFH ULANG: JNB P1.0,ULANG MOV P1,#00...
Pemrograman Untuk Port Paralel Pada MCS51 ORG 000H JMP PROGRAM ORG 100H PROGRAM: MOV P1,#0FFh ULANG1:  MOV C,P1.0 MOV P1.1...
Pemrograman Untuk Port Paralel Pada MCS51 ORG 000H JMP PROGRAM ORG 100H PROGRAM: MOV A,#01H ;A=00000001 ULANG:  MOV P1,A ;...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
LECTURE 5 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 3)
Pemrograman Dasar MCS-51 <ul><li>Ditulis dengan bahasa assembler, C, Basic,Pascal. </li></ul>Proses kompilasi akan diperag...
STRUKTUR MEMORI <ul><li>Memori dari 89SXX terbagi menjadi: </li></ul><ul><li>- RAM Internal </li></ul><ul><li>o Register B...
STRUKTUR MEMORI
STRUKTUR MEMORI Accumulator (ACC) - Terletak pada alamat E0H - Operasi Aritmatik (Add A,#05H) - Operasi Logika (Anl A,#05H...
STRUKTUR MEMORI
STRUKTUR MEMORI Data Pointer (DPTR) - Terdiri dari dua register yaitu o DPH (82H) o DPL (83H) - Untuk akses data atau sour...
STRUKTUR MEMORI
STRUKTUR MEMORI Flash PEROM - Kapasitas 4 Kb - Alamat 000H hingga FFFH - Diakses bila: o Pin EA/VP 89S51 berlogika high o ...
STRUKTUR MEMORI External Memory - Dibutuhkan untuk: o Memori berkapasitas besar o Emulasi Program - Sistem pengalamatan Mu...
STRUKTUR MEMORI
STRUKTUR MEMORI Akses Memori Eksternal terdiri dari: o Pembacaan Data o Pembacaan Program (Kode) o Penulisan Data/Kode Pro...
STRUKTUR MEMORI
STRUKTUR MEMORI
STRUKTUR MEMORI
STRUKTUR MEMORI
STRUKTUR MEMORI
LECTURE 6 TIMER DAN COUNTER
TIMER PADA MCS51 <ul><li>Pada dasarnya sarana input yang satu ini merupakan seperangkat pencacah biner ( binary counter ) ...
TIMER PADA MCS51 <ul><li>Seperti layaknya pencacah biner, bilamana sinyal denyut ( clock ) yang diumpankan sudah melebihi ...
TIMER PADA MCS51
TIMER PADA MCS51 <ul><li>Sinyal denyut yang diumpankan ke pencacah bisa dibedakan menjadi 2 macam, yang pertama ialah : </...
TIMER PADA MCS51 <ul><li>Jika sebuah pencacah bekerja dengan frekuensi tetap yang sudah diketahui besarnya, dikatakan penc...
TIMER PADA MCS51 <ul><li>Untaian pencacah biner yang dipakai, bisa merupakan  pencacah biner menaik  ( count up binary cou...
TIMER PADA MCS51 Keluarga mikrokontroler MCS51, misalnya 8951, 8051, atau 8031 dilengkapi dengan dua perangkat Timer/Count...
TIMER PADA MCS51 Pencacah biner untuk Timer 0 dibentuk dengan register TL0 ( Timer 0 Low Byte , memori-data internal alama...
TIMER PADA MCS51 <ul><li>Pencacah biner pembentuk Timer/Counter MCS51 merupakan  pencacah biner menaik  ( count up binary ...
TIMER PADA MCS51 <ul><li>Pencacah biner Timer 0 dan 1 </li></ul><ul><li>TL0, TH0, TL1 dan TH1 merupakan SFR ( Special Func...
TIMER PADA MCS51 <ul><li>Pada Mode 0, Mode 1 dan Mode 2  Timer 0  dan  Timer 1  masing-masing bekerja sendiri, artinya bis...
TIMER MODE 0 PADA MCS51 Susunan TL0, TH0, TL1 dan TH1 pada mode 0 adalah sebagai berikut:  Pencacah biner dibentuk dengan ...
TIMER MODE 1 PADA MCS51 Susunan TL0, TH0, TL1 dan TH1 pada mode 1 adalah sebagai berikut:  Mode ini sama dengan Mode 0, ha...
TIMER MODE 2 PADA MCS51 Mode 2 – Pencacah Biner 8 bit dengan Isi Ulang (  8 bit Autoreload Binary Counter ) TLx dipakai se...
TIMER MODE 3 PADA MCS51 Pada Mode 3 TL0, TH0, TL1 dan TH1 dipakai untuk membentuk 3 untaian pencacah, yang pertama adalah ...
Register Pengatur Timer Register TMOD dibagi menjadi 2 bagian secara simetris, bit 0 sampai 3 register TMOD (TMOD bit 0 .....
Register Pengatur Timer <ul><li>Bit  M0/M1  dipakai untuk menentukan Mode Timer </li></ul><ul><li>2. Bit  C/T*  dipakai un...
Register Pengatur Timer Register  TCON  dibagi menjadi 2 bagian, 4 bit pertama (bit 0 .. bit 3, bagian yang diarsir dalam ...
Register Pengatur Timer Bit  TFx  (maksudnya adalah  TF0  atau  TF1)  merupakan bit penampung limpahan,  TFx  akan menjadi...
Register Pengatur Timer Bit  TRx  (maksudnya adalah  TR0  atau  TR1)  merupakan bit pengatur saluran sinyal denyut, bila b...
Register Pengatur Timer Setelah MCS51 di-reset register  TMOD  bernilai $00, hal ini berarti : •  bit  C/T*  =’ 0 ’, menur...
Register Pengatur Timer Jika sistem yang dirancang memang menghendaki  Timer 1  bekerja sebagai timer  maka bit  C/T * tid...
Register Pengatur Timer bit  GATE =’ 0 ’, hal ini membuat output gerbang OR selalu ‘ 1 ’ tidak dipengaruhi keadaan ‘ 0 ’ a...
Register Pengatur Timer Sebaliknya jika bit  GATE =’ 1 ’, output gerbang OR akan mengikuti keadaan kaki  INT1 , saat  INT1...
Register Pengatur Timer Jika sistem yang dirancang menghendaki kerja dari timer/counter dikendalikan dari sinyal yang bera...
Register Pengatur Timer Pengetahuan di atas dipakai sebagai dasar untuk mengatur dan mengendalikan Timer seperti terlihat ...
Register Pengatur Timer Bilangan biner  00010000  diisikan ke  TMOD , berakibat bit 7  TMOD  (bit  GATE ) bernilai ‘ 0 ’, ...
Register Pengatur Timer Perbedaannya dengan instruksi di atas adalah dalam instruksi ini bit 6 (bit  C/T* ) bernilai ‘ 1 ’...
Register Pengatur Timer <ul><li>TMOD  tidak bisa dialamati secara bit  ( non bit addressable ) sehingga jika jika kedua Ti...
Aplikasi Timer Pemakaian waktu tunda Waktu tunda banyak dipakai dalam pemrograman mikrokontroler untuk membangkitkan pulsa...
Aplikasi Timer Instruksi-instruksi berikut ini bisa dipakai untuk membangkitkan pulsa ‘ 0 ’ dengan lebar 3 mikro-detik pad...
Aplikasi Timer Dengan sedikit perubahan instruksi-instruksi di atas bisa membangkitkan sinyal dengan frekuensi 100 KHz pad...
Aplikasi Timer Program di atas bisa pula dibuat dengan memakai  Timer 1  sebagai pengatur waktu tunda sebagai berikut : MO...
Aplikasi Timer Pencacah biner yang dibentuk dengan register  TL1  akan mencacah naik seirama dengan siklus sinyal denyut, ...
Aplikasi Timer Instruksi  JNB TR1,$  menunggu bit  TR1  menjadi ‘ 1 ’, yakni saat pencacah biner melimpah dari  FFh  ke  0...
Aplikasi Timer Contoh Penggunaan dalam subrutin MOV TMOD,#01H … … CALL DELAY … … … DELAY: MOV TH0,#HIGH (-50000)  ;SEKITAR...
LECTURE 7 KOMUNIKASI SERIAL
SERIAL INTERFACE <ul><li>MCS-51 memiliki kemampuan untuk berkomunikasi secara serial melalui pin RXD dan TXD.  </li></ul><...
STANDART SERIAL INTERFACE <ul><li>Pada prinsipnya, komunikasi serial adalah komunikasi dimana transmisi data dilakukan per...
STANDART SERIAL INTERFACE <ul><li>Synchronous  serial adalah komunikasi dimana hanya ada satu pihak (pengirim atau penerim...
STANDART SERIAL INTERFACE <ul><li>Asynchronous serial  adalah komunikasi dimana kedua pihak (pengirim dan penerima) masing...
STANDART SERIAL INTERFACE <ul><li>Setelah adanya sinkronisasi, pengirim akan mengirimkan datanya sesuai dengan frekuensi  ...
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 tid...
MODE OPERASI <ul><li>MCS-51 memiliki 4 mode komunikasi serial.  </li></ul><ul><li>Mode 0 berupa synchronous serial  (shift...
MODE OPERASI <ul><li>Mode 0 adalah 8-bit shift register  dimana data dikirimkan dan diterima melalui  pin  RXD sedangkan  ...
MODE OPERASI <ul><li>Pada mode 1, jumlah data yang dikirimkan sebanyak 10 bit yang terdiri dari  start bit, 8  bit  data (...
MODE OPERASI <ul><li>Pada mode 2, jumlah data yang dikirimkan sebanyak 11 bit yang terdiri dari start bit, 8 bit data (LSB...
MODE OPERASI <ul><li>Mode 3 hampir sama dengan mode 2.  </li></ul><ul><li>Perbedaannya terdapat pada baud rate  yang digun...
BAUD RATE <ul><li>Baud rate adalah frekuensi clock yang digunakan dalam pengiriman dan penerimaan data.  </li></ul><ul><li...
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  d...
BAUD RATE <ul><li>Satu hal yang harus diperhatikan dalam pengaturan baud rate adalah nilai baud rate dan nilai TH1 diusaha...
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.  R...
INISIALISASI SERIAL 2.  TMOD, TH1 dan/atau TL1, PCON, dan TCON  Jika komunikasi serial digunakan dalam mode 1 atau 3, maka...
INISIALISASI SERIAL 3.  IE dan/atau IP  Jika komunikasi serial yang diprogram akan digunakan sebagai sumber interrupt, mak...
LECTURE 8 INTERUPSI
PENGANTAR <ul><li>8051 mempunyai 5 buah sumber interupsi.  </li></ul><ul><li>Dua buah interupsi eksternal, dua buah interu...
PENGANTAR <ul><li>Saat kaki RESET pada IC mikroprosesor / mikrokontroler menerima sinyal reset (pada MCS51 sinyal tersebut...
PENGANTAR <ul><li>Pembahasan di atas memberi gambaran bahwa proses reset merupakan peristiwa perangkat keras (sinyal reset...
PENGANTAR <ul><li>Peristiwa perangkat keras yang dipakai untuk mengatur kerja dari perangkat lunak, tidak hanya terjadi pa...
TEORI DASAR <ul><li>Jika permintaan interupsi ini dilayani prosesor, Program Counter akan diisi dengan sebuah nilai. Nilai...
BAGAN KERJA INTERUPSI <ul><li>Sebuah prosesor bisa mempunyai beberapa perangkat keras yang merupakan sumber sinyal permint...
BAGAN KERJA INTERUPSI <ul><li>Kadang kala sebuah vektor interupsi dipakai oleh lebih dari satu sumber interupsi yang sejen...
BAGAN KERJA INTERUPSI <ul><li>Jika pada saat yang sama terjadi lebih dari satu permintaan interupsi, prosesor akan melayan...
BAGAN KERJA INTERUPSI <ul><li>Selesai melayani interupsi perioritas tinggi prosesor meneruskan ISR semula, baru setelah it...
SUMBER INTERUPSI MCS51
SUMBER INTERUPSI MCS51 <ul><li>Seperti terlihat dalam Gambar 2, AT89C51 mempunyai 6 sumber interupsi </li></ul><ul><li>yak...
SUMBER INTERUPSI MCS51 <ul><li>Bit  IE0  (atau bit  IE1 ) dalam  TCON  merupakan petanda (flag) yang menandakan adanya per...
SUMBER INTERUPSI MCS51 Kalau bit  IT0  (atau  IT1 ) =’ 0 ’ maka bit  IE0  (atau  IE1 ) dalam  TCON  menjadi ‘ 1 ’ saat kak...
SUMBER INTERUPSI MCS51 Menjelang prosesor menjalankan  ISR  dari Interupsi Eksternal, bit  IE0  (atau bit  IE1 ) dikembali...
SUMBER INTERUPSI MCS51 Bit  TF0  (atau bit  TF1 ) dalam  TCON  merupakan petanda (flag) yang menandakan adanya permintaan ...
SUMBER INTERUPSI MCS51 Interupsi port seri terjadi karena dua hal, yang pertama terjadi setelah port seri selesai mengirim...
SUMBER INTERUPSI MCS51 Petanda di atas tidak dikembalikan menjadi ‘ 0’  menjelang prosesor menjalankan  ISR  dari Interups...
SUMBER INTERUPSI MCS51 Petanda permintaan interupsi ( IE0 ,  TF0 ,  IE1 ,  TF1 ,  RI  dan  TI ) semuanya bisa di-nol-kan a...
Mengaktifkan Interupsi Semua sumber permintaan interupsi yang di bahas di atas, masing-masing bisa di-aktif-kan atau di-no...
Mengaktifkan Interupsi Setelah reset, semua bit dalam register  IE  bernilai ‘ 0 ’, artinya sistem interupsi dalam keadaan...
Vektor Interupsi Saat MCS51 menanggapi permintaan interupsi    Program Counter diisi dengan sebuah nilai yang dinamakan s...
Vektor Interupsi Vektor interupsi untuk interupsi eksternal  INT0  adalah  0003h , untuk interupsi timer 0 adalah  000Bh  ...
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...
INTERFACING DENGAN  LCD KARAKTER DELAY1S: mov r0,#100 ss: call delay5ms djnz r0,ss RET delay5ms: MOV TMOD,#01H MOV TH0,#HI...
INTERFACING DENGAN  LCD KARAKTER baris2_lcd: mov a,#barisdua call kirim_perintah ret baris1_lcd: mov a,#homelcd call kirim...
INTERFACING DENGAN  LCD KARAKTER geser_display_kanan: mov a,#rdisplay call kirim_perintah ret geser_display_kiri: mov a,#l...
INTERFACING DENGAN  LCD KARAKTER baca_register: mov p2,#0ffh ;jadikan p2 sebagai input setb rw clr rs setb e mov a,p2 anl ...
INTERFACING DENGAN  LCD KARAKTER periksa_busy: call baca_register jb acc.7,periksa_busy ret kirim_data_lcd: setb e mov p2,...
INTERFACING DENGAN  LCD KARAKTER kirim_perintah: clr rw clr rs call kirim_data_lcd ;4bit sebanyak 2kali swap a call kirim_...
INTERFACING DENGAN  LCD KARAKTER init_lcd: setb rs clr e call delay5ms call delay5ms call delay5ms call delay5ms mov a,#30...
INTERFACING DENGAN  LCD KARAKTER hapus_layar: mov a,#01h call kirim_perintah ret data_lcd data p2 ;set4bit posisi msb kurs...
INTERFACING DENGAN  LCD KARAKTER posisi_awal_lcd: mov a,#02h ;set ke posisi paling awal call kirim_perintah ret kirim_pesa...
INTERFACING DENGAN  LCD KARAKTER kirim_pesan_lcd_with_delay: loop_kirim_pesan_lcd_with_delay: mov a,#0 ;ambil data dr memo...
INTERFACING DENGAN  LCD KARAKTER ;Contoh Program sederhana menampilkan karakter dan grafis ;Tabel karakter dan file librar...
INTERFACING DENGAN  LCD KARAKTER POLA: mov r1,#40h mov r2,#0 loop: mov a,r1 call kirim_perintah mov dptr,#heart mov a,r2 m...
INTERFACING DENGAN  LCD KARAKTER call init_lcd mov dptr,#pesanlcd1 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd...
INTERFACING DENGAN  LCD KARAKTER call hapus_layar call baris2_lcd call kursor_off mov dptr,#pesanlcd4 call kirim_pesan_lcd...
INTERFACING DENGAN  LCD KARAKTER call init_lcd mov dptr,#pesanlcd1 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd...
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...
INTERFACING DENGAN  LCD KARAKTER call hapus_layar call delay1s call baris1_lcd mov dptr,#pesanlcd4 call kirim_pesan_lcd ca...
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 H...
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 <ul><li>Sensors for mobile robots: theory and applications, H. R. Everett, A. K. Peters Ltd, C1995, ISBN: 1-568...
Some websites <ul><li>http://www.omega.com/  (sensors + hand-helds) </li></ul><ul><li>http://www.extech.com/  (hand-helds)...
What is Sensing ? <ul><li>Collect information about the world </li></ul><ul><li>Sensor - an electrical/mechanical/chemical...
Human sensing and organs <ul><li>Vision: eyes (optics, light) </li></ul><ul><li>Hearing: ears (acoustics, sound) </li></ul...
Extended ranges and modalities <ul><li>Vision outside the RGB spectrum </li></ul><ul><ul><li>Infrared Camera, see at night...
Transduction to electronics <ul><li>Thermistor: temperature-to-resistance </li></ul><ul><li>Electrochemical: chemistry-to-...
Sensor Fusion and Integration <ul><li>Human: One organ   one sense? </li></ul><ul><ul><li>Not necessarily </li></ul></ul>...
Sensor Fusion <ul><li>One sensor is (usually) not enough </li></ul><ul><ul><li>Real sensors are noisy </li></ul></ul><ul><...
General Processing Fusion Interpretation Sensing Perception Preprocessing Preprocessing Preprocessing Preprocessing Sensor...
Preprocessing <ul><li>Colloquially - ‘cleanup’ the sensor readings before using them </li></ul><ul><li>Noise reduction - f...
Sensor/Data Fusion <ul><li>Combine data from different sources </li></ul><ul><ul><li>measurements from different sensors <...
Interpretation <ul><li>Task specific </li></ul><ul><li>Often modeled as a best fit problem given some  a priori  knowledge...
Classification of  Sensors <ul><li>Proprioception (Internal state) v.s. Exteroceptive (external state)  </li></ul><ul><ul>...
Proprioceptive Sensors <ul><li>Encoders, Potentiometers </li></ul><ul><ul><li>measure angle of turn via change in resistan...
Touch Sensors <ul><li>Whiskers, bumpers etc. </li></ul><ul><ul><li>mechanical contact leads to </li></ul></ul><ul><ul><ul>...
Sensors Based on Sound <ul><li>SONAR:  So und  N avigation  a nd  R anging </li></ul><ul><ul><li>bounce sound off of objec...
Robotics Sensor Based on EM Spectrum
Electromagnetic Spectrum Visible Spectrum 700 nm 400 nm
Sensors Based on EM Spectrum <ul><li>Radio and Microwave </li></ul><ul><ul><li>RADAR:  Ra dio  D etection  a nd  R anging ...
Sensors Based on EM Spectrum <ul><li>Light sensitive   </li></ul><ul><ul><li>eyes, cameras, photocells etc. </li></ul></ul...
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...
Sensors Used in Robot <ul><li>Resistive sensors </li></ul><ul><ul><li>bend sensors, potentiometer, resistive photocells, ....
<ul><li>Bend Sensors </li></ul><ul><li>Resistance = 10k to 35k </li></ul><ul><li>As the strip is bent, resistance increase...
Applications Sensor <ul><li>Measure bend of a joint </li></ul><ul><li>Wall Following/Collision Detection </li></ul><ul><li...
Inputs for Resistive Sensors Voltage divider:  You have two resisters, one is fixed and the other varies, as well as a con...
Infrared Sensors <ul><li>Intensity based infrared </li></ul><ul><ul><li>Reflective sensors  </li></ul></ul><ul><ul><li>Eas...
Intensity Based Infrared   <ul><li>Easy to implement (few components) </li></ul><ul><li>Works very well in controlled envi...
IR Reflective Sensors <ul><li>Reflective Sensor:  </li></ul><ul><ul><li>Emitter IR LED + detector photodiode/phototransist...
Modulated Infrared <ul><li>Modulation and Demodulation </li></ul><ul><ul><li>Flashing a light source at a particular frequ...
IR Proximity Sensors <ul><li>Proximity Sensors:  </li></ul><ul><ul><li>Requires a modulated IR LED, a detector module with...
IR Distance Sensors <ul><li>Basic principle of operation: </li></ul><ul><ul><li>IR emitter + focusing lens + position-sens...
IR Distance Sensors <ul><li>Sharp GP2D02 IR Ranger </li></ul><ul><ul><li>Distance range: 10cm (4&quot;) ~ 80cm (30&quot;)....
Basic Navigation Techniques <ul><li>•  Relative Positioning (called  Dead-reckoning ) </li></ul><ul><li>–  Information req...
Dead Reckoning Cause of unbounded accumulation error: <ul><li>Systematic Errors: </li></ul><ul><li>Unequal wheel diameters...
Sensors used in navigation <ul><li>Dead Reckoning </li></ul><ul><ul><li>Odometry  (monitoring the wheel revolution to comp...
Robotics Sensor and Aktuator Example
Incremental Optical Encoders <ul><li>Relative position  </li></ul>- calibration ?   - direction ?   - resolution ?   grati...
Quiz 2: How could you augment a grating-based (relative) encoder in order to detect the  direction  of rotation? light emi...
<ul><li>Relative position  </li></ul>grating light emitter light sensor decode circuitry A B A B A leads B - calibration ?...
Incremental Optical Encoders - direction   - resolution   grating light emitter light sensor Decode circuitry <ul><ul><li>...
Incremental Optical Encoders <ul><ul><li>Incremental Encoder: </li></ul></ul>Encoder pulse and motor direction A B A leads B
Absolute Optical Encoders Gray Code <ul><li>Used when loss of reference is not possible. </li></ul><ul><li>Gray codes: onl...
Other Odometry Sensors <ul><li>Resolver   </li></ul><ul><li>Potentiometer   </li></ul><ul><li>= varying resistance </li></...
Range Finder (Ultrasonic, Laser)
Range Finder <ul><li>Time of Flight </li></ul><ul><li>The measured pulses typically come form ultras
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
Upcoming SlideShare
Loading in …5
×

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

18,872 views

Published on

my lecture presentation in department of electronics & computer engineering at satya wacana christian university salatiga indonesia

Published in: Technology, Business
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
18,872
On SlideShare
0
From Embeds
0
Number of Embeds
39
Actions
Shares
0
Downloads
2,934
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide
  • M I C R O C O N T R O L L E R 2009new

    1. 1. Deddy Susilo, S.T. 61546 EE-632 MICROCONTROLLER
    2. 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. 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. 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. 5. LECTURE 1 ARSITEKTUR MIKROKONTROLER MCS51 (PART 1)
    6. 6. MIKROPROSESOR ? MIKROKOMPUTER ? MIKROKONTROLER ?
    7. 7. MIKROPROSESOR ? sebuah IC ( Integrated Circuit ) yang digunakan sebagai otak/pengolah utama dalam sebuah sistem komputer
    8. 8. MIKROPROSESOR ? 1971 oleh Intel Corp, yaitu Mikroprosesor Intel 4004 yang mempunyai arsitektur 4 bit
    9. 9. MIKROPROSESOR ? 8080(berarsitektur 8 bit), 8085, dan kemudian 8086 (berarsitektur 16 bit)
    10. 10. MIKROPROSESOR ? Motorola dengan M6800 dan Zilog dengan Z80 nya
    11. 11. MIKROKOMPUTER ? sebuah mikroprosesor merupakan CPU (unit pengolah pusat) sistem 8
    12. 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 ,
    13. 13. MIKROKOMPUTER ?
    14. 14. MIKROKOMPUTER ? mikroprosesor dengan piranti pendukungnya dikatakan membentuk suatu mikrokomputer (mikrokomputer = sistem komputer yang menggunakan sebuah mikroprosesor sebagai CPUnya)
    15. 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. 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. 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. 18. STRUKTUR SISTEM MIKROKOMPUTER Dengan penambahan beberapa piranti pendukung (memori, piranti Input/Output, dsb), sebuah mikroprosesor dapat diubah menjadi sebuah mikrokomputer
    19. 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. 20. BAGIAN BAGIAN MIKROKOMPUTER ROM berguna untuk menyimpan perangkat lunak yang akan dijalankan oleh mikroprosesor.
    21. 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. 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. 23. BAGIAN BAGIAN MIKROKOMPUTER Clock (denyut)  menyinkronkan kerja semua piranti dalam sistem. Sumber sinyal dari Clock biasanya didapatkan dari osilator kristal.
    24. 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. 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. 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. 27. BEBERAPA JENIS MIKROPROSESOR DAN MIKROKONTROLER 24
    28. 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. 29. LECTURE 2 ARSITEKTUR MIKROKONTROLER MCS51 (PART 2)
    30. 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. 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. 32. Susunan Pin IC 8051/8031/8751/8951
    33. 33. <ul><li>Port 0 (P0.0-P0.7)  punya fungsi ganda. Pada perancangan dengan minimum sistem (tanpa eksternal memori)  port0  I/O </li></ul><ul><li>Pada perancangan dengan penambahan memori eksternal (baik RAM & ROM/EPROM)  multiplexing alamat ( address ) dan data </li></ul><ul><li>Maksud dari multiplexing alamat dan data bahwa keluaran port 0 (P0.0-P0.7) adalah address A0-A7 dan kadang juga berupa data D0-D7. </li></ul><ul><li>Pada setengah siklus waktu kerja mikrokontroler, port 0  keluaran alamat A0-A7 dan pada setengah siklus berikutnya port 0  keluaran data D0-D7. </li></ul><ul><li>Pergantian address dan data pada port 0 diketahui EPROM/RAM eksternal pada keluaran pin ALE </li></ul>
    34. 34. <ul><li>Port 1 pada pin 1-8 murni berfungsi sebagai I/O port. Terutama digunakan untuk mengkoneksikan mikrokontroler dengan piranti luar (misal DAC, ADC, keyboard, display, dsb). </li></ul><ul><li>Port 2 pada pin 21-28 juga mempunyai fungsi ganda. Pada perancangan dengan minimum sistem, port 2 difungsikan sebagai I/O </li></ul><ul><li>Sedangkan pada perancangan dengan penambahan memori eksternal, port 2 digunakan sebagai address bus(A8-A15) . </li></ul>
    35. 35. Port 3 pada pin 10-17 adalah port multifungsi, setiap pin dari port 3 mempunyai fungsi-fungsi tersendiri.
    36. 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. 37. <ul><li>ALE (Address Latch Enable) </li></ul><ul><li>ALE pada pin 30 berguna untuk output sinyal pengontrol pada pengaturan multiplexing alamat dan data pada port 0. </li></ul><ul><li>Pin ALE akan mengeluarkan sinyal high pada saat keluaran dari port 0 adalah address, dan akan mengeluarkan sinyal low pada saat keluaran dari port 0 adalah data. </li></ul><ul><li>ALE adalah untuk memberitahu piranti eksternal yang terhubung ke port 0 bahwa pada saat itu keluaran port 0 adalah address ataukah data. </li></ul>
    38. 38. <ul><li>EA (External Address) </li></ul><ul><li>EA pada pin 31  memilih apakah program (kode) mikrokontroler akan diletakkan di ROM/EPROM internal atau eksternal. </li></ul><ul><li>Jika program (kode) diletakkan di ROM/EPROM eksternal, pin EA harus bernilai low (pin EA di-ground). </li></ul><ul><li>Sebaliknya jika program (kode) diletakkan di ROM/EPROM internal, pin EA harus bernilai high (pin EA dihubungkan ke VCC). </li></ul><ul><li>Pin PSEN otomatis tidak akan berfungsi jika EA bernilai high. </li></ul>
    39. 39. <ul><li>XTAL (=Osilator Kristal) </li></ul><ul><li>Seperti layaknya mikroprosesor pada umumnya, mikrokontroler juga memerlukan clock untuk operasinya. </li></ul><ul><li>Frekuensi dari osilator kristal tersebut mempengaruhi siklus kerja dari 8051. </li></ul><ul><li>Pada prinsipnya siklus kerja dari 8051 adalah 1/12 dari frekuensi osilator kristal yang dihubungkan dengan pin 18 dan 19. Pada penggunaan umum (lihat datasheet) biasa digunakan osilator kristal 12 MHz atau 11.0592 MHz. Jadi kira-kira satu siklus kerja dari 8051 adalah 1μs. </li></ul><ul><li>Semua pin pada IC mikrokontroler keluarga MCS-51  TTL kompatibel. </li></ul>
    40. 40. Contoh 8051/8751/8951 Development Board
    41. 41. Contoh 8951 Development Board Minimum System P0 P1 P2 P3 AT89SXX Vin 1 2 3
    42. 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. 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. 44. Pengalamatan Memori dan Register Pada MCS51 Khususnya AT89S51
    45. 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. 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. 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. 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. 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. 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. 51. <ul><li>Untuk keperluan penulisan program, setiap mikroprosesor/mikrokontroler </li></ul><ul><li>selalu dilengkapi dengan Register Dasar. </li></ul><ul><li>Register Baku  Program Counter , Akumulator , Stack Pointer Register , Program Status Register . </li></ul><ul><li>MCS51 mempunyai semua register baku ini. </li></ul><ul><li>Register yang khas MCS51  Register B , Data Pointer High Byte dan Data Pointer Low Byte </li></ul><ul><li>Register Serba Guna R0..R7 </li></ul>Register Dasar MCS51
    52. 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
    53. 53. Register Dasar MCS51
    54. 54. Register Dasar MCS51 <ul><li>Program Counter </li></ul><ul><li>Berkapasitas 16 bit. </li></ul><ul><li>Di dalam PC dicatat nomor memori-program yang menyimpan instruksi berikutnya yang akan diambil ( fetch ) sebagai instruksi untuk dikerjakan ( execute ). </li></ul><ul><li>Saat setelah reset PC bernilai 0000h, berarti MCS51 akan segera mengambil isi memori-program nomor 0 sebagai instruksi. </li></ul><ul><li>Nilai PC otomatis bertambah 1 setelah prosesor mengambil instruksi 1 byte. </li></ul><ul><li>Ada instruksi yang hanya 1 byte, ada instruksi yang sampai 4 byte, dengan demikian pertambahan nilai PC setelah menjalankan instruksi, tergantung pada jumlah byte instruksi bersangkutan. </li></ul>
    55. 55. LECTURE 3 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 1)
    56. 56. Register Dasar MCS51 <ul><li>Akumulator </li></ul><ul><li>Akumulator  sebuah register yang berfungsi untuk menampung (accumulate) hasil pengolahan data </li></ul><ul><li>Akumulator bisa menampung data 8 bit (1 byte) dan merupakan register yang paling banyak kegunaannya, lebih dari setengah instruksi-instruksi MCS51 melibatkan Akumulator. </li></ul><ul><li>Instruksi-instruksi berikut memperjelas pengertian di atas : </li></ul><ul><ul><li>MOV A,#20h </li></ul></ul><ul><ul><li>ADD A,#30h </li></ul></ul><ul><li>Instruksi pertama menyimpan nilai 20h ke Akumulator, </li></ul><ul><li>Instruksi kedua menambahkan bilangan 30h ke akumulator, hasil penjumlahan sebesar 50h ditampung di Akumulator. </li></ul>
    57. 57. Register Dasar MCS51 <ul><li>Stack Pointer Register </li></ul><ul><li>Salah satu bagian dari memori-data dipakai sebagai Stack  tempat yang dipakai untuk menyimpan sementara nilai PC sebelum prosesor menjalankan sub-rutin, nilai tersebut akan diambil kembali dari Stack dan dikembalikan ke PC saat prosesor selesai menjalankan sub-rutin. </li></ul><ul><li>Stack Pointer Register adalah register yang berfungsi untuk mengatur kerja stack, dalam Stack Pointer Register disimpan nomor memori-data yang dipakai untuk operasi Stack berikutnya. </li></ul>
    58. 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. 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. 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. 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. 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. 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. 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. 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. 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. 67. Instruksi-instruksi dalam MCS51 <ul><li>Instruksi-instruksi tersebut secara dikelompokkan sebagai berikut : </li></ul><ul><li>Kelompok Peng-copy-an Data </li></ul><ul><li>2. Kelompok Aritmatika </li></ul><ul><li>3. Kelompok Logika </li></ul><ul><li>4. Kelompok Percabangan </li></ul>
    68. 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. 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. 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. 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. 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. 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. 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. 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. 76. LECTURE 4 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 2)
    77. 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. 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. 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. 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. 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. 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. 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. 84. Percabangan dan Pengaturan Alur Program Pada MCS-51 ORG 800h AJMP DaerahIni AJMP DaerahLain ORG 900h DaerahIni: . . . ORG 1000h DaerahLain: . . .
    85. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 97. Assembler Directive <ul><li>Assembler Directive yang bersifat umum tersebut, antara lain adalah: </li></ul><ul><li>ORG – singkatan dari ORIGIN , untuk menyatakan nomor memori yang dipakai setelah perintah itu, misalnya ORG 1000h maka memori berikutnya yang dipakai Assembler adalah 1000h. ORG berlaku untuk memori program maupun memori-data. </li></ul><ul><li>ORG 1000h </li></ul><ul><li>2. EQU – singkatan dari EQUATE , dipakai untuk menentukan nilai sebuah Symbol. </li></ul><ul><li>Angka88 EQU 88 </li></ul><ul><li>Berarti memberi nilai 88 pada Symbol Angka88 </li></ul>
    98. 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. 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. 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. 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. 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. 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. 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. 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. 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. 125. LECTURE 5 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 3)
    108. 126. Pemrograman Dasar MCS-51 <ul><li>Ditulis dengan bahasa assembler, C, Basic,Pascal. </li></ul>Proses kompilasi akan diperagakan
    109. 127. STRUKTUR MEMORI <ul><li>Memori dari 89SXX terbagi menjadi: </li></ul><ul><li>- RAM Internal </li></ul><ul><li>o Register Bank </li></ul><ul><li>o Bit addressable RAM </li></ul><ul><li>o General Purpose RAM </li></ul><ul><li>- Register Fungsi Khusus (Special Function Register) </li></ul><ul><li>- Flash PEROM </li></ul><ul><li>- Memori Eksternal </li></ul>
    110. 128. STRUKTUR MEMORI
    111. 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)
    112. 130. STRUKTUR MEMORI
    113. 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
    114. 132. STRUKTUR MEMORI
    115. 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
    116. 134. STRUKTUR MEMORI External Memory - Dibutuhkan untuk: o Memori berkapasitas besar o Emulasi Program - Sistem pengalamatan Multiplex Addressing
    117. 135. STRUKTUR MEMORI
    118. 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
    119. 137. STRUKTUR MEMORI
    120. 138. STRUKTUR MEMORI
    121. 139. STRUKTUR MEMORI
    122. 140. STRUKTUR MEMORI
    123. 141. STRUKTUR MEMORI
    124. 142. LECTURE 6 TIMER DAN COUNTER
    125. 143. TIMER PADA MCS51 <ul><li>Pada dasarnya sarana input yang satu ini merupakan seperangkat pencacah biner ( binary counter ) yang terhubung langsung ke saluran-data mikrokontroler, sehingga mikrokontroler bisa membaca kedudukan pancacah, bila diperlukan mikrokontroler dapat pula merubah kedudukan pencacah tersebut. </li></ul>
    126. 144. TIMER PADA MCS51 <ul><li>Seperti layaknya pencacah biner, bilamana sinyal denyut ( clock ) yang diumpankan sudah melebihi kapasitas pencacah, maka pada bagian akhir untaian pencacah akan timbul sinyal limpahan, sinyal ini merupakan suatu hal yang penting sekali dalam pemakaian pencacah. Terjadinya limpahan pencacah ini dicatat dalam sebuah flip-flop tersendiri. </li></ul>
    127. 145. TIMER PADA MCS51
    128. 146. TIMER PADA MCS51 <ul><li>Sinyal denyut yang diumpankan ke pencacah bisa dibedakan menjadi 2 macam, yang pertama ialah : </li></ul><ul><li>Sinyal denyut dengan frekuensi tetap yang udah diketahui besarnya. </li></ul><ul><li>Sinyal denyut dengan frekuensi tidak tetap. </li></ul>
    129. 147. TIMER PADA MCS51 <ul><li>Jika sebuah pencacah bekerja dengan frekuensi tetap yang sudah diketahui besarnya, dikatakan pencacah tersebut bekerja sebagai timer , karena kedudukan pencacah tersebut setara dengan waktu yang bisa ditentukan dengan pasti. </li></ul><ul><li>Jika sebuah pencacah bekerja dengan frekuensi yang tidak tetap, dikatakan pencacah tersebut bekerja sebagai counter , kedudukan pencacah tersebut hanyalah menyatakan banyaknya pulsa yang sudah diterima pencacah. </li></ul>
    130. 148. TIMER PADA MCS51 <ul><li>Untaian pencacah biner yang dipakai, bisa merupakan pencacah biner menaik ( count up binary counter ) atau pencacah biner menurun ( count down binary counter ). </li></ul><ul><li>Timer/Counter sebagai sarana input banyak dijumpai dalam mikrokontroler, misalnya mikrokontroler keluarga MCS48, keluarga MCS51 ataupun M68HC11 semuanya memiliki Timer/Counter di dalam chip sebagai sarana input. </li></ul>
    131. 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 .
    132. 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).
    133. 151. TIMER PADA MCS51 <ul><li>Pencacah biner pembentuk Timer/Counter MCS51 merupakan pencacah biner menaik ( count up binary counter ) yang mencacah dari 0000h sampai FFFFh </li></ul><ul><li>Saat kedudukan pencacah berubah dari FFFFh kembali ke 0000h akan timbul sinyal limpahan. </li></ul><ul><li>Untuk mengatur kerja Timer/Counter dipakai 2 register tambahan yang dipakai bersama oleh Timer 0 dan Timer 1. </li></ul><ul><li>Register tambahan tersebut adalah register TCON ( Timer Control Register , memori-data internal alamat 88h, bisa dialamati secara bit) dan register TMOD ( Timer Mode Register , memori-data internal alamat 89h). </li></ul>
    134. 152. TIMER PADA MCS51 <ul><li>Pencacah biner Timer 0 dan 1 </li></ul><ul><li>TL0, TH0, TL1 dan TH1 merupakan SFR ( Special Function Register ) yang dipakai untuk membentuk pencacah biner perangkat Timer 0 dan Timer 1 . </li></ul><ul><li>Kapasitas keempat register tersebut masing-masing 8 bit, bisa disusun menjadi 4 macam Mode pencacah biner </li></ul>
    135. 153. TIMER PADA MCS51 <ul><li>Pada Mode 0, Mode 1 dan Mode 2 Timer 0 dan Timer 1 masing-masing bekerja sendiri, artinya bisa dibuat Timer 0 bekerja pada Mode 1 dan Timer 1 bekerja pada Mode 2, atau kombinasi mode lainnya sesuai dengan keperluan. </li></ul><ul><li>Pada Mode 3 TL0, TH0, TL1 dan TH1 dipakai bersama-sama untuk menyusun sistem timer yang tidak bisa di-kombinasi lain. </li></ul>
    136. 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.
    137. 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.
    138. 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.
    139. 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.
    140. 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 .
    141. 159. Register Pengatur Timer <ul><li>Bit M0/M1 dipakai untuk menentukan Mode Timer </li></ul><ul><li>2. Bit C/T* dipakai untuk mengatur sumber sinyal denyut yang diumpankan ke pencacah biner. Jika C/T* =0 sinyal denyut diperoleh dari osilator kristal yang frekuensinya sudah dibagi 12, sedangkan jika C/T* =1 maka sinyal denyut </li></ul><ul><li>diperoleh dari kaki T0 (untuk Timer 0 ) atau kaki T1 (untuk Timer 1 ). </li></ul><ul><li>3. Bit GATE merupakan bit pengatur saluran sinyal denyut. Bila bit GATE =0 saluran sinyal denyut hanya diatur oleh bit TRx (maksudnya adalah TR0 atau TR1 pada register TCON ). Bila bit GATE =1 kaki INT0 (untuk Timer 0 ) atau kaki INT1 (untuk Timer 1 ) dipakai juga untuk mengatur saluran sinyal denyut </li></ul>
    142. 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
    143. 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 ).
    144. 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
    145. 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 .
    146. 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 ’.
    147. 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’ .
    148. 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 ’
    149. 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’ .
    150. 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
    151. 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
    152. 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
    153. 171. Register Pengatur Timer <ul><li>TMOD tidak bisa dialamati secara bit ( non bit addressable ) sehingga jika jika kedua Timer dipakai, pengisian bit-bit dalam register TMOD harus dipikirkan sekali gus untuk Timer 0 dan Timer 1 . </li></ul><ul><li>Bit TR1 dan TR0 yang dipakai untuk mengendalikan proses pencacahan, terletak di dalam register TCON (memori-data internal nomor 88h) yang bisa dialamati secara bit ( bit addressable ). Sehingga TR0 dan TR1 bisa diatur secara terpisah (dengan perintah SETB atau CLR ), tidak seperti mengatur TMOD yang harus dilakukan secara bersamaan. </li></ul><ul><li>Bit penampung limpahan pencacah biner TF0 dan TF1 , juga terletak dalam register TCON yang masing-masing bisa di-monitor sendiri. </li></ul>
    154. 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.
    155. 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
    156. 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.
    157. 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.
    158. 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)
    159. 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.
    160. 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
    161. 179. LECTURE 7 KOMUNIKASI SERIAL
    162. 180. SERIAL INTERFACE <ul><li>MCS-51 memiliki kemampuan untuk berkomunikasi secara serial melalui pin RXD dan TXD. </li></ul><ul><li>Satu hal yang perlu diingat adalah tingkat tegangan komunikasi kedua pin serial menggunakan tingkat tegangan TTL </li></ul>
    163. 181. STANDART SERIAL INTERFACE <ul><li>Pada prinsipnya, komunikasi serial adalah komunikasi dimana transmisi data dilakukan per bit. </li></ul><ul><li>Interface serial hanya membutuhkan jalur yang sedikit (umumnya hanya 2 jalur) sehingga lebih menghemat pin jika dibandingkan dengan interface paralel. </li></ul><ul><li>Komunikasi serial ada dua macam, asynchronous serial dan synchronous serial. </li></ul>
    164. 182. STANDART SERIAL INTERFACE <ul><li>Synchronous serial adalah komunikasi dimana hanya ada satu pihak (pengirim atau penerima) yang menghasilkan clock dan mengirimkan clock tersebut bersama-sama dengan data. </li></ul><ul><li>Contoh pengunaan synchronous serial terdapat pada transmisi data keyboard. </li></ul>
    165. 183. STANDART SERIAL INTERFACE <ul><li>Asynchronous serial adalah komunikasi dimana kedua pihak (pengirim dan penerima) masing-masing menghasilkan clock namun hanya data yang ditransmisikan, tanpa clock. </li></ul><ul><li>Agar data yang dikirim sama dengan data yang diterima, maka kedua frekuensi clock harus sama dan harus erdapat sinkronisasi. </li></ul>
    166. 184. STANDART SERIAL INTERFACE <ul><li>Setelah adanya sinkronisasi, pengirim akan mengirimkan datanya sesuai dengan frekuensi clock pengirim dan penerima akan membaca data sesuai dengan frekuensi clock penerima. </li></ul><ul><li>Contoh penggunaan asynchronous serial adalah pada Universal Asynchronous Receiver Transmitter (UART) yang digunakan pada serial port (COM) komputer. </li></ul><ul><li>MCS-51 mendukung komunikasi secara asinkron, bahkan tiga dari empat serial mode yang dimiliki MCS-51 kompatibel dengan UART. </li></ul>
    167. 185. SERIAL REGISTER Register yang digunakan untuk mengatur komunikasi serial terdapat pada Serial Control (SCON)
    168. 186. SERIAL REGISTER Baud rate pada mode 1, 2, dan 3 dapat dilipatgandakan dengan memberi nilai ‘1’ pada SMOD (dalam SFR PCON)
    169. 187. SERIAL REGISTER
    170. 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.
    171. 189. MODE OPERASI <ul><li>MCS-51 memiliki 4 mode komunikasi serial. </li></ul><ul><li>Mode 0 berupa synchronous serial (shift register), sedangkan tiga mode yang lain berupa asynchronous serial (UART). </li></ul><ul><li>Pada semua mode, pengiriman dilakukan jika ada instruksi yang mengisi nilai register SBUF. </li></ul><ul><li>Sedangkan pada saat penerimaan, data yang diterima akan disimpan pada register SBUF. </li></ul>
    172. 190. MODE OPERASI <ul><li>Mode 0 adalah 8-bit shift register dimana data dikirimkan dan diterima melalui pin RXD sedangkan clock dikirimkan dan diterima melalui pin TXD. </li></ul><ul><li>Pengiriman data 8 bit dilakukan dengan mengirimkan Least Significant Bit (LSB) terlebih dahulu. </li></ul><ul><li>Pada mode 0, baud rate yang digunakan adalah sebesar 1/12 dari frekuensi osilator. </li></ul>
    173. 191. MODE OPERASI <ul><li>Pada mode 1, jumlah data yang dikirimkan sebanyak 10 bit yang terdiri dari start bit, 8 bit data (LSB terlebih dahulu), dan stop bit. </li></ul><ul><li>Pada proses penerimaan, nilai stop bit akan dimasukkan ke RB8 secara otomatis. Pada proses pengiriman, stop bit akan diberi nilai ‘1’ secara otomatis. </li></ul><ul><li>Pada mode 1, baud rate yang digunakan dapat diatur melalui Timer 1 </li></ul>
    174. 192. MODE OPERASI <ul><li>Pada mode 2, jumlah data yang dikirimkan sebanyak 11 bit yang terdiri dari start bit, 8 bit data (LSB terlebih dahulu), bit ke-9, dan stop bit. </li></ul><ul><li>Pada proses pengiriman, nilai bit ke-9 dapat diatur dengan mengisi nilai TB8. </li></ul><ul><li>Pada proses penerimaan, bit ke-9 akan dimasukkan ke RB8 secara otomatis. </li></ul><ul><li>Pada mode 2, baud rate yang dapat digunakan adalah sebesar 1/64 frekuensi osilator atau 1/32 frekuensi osilator jika SMOD bernilai ‘1’. </li></ul>
    175. 193. MODE OPERASI <ul><li>Mode 3 hampir sama dengan mode 2. </li></ul><ul><li>Perbedaannya terdapat pada baud rate yang digunakan. </li></ul><ul><li>Jika mode 2 menggunakan baud rate yang pasti, mode 3 menggunakan baud rate yang dihasilkan oleh Timer 1. </li></ul>
    176. 194. BAUD RATE <ul><li>Baud rate adalah frekuensi clock yang digunakan dalam pengiriman dan penerimaan data. </li></ul><ul><li>Satuan baud rate pada umumnya adalah bps (bit per second), yaitu jumlah bit yang dapat ditransmisikan per detik. </li></ul><ul><li>Baud rate untuk mode 0 bernilai tetap dengan rumus yang terdapat pada persamaan 1. </li></ul>
    177. 195. BAUD RATE Sedangkan baud rate untuk mode 2 memiliki 2 variasi tergantung dari kondisi SMOD.
    178. 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)
    179. 197. BAUD RATE <ul><li>Satu hal yang harus diperhatikan dalam pengaturan baud rate adalah nilai baud rate dan nilai TH1 diusahakan harus tepat dan bukan merupakan pembulatan. </li></ul><ul><li>Untuk komunikasi serial kecepatan tinggi, pembulatan terhadap nilai-nilai tersebut dapat mengakibatkan kekacauan dalam proses pengiriman atau penerimaan. </li></ul><ul><li>Jika terdapat nilai pecahan, user disarankan untuk mengganti osilator dengan frekuensi yang sesuai. </li></ul><ul><li>Untuk komunikasi dengan kecepatan rendah, toleransi terhadap kesalahan cukup besar sehingga pembulatan masih boleh dilakukan. </li></ul>
    180. 198. BAUD RATE Misalkan baud rate yang diinginkan adalah 19200 bps dengan frekuensi osilator 11,0592 MHz
    181. 199. BAUD RATE Untuk mendapatkan baud rate yang lambat, user dapat mengoperasikan Timer 1 pada mode 1 dengan rumus
    182. 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
    183. 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
    184. 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
    185. 203. LECTURE 8 INTERUPSI
    186. 204. PENGANTAR <ul><li>8051 mempunyai 5 buah sumber interupsi. </li></ul><ul><li>Dua buah interupsi eksternal, dua buah interupsi timer dan sebuah interupsi port serial. </li></ul><ul><li>Meskipun memerlukan pengertian yang lebih mendalam, pengetahuan mengenai interupsi sangat membantu mengatasi masalah pemrograman mikroprosesor/mikrokontroler dalam hal menangani banyak peralatan input/output. </li></ul><ul><li>Pengetahuan mengenai interupsi tidak cukup hanya dibahas secara teori saja, diperlukan contoh program yang konkrit untuk memahami. </li></ul>
    187. 205. PENGANTAR <ul><li>Saat kaki RESET pada IC mikroprosesor / mikrokontroler menerima sinyal reset (pada MCS51 sinyal tersebut berupa sinyal ‘1’ minimal 2 siklus mesin pada tegangan reset lebih besar dari VIH, pada prosesor lain umumnya merupakan sinyal ‘0’ sesaat),  Program Counter diisi dengan sebuah nilai. </li></ul><ul><li>Nilai tersebut dinamakan sebagai vektor reset (reset vector) </li></ul><ul><li>Merupakan nomor awal memori-program yang menampung program yang harus dijalankan. </li></ul>
    188. 206. PENGANTAR <ul><li>Pembahasan di atas memberi gambaran bahwa proses reset merupakan peristiwa perangkat keras (sinyal reset diumpankan ke kaki Reset) yang dipakai untuk mengatur kerja dari perangkat lunak, yakni menentukan aliran program prosesor (mengisi Program Counter dengan vektor reset). </li></ul><ul><li>Program yang dijalankan dengan cara reset, merupakan program utama bagi prosesor. </li></ul>
    189. 207. PENGANTAR <ul><li>Peristiwa perangkat keras yang dipakai untuk mengatur kerja dari perangkat lunak, tidak hanya terjadi pada proses reset, tapi terjadi pula dalam proses interupsi. </li></ul><ul><li>Dalam proses interupsi, terjadinya sesuatu pada perangkat keras tertentu dicatat dalam flip-flop khusus, flip-flop tersebut sering disebut sebagai ‘petanda’ (flag), catatan dalam petanda tersebut diatur sedemikian rupa sehingga bisa merupakan sinyal permintaan interupsi pada prosesor. </li></ul>
    190. 208. TEORI DASAR <ul><li>Jika permintaan interupsi ini dilayani prosesor, Program Counter akan diisi dengan sebuah nilai. Nilai tersebut dinamakan sebagai vektor interupsi (interrupt vector), yang merupakan nomor awal memori-program yang menampung program yang dipakai untuk melayani permintaan interupsi tersebut. </li></ul><ul><li>Program yang dijalankan dengan cara interupsi, dinamakan sebagai program layanan interupsi (ISR - Interrupt Service Routine). Saat prosesor menjalankan ISR, pekerjaan yang sedang dikerjakan pada program utama sementara ditinggalkan, selesai menjalankan ISR prosesor kembali menjalankan program utama. </li></ul>
    191. 209. BAGAN KERJA INTERUPSI <ul><li>Sebuah prosesor bisa mempunyai beberapa perangkat keras yang merupakan sumber sinyal permintaan interupsi. </li></ul><ul><li>Masing-masing sumber interupsi dilayani dengan ISR berlainan. </li></ul><ul><li>Prosesor mempunyai beberapa vektor interupsi untuk memilih ISR mana yang dipakai melayani permintaan interupsi dari berbagai sumber. </li></ul>
    192. 210. BAGAN KERJA INTERUPSI <ul><li>Kadang kala sebuah vektor interupsi dipakai oleh lebih dari satu sumber interupsi yang sejenis, dalam hal semacam ini ISR bersangkutan harus menentukan sendiri sumber interupsi mana yang harus dilayani saat itu. </li></ul>
    193. 211. BAGAN KERJA INTERUPSI <ul><li>Jika pada saat yang sama terjadi lebih dari satu permintaan interupsi, prosesor akan melayani permintaan interupsi tersebut menurut prioritas yang sudah ditentukan. </li></ul><ul><li>Selesai melayani permintaan interupsi perioritas yang lebih tinggi, prosesor melayani permintaan interupsi berikutnya, baru setelah itu kembali mengerjakan program utama. </li></ul><ul><li>Saat prosesor sedang mengerjakan ISR, bisa jadi terjadi permintaan interupsi lain, jika permintaan interupsi yang datang belakangan ini mempunyai perioritas lebih tinggi, ISR yang sedang dikerjakan ditinggal dulu, prosesor melayani permintaan yang prioritas lebih tinggi. </li></ul>
    194. 212. BAGAN KERJA INTERUPSI <ul><li>Selesai melayani interupsi perioritas tinggi prosesor meneruskan ISR semula, baru setelah itu kembali mengerjakan program utama. Hal ini dikatakan sebagai interupsi bertingkat (nested interrupt), tapi tidak semua prosesor mempunyai kemampuan melayani interupsi secara ini. </li></ul>
    195. 213. SUMBER INTERUPSI MCS51
    196. 214. SUMBER INTERUPSI MCS51 <ul><li>Seperti terlihat dalam Gambar 2, AT89C51 mempunyai 6 sumber interupsi </li></ul><ul><li>yakni Interupsi External ( External Interrupt ) yang berasal dari kaki INT0 dan INT1 </li></ul><ul><li>Interupsi Timer ( Timer Interrupt ) yang berasal dari Timer 0 maupun Timer 1 </li></ul><ul><li>Interupsi Port Seri ( Serial Port Interrupt ) yang berasal dari bagian penerima dan bagian pengirim Port Seri. </li></ul><ul><li>Di samping itu AT89S52 mempunyai 2 sumber interupsi lain, yakni Interupsi Timer 2 bersumber dari Timer 2 yang memang tidak ada pada AT89C51. </li></ul>
    197. 215. SUMBER INTERUPSI MCS51 <ul><li>Bit IE0 (atau bit IE1 ) dalam TCON merupakan petanda (flag) yang menandakan adanya permintaan Interupsi Eksternal. </li></ul><ul><li>Ada 2 keadaan yang bisa meng-aktip-kan petanda ini, yang pertama karena level tegangan ‘ 0 ’ pada kaki INT0 (atau INT1 ), yang kedua karena terjadi transisi sinyal ‘ 1 ’ menjadi ‘ 0 ’ pada kaki INT0 (atau INT1 ). </li></ul><ul><li>Pilihan bentuk sinyal ini ditentukan lewat bit IT0 (atau bit IT1 ) yang terdapat dalam register TCON . </li></ul>
    198. 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 .
    199. 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!
    200. 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.
    201. 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 ’.
    202. 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.
    203. 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 .
    204. 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.
    205. 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 .
    206. 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.
    207. 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.
    208. 226. LECTURE 9 INTERFACING DENGAN LCD KARAKTER
    209. 227. INTERFACING DENGAN LCD KARAKTER
    210. 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
    211. 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
    212. 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
    213. 231. INTERFACING DENGAN LCD KARAKTER baris2_lcd: mov a,#barisdua call kirim_perintah ret baris1_lcd: mov a,#homelcd call kirim_perintah ret
    214. 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
    215. 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
    216. 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
    217. 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
    218. 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
    219. 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
    220. 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
    221. 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
    222. 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)
    223. 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
    224. 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
    225. 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
    226. 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
    227. 245. INTERFACING DENGAN LCD KARAKTER call hapus_layar mov dptr,#pesanlcd3 call kirim_pesan_lcd_with_delay call delay1s
    228. 246. INTERFACING DENGAN LCD KARAKTER call hapus_layar call baris2_lcd call kursor_off mov dptr,#pesanlcd4 call kirim_pesan_lcd call delay1s
    229. 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
    230. 248. INTERFACING DENGAN LCD KARAKTER call hapus_layar call delay1s call pola
    231. 249. LECTURE 10 INTERFACING DENGAN LCD GRAFIK
    232. 250. Koneksi LCD dengan Mikrokontroler
    233. 251. Spesifikasi Teknis
    234. 252. Spesifikasi Teknis
    235. 253. Spesifikasi Teknis
    236. 254. Spesifikasi Teknis
    237. 255. Spesifikasi Teknis
    238. 256. Spesifikasi Teknis
    239. 257. Spesifikasi Teknis
    240. 258. Spesifikasi Teknis
    241. 259. Spesifikasi Teknis
    242. 260. Spesifikasi Teknis
    243. 261. Spesifikasi Teknis
    244. 262. Spesifikasi Teknis
    245. 263. Pengalamatan Pada Layar LCD
    246. 264. Command
    247. 265. Command
    248. 266. Command
    249. 267. Start Line
    250. 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
    251. 269. Rutin Hapus Layar
    252. 270. Konversi dan nilai untuk Layar LCD2
    253. 271. Diagram Alir Menggambar Data Hasil Pengukuran di Layar LCD
    254. 272. Contoh Hasil di Layar Sinyal Uji 1kHz Sinus Sinyal Uji 125 Hz & 1kHz Sinus
    255. 273. Contoh Hasil di Layar Sinyal Uji Derau Putih Sinyal Uji Derau Merah Jambu
    256. 274. Contoh Hasil di Layar Sinyal Uji Derau Putih Sinyal Uji Derau Merah Jambu
    257. 275. LECTURE 11 EKSPANSI SISTEM MCS51 DENGAN DAC, ADC, SIPO, PISO, MUX ANALOG, LATCHES, PPI
    258. 276. LECTURE 12 Sensor-Sensor + IC Special Function
    259. 277. Robot Sensing and Sensors
    260. 278. References <ul><li>Sensors for mobile robots: theory and applications, H. R. Everett, A. K. Peters Ltd, C1995, ISBN: 1-56881-048-2 </li></ul><ul><li>Handbook of Modern Sensors: Physics, Designs and Applications , 2 nd edition, Jacob Fraden, AIP Press/Springer, 1996. ISBN 1-56396-538-0. </li></ul>
    261. 279. Some websites <ul><li>http://www.omega.com/ (sensors + hand-helds) </li></ul><ul><li>http://www.extech.com/ (hand-helds) </li></ul><ul><li>http://www.agilent.com/ (instruments, enormous) </li></ul><ul><li>http://www.keithley.com/ (instruments, big) </li></ul><ul><li>http://www.tegam.com/ (instruments, small) </li></ul><ul><li>http://www.edsci.com/ (optics ++) </li></ul><ul><li>http://www.pacific.net/~brooke/Sensors.html (comprehensive listing of sensors etc. and links) </li></ul>
    262. 280. What is Sensing ? <ul><li>Collect information about the world </li></ul><ul><li>Sensor - an electrical/mechanical/chemical device that maps an environmental attribute to a quantitative measurement </li></ul><ul><li>Each sensor is based on a transduction principle - conversion of energy from one form to another </li></ul>
    263. 281. Human sensing and organs <ul><li>Vision: eyes (optics, light) </li></ul><ul><li>Hearing: ears (acoustics, sound) </li></ul><ul><li>Touch: skin (mechanics, heat) </li></ul><ul><li>Odor: nose (vapor-phase chemistry) </li></ul><ul><li>Taste: tongue (liquid-phase chemistry) </li></ul>Counterpart?
    264. 282. Extended ranges and modalities <ul><li>Vision outside the RGB spectrum </li></ul><ul><ul><li>Infrared Camera, see at night </li></ul></ul><ul><li>Active vision </li></ul><ul><ul><li>Radar and optical (laser) range measurement </li></ul></ul><ul><li>Hearing outside the 20 Hz – 20 kHz range </li></ul><ul><ul><li>Ultrasonic range measurement </li></ul></ul><ul><li>Chemical analysis beyond taste and smell </li></ul><ul><li>Radiation:  ,  ,  -rays, neutrons, etc </li></ul>
    265. 283. Transduction to electronics <ul><li>Thermistor: temperature-to-resistance </li></ul><ul><li>Electrochemical: chemistry-to-voltage </li></ul><ul><li>Photocurrent: light intensity-to-current </li></ul><ul><li>Pyroelectric: thermal radiation-to-voltage </li></ul><ul><li>Humidity: humidity-to-capacitance </li></ul><ul><li>Length (LVDT: Linear variable differential transformers) : position-to-inductance </li></ul><ul><li>Microphone: sound pressure-to-<anything> </li></ul>
    266. 284. Sensor Fusion and Integration <ul><li>Human: One organ  one sense? </li></ul><ul><ul><li>Not necessarily </li></ul></ul><ul><ul><ul><li>Balance: ears </li></ul></ul></ul><ul><ul><ul><li>Touch: tongue </li></ul></ul></ul><ul><ul><ul><li>Temperature: skin </li></ul></ul></ul><ul><li>Robot: </li></ul><ul><ul><li>Sensor fusion: </li></ul></ul><ul><ul><ul><li>Combine readings from several sensors into a (uniform) data structure </li></ul></ul></ul><ul><ul><li>Sensor integration: </li></ul></ul><ul><ul><ul><li>Use information from several sensors to do something useful </li></ul></ul></ul>
    267. 285. Sensor Fusion <ul><li>One sensor is (usually) not enough </li></ul><ul><ul><li>Real sensors are noisy </li></ul></ul><ul><ul><li>Limited Accuracy </li></ul></ul><ul><ul><li>Unreliable - Failure/redundancy </li></ul></ul><ul><ul><li>Limited point of view of the environment </li></ul></ul><ul><ul><ul><li>Return an incomplete description of the environment </li></ul></ul></ul><ul><ul><li>The sensor of choice may be expensive - might be cheaper to combine two inexpensive sensors </li></ul></ul>
    268. 286. General Processing Fusion Interpretation Sensing Perception Preprocessing Preprocessing Preprocessing Preprocessing Sensor Sensor Sensor Sensor
    269. 287. Preprocessing <ul><li>Colloquially - ‘cleanup’ the sensor readings before using them </li></ul><ul><li>Noise reduction - filtering </li></ul><ul><li>Re-calibration </li></ul><ul><li>‘Basic’ stuff - e.g. edge detection in vision </li></ul><ul><li>Usually unique to each sensor </li></ul><ul><li>Change (transform) data representation </li></ul>
    270. 288. Sensor/Data Fusion <ul><li>Combine data from different sources </li></ul><ul><ul><li>measurements from different sensors </li></ul></ul><ul><ul><li>measurements from different positions </li></ul></ul><ul><ul><li>measurements from different times </li></ul></ul><ul><li>Often a mathematical technique that takes into account uncertainties in data sources </li></ul><ul><ul><li>Discrete Bayesian methods </li></ul></ul><ul><ul><li>Neural networks </li></ul></ul><ul><ul><li>Kalman filtering </li></ul></ul><ul><li>Produces a merged data set (as though there was one ‘virtual sensor’) </li></ul>
    271. 289. Interpretation <ul><li>Task specific </li></ul><ul><li>Often modeled as a best fit problem given some a priori knowledge about the environment </li></ul><ul><li>Tricky </li></ul>
    272. 290. Classification of Sensors <ul><li>Proprioception (Internal state) v.s. Exteroceptive (external state) </li></ul><ul><ul><li>measure values internally to the system (robot), e.g. battery level, wheel position, joint angle, etc, </li></ul></ul><ul><ul><li>observation of environments, objects </li></ul></ul><ul><li>Active v.s. Passive </li></ul><ul><ul><li>emitting energy into the environment, e.g., radar, sonar </li></ul></ul><ul><ul><li>passively receive energy to make observation, e.g., camera </li></ul></ul><ul><li>Contact v.s. non-contact </li></ul><ul><li>Visual v.s. non-visual </li></ul><ul><ul><li>vision-based sensing, image processing, video camera </li></ul></ul>
    273. 291. Proprioceptive Sensors <ul><li>Encoders, Potentiometers </li></ul><ul><ul><li>measure angle of turn via change in resistance or by counting optical pulses </li></ul></ul><ul><li>Gyroscopes </li></ul><ul><ul><li>measure rate of change of angles </li></ul></ul><ul><ul><li>fiber-optic (newer, better), magnetic (older) </li></ul></ul><ul><li>Compass </li></ul><ul><ul><li>measure which way is north </li></ul></ul><ul><li>GPS: measure location relative to globe </li></ul>
    274. 292. Touch Sensors <ul><li>Whiskers, bumpers etc. </li></ul><ul><ul><li>mechanical contact leads to </li></ul></ul><ul><ul><ul><li>closing/opening of a switch </li></ul></ul></ul><ul><ul><ul><li>change in resistance of some element </li></ul></ul></ul><ul><ul><ul><li>change in capacitance of some element </li></ul></ul></ul><ul><ul><ul><li>change in spring tension </li></ul></ul></ul><ul><ul><ul><li>... </li></ul></ul></ul>
    275. 293. Sensors Based on Sound <ul><li>SONAR: So und N avigation a nd R anging </li></ul><ul><ul><li>bounce sound off of objects </li></ul></ul><ul><ul><li>measure time for reflection to be heard - gives a range measurement </li></ul></ul><ul><ul><li>measure change in frequency - gives the relative speed of the object (Doppler effect) </li></ul></ul><ul><ul><li>bats and dolphins use it with amazing results </li></ul></ul><ul><ul><li>robots use it w/ less than amazing results </li></ul></ul>
    276. 294. Robotics Sensor Based on EM Spectrum
    277. 295. Electromagnetic Spectrum Visible Spectrum 700 nm 400 nm
    278. 296. Sensors Based on EM Spectrum <ul><li>Radio and Microwave </li></ul><ul><ul><li>RADAR: Ra dio D etection a nd R anging </li></ul></ul><ul><ul><li>Microwave radar: insensitive to clouds </li></ul></ul><ul><li>Coherent light </li></ul><ul><ul><li>all photons have same phase and wavelength </li></ul></ul><ul><ul><li>LASER: L ight A mplification by S timulated E mission of R adiation </li></ul></ul><ul><ul><li>LASER RADAR: LADAR - accurate ranging </li></ul></ul>
    279. 297. Sensors Based on EM Spectrum <ul><li>Light sensitive </li></ul><ul><ul><li>eyes, cameras, photocells etc. </li></ul></ul><ul><ul><li>Operating principle </li></ul></ul><ul><ul><ul><li>CCD - charge coupled devices </li></ul></ul></ul><ul><ul><ul><li>photoelectric effect </li></ul></ul></ul><ul><li>IR sensitive </li></ul><ul><ul><li>Local Proximity Sensing </li></ul></ul><ul><ul><ul><li>Infrared LEDs (cheap, active sensing) </li></ul></ul></ul><ul><ul><ul><li>usually low resolution - normally used for presence/absence of obstacles rather than ranging, operate over small range </li></ul></ul></ul><ul><ul><li>Sense heat differences and construct images </li></ul></ul><ul><ul><ul><li>Human detection sensors </li></ul></ul></ul><ul><ul><ul><li>night vision application </li></ul></ul></ul>
    280. 298. General Classification (1)
    281. 299. General Classification (2)
    282. 300. Sensors Used in Robot
    283. 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
    284. 302. Sensors Used in Robot <ul><li>Resistive sensors </li></ul><ul><ul><li>bend sensors, potentiometer, resistive photocells, ... </li></ul></ul><ul><li>Tactile sensors </li></ul><ul><ul><li>contact switch, bumpers… </li></ul></ul><ul><li>Infrared sensors </li></ul><ul><ul><li>Reflective, proximity, distance sensors… </li></ul></ul><ul><li>Ultrasonic Distance Sensor </li></ul><ul><li>Inertial Sensors (measure the second derivatives of position) </li></ul><ul><ul><li>Accelerometer, Gyroscopes, </li></ul></ul><ul><li>Orientation Sensors </li></ul><ul><ul><li>Compass, Inclinometer </li></ul></ul><ul><li>Laser range sensors </li></ul><ul><li>Vision, GPS, … </li></ul>
    285. 303. <ul><li>Bend Sensors </li></ul><ul><li>Resistance = 10k to 35k </li></ul><ul><li>As the strip is bent, resistance increases </li></ul><ul><li>Potentiometers </li></ul><ul><li>Can be used as position sensors for sliding mechanisms or rotating shafts </li></ul><ul><li>Easy to find, easy to mount </li></ul><ul><li>Light Sensor (Photocell) </li></ul><ul><li>Good for detecting direction/presence of light </li></ul><ul><li>Non-linear resistance </li></ul><ul><li>Slow response to light changes </li></ul>Resistive Sensors Resistive Bend Sensor Photocell Potentiometer R is small when brightly illuminated
    286. 304. Applications Sensor <ul><li>Measure bend of a joint </li></ul><ul><li>Wall Following/Collision Detection </li></ul><ul><li>Weight Sensor </li></ul>Sensors Sensor
    287. 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
    288. 306. Infrared Sensors <ul><li>Intensity based infrared </li></ul><ul><ul><li>Reflective sensors </li></ul></ul><ul><ul><li>Easy to implement </li></ul></ul><ul><ul><li>susceptible to ambient light </li></ul></ul><ul><li>Modulated Infrared </li></ul><ul><ul><li>Proximity sensors </li></ul></ul><ul><ul><li>Requires modulated IR signal </li></ul></ul><ul><ul><li>Insensitive to ambient light </li></ul></ul><ul><li>Infrared Ranging </li></ul><ul><ul><li>Distance sensors </li></ul></ul><ul><ul><li>Short range distance measurement </li></ul></ul><ul><ul><li>Impervious to ambient light, color and reflectivity of object </li></ul></ul>
    289. 307. Intensity Based Infrared <ul><li>Easy to implement (few components) </li></ul><ul><li>Works very well in controlled environments </li></ul><ul><li>Sensitive to ambient light </li></ul>time voltage time voltage Increase in ambient light raises DC bias Break-Beam sensor Reflective Sensor
    290. 308. IR Reflective Sensors <ul><li>Reflective Sensor: </li></ul><ul><ul><li>Emitter IR LED + detector photodiode/phototransistor </li></ul></ul><ul><ul><li>Phototransistor: the more light reaching the phototransistor, the more current passes through it </li></ul></ul><ul><ul><li>A beam of light is reflected off a surface and into a detector </li></ul></ul><ul><ul><li>Light usually in infrared spectrum, IR light is invisible </li></ul></ul><ul><li>Applications: </li></ul><ul><ul><li>Object detection, </li></ul></ul><ul><ul><li>Line following, Wall tracking </li></ul></ul><ul><ul><li>Optical encoder (Break-Beam sensor) </li></ul></ul><ul><li>Drawbacks: </li></ul><ul><ul><li>Susceptible to ambient lighting </li></ul></ul><ul><ul><ul><li>Provide sheath to insulate the device from outside lighting </li></ul></ul></ul><ul><ul><li>Susceptible to reflectivity of objects </li></ul></ul><ul><ul><li>Susceptible to the distance between sensor and the object </li></ul></ul>
    291. 309. Modulated Infrared <ul><li>Modulation and Demodulation </li></ul><ul><ul><li>Flashing a light source at a particular frequency </li></ul></ul><ul><ul><li>Demodulator is tuned to the specific frequency of light flashes. (32kHz~45kHz) </li></ul></ul><ul><ul><li>Flashes of light can be detected even if they are very week </li></ul></ul><ul><ul><li>Less susceptible to ambient lighting and reflectivity of objects </li></ul></ul><ul><ul><li>Used in most IR remote control units, proximity sensors </li></ul></ul>Negative true logic: Detect = 0v No detect = 5v
    292. 310. IR Proximity Sensors <ul><li>Proximity Sensors: </li></ul><ul><ul><li>Requires a modulated IR LED, a detector module with built-in modulation decoder </li></ul></ul><ul><ul><li>Current through the IR LED should be limited: adding a series resistor in LED driver circuit </li></ul></ul><ul><ul><li>Detection range: varies with different objects (shiny white card vs. dull black object) </li></ul></ul><ul><ul><li>Insensitive to ambient light </li></ul></ul><ul><li>Applications: </li></ul><ul><ul><li>Rough distance measurement </li></ul></ul><ul><ul><li>Obstacle avoidance </li></ul></ul><ul><ul><li>Wall following, line following </li></ul></ul>limiter demodulator bandpass filter amplifier comparator integrator
    293. 311. IR Distance Sensors <ul><li>Basic principle of operation: </li></ul><ul><ul><li>IR emitter + focusing lens + position-sensitive detector </li></ul></ul>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
    294. 312. IR Distance Sensors <ul><li>Sharp GP2D02 IR Ranger </li></ul><ul><ul><li>Distance range: 10cm (4&quot;) ~ 80cm (30&quot;).  </li></ul></ul><ul><ul><li>Moderately reliable for distance measurement </li></ul></ul><ul><ul><li>Immune to ambient light </li></ul></ul><ul><ul><li>Impervious to color and reflectivity of object </li></ul></ul><ul><ul><li>Applications: distance measurement, wall following, … </li></ul></ul>
    295. 313. Basic Navigation Techniques <ul><li>• Relative Positioning (called Dead-reckoning ) </li></ul><ul><li>– Information required: incremental (internal) </li></ul><ul><ul><ul><li>Velocity </li></ul></ul></ul><ul><ul><ul><li>heading </li></ul></ul></ul><ul><li>– With this technique the position can be updated with respect to a starting point </li></ul><ul><li>– Problems: unbounded accumulation error </li></ul><ul><li>• Absolute Positioning </li></ul><ul><li>– Information Required: absolute (external) </li></ul><ul><li>– Absolute references (wall, corner, landmark) </li></ul><ul><li>– Methods </li></ul><ul><ul><ul><li>Magnetic Compasses (absolute heading, earth’s magnetic field) </li></ul></ul></ul><ul><ul><ul><li>Active Beacons </li></ul></ul></ul><ul><ul><ul><li>Global Positioning Systems (GPS) </li></ul></ul></ul><ul><ul><ul><li>Landmark Navigation (absolute references: wall, corner, artificial landmark) </li></ul></ul></ul><ul><ul><ul><li>Map-based positioning </li></ul></ul></ul>
    296. 314. Dead Reckoning Cause of unbounded accumulation error: <ul><li>Systematic Errors: </li></ul><ul><li>Unequal wheel diameters </li></ul><ul><li>Average of both wheel diameters differs from nominal diameter </li></ul><ul><li>Misalignment of wheels </li></ul><ul><li>Limited encoder resolution, sampling rate, … </li></ul><ul><li>Nonsystematic Errors: </li></ul><ul><li>Travel over uneven floors </li></ul><ul><li>Travel over unexpected objects on the floor </li></ul><ul><li>Wheel-slippage due to : slippery floors; over-acceleration, fast turning (skidding), non-point wheel contact with the floor </li></ul>
    297. 315. Sensors used in navigation <ul><li>Dead Reckoning </li></ul><ul><ul><li>Odometry (monitoring the wheel revolution to compute the offset from a known starting position) </li></ul></ul><ul><ul><ul><li>Encoders, </li></ul></ul></ul><ul><ul><ul><li>Potentiometer, </li></ul></ul></ul><ul><ul><ul><li>Tachometer, … </li></ul></ul></ul><ul><li>– Inertial Sensors (measure the second derivative of position) </li></ul><ul><ul><ul><li>Gyroscopes, </li></ul></ul></ul><ul><ul><ul><li>Accelerometer, … </li></ul></ul></ul><ul><li>External Sensors </li></ul><ul><ul><li>Compass </li></ul></ul><ul><ul><li>Ultrasonic </li></ul></ul><ul><ul><li>Laser range sensors </li></ul></ul><ul><ul><li>Radar </li></ul></ul><ul><ul><li>Vision </li></ul></ul><ul><ul><li>Global Positioning System (GPS) </li></ul></ul>
    298. 316. Robotics Sensor and Aktuator Example
    299. 317. Incremental Optical Encoders <ul><li>Relative position </li></ul>- calibration ? - direction ? - resolution ? grating light emitter light sensor decode circuitry
    300. 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
    301. 319. <ul><li>Relative position </li></ul>grating light emitter light sensor decode circuitry A B A B A leads B - calibration ? - direction ? - resolution ? Incremental Optical Encoders
    302. 320. Incremental Optical Encoders - direction - resolution grating light emitter light sensor Decode circuitry <ul><ul><li>Incremental Encoder: </li></ul></ul><ul><li>It generates pulses proportional to the rotation speed of the shaft. </li></ul><ul><li>• Direction can also be indicated with a two phase encoder: </li></ul>A B A leads B
    303. 321. Incremental Optical Encoders <ul><ul><li>Incremental Encoder: </li></ul></ul>Encoder pulse and motor direction A B A leads B
    304. 322. Absolute Optical Encoders Gray Code <ul><li>Used when loss of reference is not possible. </li></ul><ul><li>Gray codes: only one bit changes at a time ( less uncertainty). </li></ul><ul><li>• The information is transferred in parallel form (many wires are necessary). </li></ul>000 001 011 010 110 111 101 100 000 001 010 011 100 101 110 111 Binary
    305. 323. Other Odometry Sensors <ul><li>Resolver </li></ul><ul><li>Potentiometer </li></ul><ul><li>= varying resistance </li></ul>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
    306. 324. Range Finder (Ultrasonic, Laser)
    307. 325. Range Finder <ul><li>Time of Flight </li></ul><ul><li>The measured pulses typically come form ultras