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

759

Click here to load reader

description

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

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

  • 1. Deddy Susilo, S.T. 61546 EE-632 MICROCONTROLLER

2. Silabus(3 sks) - 16 minggu 1. Sekilas ttg Mikroprosesor, Mikrokomputer,Mikrokontroler 2. Arsitektur Mikrokontoler MCS-513. Pemrograman Bahasa Assembly untuk MCS-51 4. Timer dan Counter 5. Komunikasi Serial6. Interupsi 7. Ekspansi Sistem MCS-51 dengan DAC, ADC, SIPO, PISO,Mux Analog, Latches, PPI 8. Interfacing dengan LCD karakter dan Grafik, driver motor 3. Silabus(3 sks) - 16 minggu 9. Sensor-Sensor + IC Special Func 10. Protokol I2C (I square C) 11. Protokol I2S (I square S) 12. Protokol SPI (Serial Paralel Interface) 13. Penerapan Kontrol PID 14. Penerapan Kontrol Fuzzy 15. Arsitektur uC AVR + AVR STUDIO 16. Pemrograman Dasar AVR 17. Menggunakan Code Vision AVR 4. silabus(3 sks) Bobot Penilaian : TTS : 30% TAS : 40% LAB : 30%- 12 x Praktikum ( @ 1,5% ) - 1 x Tes Praktek(Pengali Praktikum) - Proyek12 % Kuliah : Selasa 11-13 (F-212) Rabu 14-16(E-138) 5. LECTURE 1 ARSITEKTUR MIKROKONTROLER MCS51 (PART 1) 6. MIKROPROSESOR ? MIKROKOMPUTER ? MIKROKONTROLER ? 7. MIKROPROSESOR ? sebuah IC ( Integrated Circuit ) yang digunakan sebagai otak/pengolah utama dalam sebuah sistem komputer 8. MIKROPROSESOR ? 1971 oleh Intel Corp,yaitu Mikroprosesor Intel 4004 yang mempunyai arsitektur 4 bit 9. MIKROPROSESOR ? 8080(berarsitektur 8 bit), 8085,dan kemudian 8086 (berarsitektur 16 bit) 10. MIKROPROSESOR ? Motorola dengan M6800 dan Zilog dengan Z80 nya 11. MIKROKOMPUTER ? sebuah mikroprosesor merupakan CPU (unit pengolah pusat) sistem 8 12. MIKROKOMPUTER ? pada PC, mikroprosesor digunakan sebagai pengolah utama pada semua kerja komputer, yaitu untuk menjalankan perangkat lunak, memecahkan persoalan-persoalan aritmatika, mengendalikan prosesInput/Output , 13. MIKROKOMPUTER ? 14. MIKROKOMPUTER ? mikroprosesor dengan piranti pendukungnya dikatakan membentuk suatu mikrokomputer (mikrokomputer = sistem komputer yang menggunakan sebuah mikroprosesor sebagai CPUnya) 15. MIKROKONTROLER ? CPU dan peralatan pendukungnya berada pada IC yang sama, serta digunakan untuk penerapan sistem kendali, maka IC tersebut disebut sebagai sebuah mikrokontroler 16. MIKROPROSESOR DAN MIKROKONTROLER Mikroprosesor dan mikrokontroler mulai banyak digunakan dalam berbagai aplikasi elektronika, antara lain di bidang otomatisasi industri, otomotif, pengukuran, telekomunikasi, penerbangan, dsb. 17. MIKROPROSESOR DAN MIKROKONTROLER Keuntungan dari penggunaaan mikroprosesor dan mikrokontroler adalah sistem yang diciptakan menjadi sangat fleksibel karena modifikasi dan pengembangan cukup dilakukan pada perangkat lunaknya. 18. STRUKTUR SISTEM MIKROKOMPUTER Dengan penambahan beberapa piranti pendukung (memori, piranti Input/Output, dsb), sebuah mikroprosesor dapat diubah menjadi sebuah mikrokomputer 19. BAGIAN BAGIAN MIKROKOMPUTER Mikroprosesor sebagai unit pengolah pusat keseluruhan sistem, yaitu untuk menjalankan perangkat lunak yang disimpan pada memori, mengatur jalur pengiriman data dari/ke piranti-piranti (memori,I/O, dsb), mengolah data-data yang ada pada perangkat lunak, dsb. 16 20. BAGIAN BAGIAN MIKROKOMPUTER ROM berguna untuk menyimpan perangkat lunak yang akan dijalankan oleh mikroprosesor. 21. BAGIAN BAGIAN MIKROKOMPUTER RAM berguna sebagai tempat penyimpanan data sementara yang mungkin diperlukan oleh mikroprosesor sewaktu menjalankan perangkat lunak. Misalnya digunakan untuk menyimpan nilai-nilai pada variabel. 22. BAGIAN BAGIAN MIKROKOMPUTER Piranti I/O (Input/Output) berguna untuk mengkoneksikan sistem dengan dunia luaruntuk mengirimkan dan menerima data dari/ke luar sistem. pada PC, salah satu piranti I/O bertugas menerima masukan data dari keyboard, serta piranti I/O yang lain bertugas mengirimkan data ke printer untuk dicetak, dsb. 23. BAGIAN BAGIAN MIKROKOMPUTER Clock(denyut)menyinkronkan kerja semua piranti dalam sistem. Sumber sinyal dari Clock biasanya didapatkan dari osilator kristal. 24. KESIMPULAN 1 IC mikroprosesor tak dapat berdiri sendiri, karena kerjanya sangatlah bergantung dari piranti2 pendukung lainnya. Misal tanpa adanya piranti Input/Output akan membuat sistem tak dapat berinteraksi dengan dunia luar. Atau misalnya tanpa adanya RAM, mikroprosesor tidak dapat bekerja dan mengolah data-data pada variabel yang diinstruksikan oleh perangkat lunak. 25. KESIMPULAN 2 Akibat dari kebergantungannya yang besar pada piranti2 pendukung mikroprosesor menjadi kurang efisien. Perusahaan2 semikonduktor menciptakan sebuah IC mikroprosesor jenis lain yang didalamnya sudah terdapat piranti-piranti pendukungnyamikrokontroler. mikrokomputer dalam sebuah chip ( single chip microcomputer ). 26. KESIMPULAN 3 Meski kurang efisien dibanding mikrokontroler, untuk penggunaan tertentu mikroprosesor tetap mempunyai kelebihan2, antara lain lebih cepat dan lebih upgradable (karena semua piranti tambahan diletakkan di luar sehingga bisa diganti). 27. BEBERAPA JENIS MIKROPROSESORDAN MIKROKONTROLER 24 28. ARSITEKTUR MIKROKONTROLERKELUARGA MCS-51 Mikrokontroler 8051Intel mikrokontrolerpopuler, banyak perusahaan2 semikonduktor lain yang membuatclone -nya. Perusahaan tsb antara lain adalah Atmel, Siemens, AMD, Philips, dsb.banyakclonedari 8051, maka terbentuklah keluarga besar mikrokontroler yang mempunyai arsitektur dasar yang sama dengan 8051, yang selanjutnyaclone-clonetersebut lazim disebut dengan keluarga mikrokontroler MCS-51. 29. LECTURE 2 ARSITEKTUR MIKROKONTROLER MCS51 (PART 2) 30. Fasilitas-Fasilitas Mikrokontroler 8051 4K bytes ROM128 bytes RAM Empat buah I/O (Input/Output) port. Masing-masing I/O port terdiri dari 8bit Dua buah timer/counter. Masing-masing adalah 16bit timer. Antarmuka ( Interface ) Serial Ruang pengalamatan memori eksternal untuk kode (program) sebesar 64Kbytes Ruang pengalamatan memori eksternal untuk data sebesar 64K bytes 31. 3 256 bytes RAM 8KB FLASH EPROM 8952 2 128 bytes RAM 4KB FLASH EPROM 8951 3 256 bytes RAM 8KB EPROM 8752 3 256 bytes RAM 8KB EPROM 8032 3 256 bytes RAM 0KB 8052 2 128 bytes RAM 8KB ROM 8751 2 128 bytes RAM 0KB 8031 2 128 bytes RAM 4KB ROM 8051 Jumlah Timer Memori Data Intenal Memori Program (Kode) Internal Tipe 32. Susunan Pin IC 8051/8031/8751/8951 33.

  • Port 0 (P0.0-P0.7) punya fungsi ganda. Pada perancangan dengan minimum sistem (tanpa eksternal memori)port0I/O
  • Pada perancangan dengan penambahan memori eksternal (baik RAM & ROM/EPROM) multiplexingalamat ( address ) dan data
  • Maksud darimultiplexingalamat dan data bahwa keluaran port 0 (P0.0-P0.7) adalahaddressA0-A7 dan kadang juga berupa data D0-D7.
  • Pada setengah siklus waktu kerja mikrokontroler, port 0keluaran alamat A0-A7 dan pada setengah siklus berikutnya port 0keluaran data D0-D7.
  • Pergantianaddressdan data pada port 0 diketahui EPROM/RAM eksternal pada keluaran pin ALE

34.

  • 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).
  • Port 2 pada pin 21-28 juga mempunyai fungsi ganda. Pada perancangan dengan minimum sistem, port 2 difungsikan sebagai I/O
  • Sedangkan pada perancangan dengan penambahan memori eksternal, port 2 digunakan sebagaiaddress bus(A8-A15) .

35. Port 3 pada pin 10-17 adalah port multifungsi, setiap pin dari port 3 mempunyai fungsi-fungsi tersendiri. 36. PSEN (Program Store Enable) pin 29 untuk output sinyal pengontrol pada pengambilan program (kode) jika memakai ROM/EPROM eksternal.Pin PSEN akan mengeluarkan sinyal low selama pengambilan byte program (kode) dari ROM/EPROM.Pin PSEN biasa dihubungkan dengan pin OE (Output Enable) pada IC EPROM.32 37.

  • ALE (Address Latch Enable)
  • ALE pada pin 30 berguna untuk output sinyal pengontrol pada pengaturanmultiplexingalamat dan data pada port 0.
  • 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.
  • ALE adalah untuk memberitahu piranti eksternal yang terhubung ke port 0 bahwa pada saat itu keluaran port 0 adalah address ataukah data.

38.

  • EA (External Address)
  • EA pada pin 31memilih apakah program (kode) mikrokontroler akan diletakkan di ROM/EPROM internal atau eksternal.
  • Jika program (kode) diletakkan di ROM/EPROM eksternal, pin EA harus bernilai low (pin EA di-ground).
  • Sebaliknya jika program (kode) diletakkan di ROM/EPROM internal, pin EA harus bernilai high (pin EA dihubungkan ke VCC).
  • Pin PSEN otomatis tidak akan berfungsi jika EA bernilai high.

39.

  • XTAL (=Osilator Kristal)
  • Seperti layaknya mikroprosesor pada umumnya, mikrokontroler juga memerlukan clock untuk operasinya.
  • Frekuensi dari osilator kristal tersebut mempengaruhi siklus kerja dari 8051.
  • Pada prinsipnya siklus kerja dari 8051 adalah 1/12 dari frekuensi osilator kristal yangdihubungkan 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 1s.
  • Semua pin pada IC mikrokontroler keluarga MCS-51TTL kompatibel.

40. Contoh 8051/8751/8951 Development Board 41. Contoh 8951 Development Board Minimum System P0 P1 P2 P3 AT89SXX Vin 1 2 3 42. 1. Ruang alamat memori kode program(code address space) maksimal 64KB ditempati EEPROM/ROM internal atau bisa juga ditempati oleh IC EEPROM (misalnya 2864) jika diinginkan kode program disimpan dalam EEPROM eksternal. 2. Ruang alamat memori data internal yang dapat dialamati secara langsungRAM(Random Access Memory)sebanyak 128bytedan Special Function Register sebanyak 128byte.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 MCS51Khususnya AT89S51 43. 3. Ruang alamat memori data eksternal sebanyak maksimal 64KB misalnya 6264. Ruang alamat memori kode program dan ruang alamat memori data eksternal sebenarnya memiliki ruang alamat yang sama (overlap). Ruang alamat memori kode program dan ruang alamat memori data eksternal dialamati dari alamat 0000h sampai FFFFh. Sedangkanmemori-datainternal 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 MCS51Khususnya AT89S51 44. Pengalamatan Memori dan Register Pada MCS51Khususnya AT89S51 45. Memori-data nomor 00h sampai 7Fh bisa dipakai sebagai memori penyimpan data biasa, dibagi menjadi 3 bagian: Alamat memori 00h sampai 18h selain sebagai memori-data biasa, bisa pula dipakai sebagaiRegister Serba Guna( General Purpose Register ). Alamat memori 20h sampai 2Fh selain sebagai memori-data biasa, bisa dipakai untuk menyimpan informasi dalam levelbit . 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 MCS51Khususnya AT89S51 46. Menempati alamat memori-data 00h sampai 18h (32 byte)4Kelompok 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 inidisebut 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 04hAkumulator) 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. KhususRegister 0danRegister 1(R0 dan R1) masih punya mempunyai kemampuan lain register penampung alamat yang dipakai dalampengaksesan memori secara tidak langsung( indirect memori addressing ) Memori level Bit ( Memori-datainternal 20h sampai 2Fh) Setiap byte memori di daerah ini bisa dipakai menampung 8 bit informasi yang masing-masing dinomori tersendiri, dengan demikian dari 16 byte memori yang ada bisa dipakai untuk menyimpan 128 bit (16 x 8 bit) yang dialamati dengan alamat 00h sampai 7Fh. Informasi dalam level bit tersebut masing-masing bisa di-1-kan, di - 0- kan dengan instruksi SETB dan CLR. Register Serba Guna( General Purpose Register ) 48. Instruksi SETB 00h memori-bitalamat 0h menjadi 1 = membuat bit nomor 0 darimemori-datapada alamat 20h menjadi 1 bit-bit lain memori 20h tidak berubah nilai. Instruksi CLR 7Fh memori-bitalamat 7Fh menjadi 0 = membuat bit nomor 7 darimemori-datapada alamat 2Fh menjadi 0 bit-bit lain memori 2Fh tidak berubah nilai. MOV 21h,#0Fh = SETB 08h SETB 09h SETB 0Ah SETB 0Bh CLR 0Ch CLR 0Dh CLR 0Eh CLR 0Fh Register Serba Guna( General Purpose Register ) 49. Special Function Register (SFR)satu daerah RAM dalam IC keluarga MCS51 untuk mengatur perilakunya dalam hal-hal khusus, misalnya tempat untuk berhubungan dengan port paralel P1 atau P3, dan sarana input/output lainnya, tapi tidak umum dipakai untuk menyimpan data seperti layaknya memori-data. Penulisan program SFR diperlakukan persis sama dengan memori-data. Untuk mengisi memori-data pada alamat 60h dengan bilangan 0Fh, instruksiMOV 60h,#0Fh Register Khusus(SFR -Special Function Register ) 50. Sedangkan untuk menyimpan 0Fh ke Port 1 yang di SFR menempati memori-data pada alamat 90h, instruksi yang dipergunakan adalah : MOV 90h,#0Fh Mengaksesmemori-dataada dua cara, yakni- langsung( direct memory addressing) -tidak langsung( indirect memory addressing ) lewat bantuan R0 dan R1.Tapi untuk SFR hanya bisa dipakaipenyebutan nomor memori secara langsung( direct memory addressing ) saja. Register Khusus(SFR -Special Function Register ) 51.

  • Untuk keperluan penulisan program, setiap mikroprosesor/mikrokontroler
  • selalu dilengkapi dengan Register Dasar.
  • Register Baku Program Counter ,Akumulator ,Stack Pointer Register ,Program Status Register .
  • MCS51 mempunyai semua register baku ini.
  • Register yang khas MCS51 Register B ,Data Pointer High BytedanData Pointer Low Byte
  • Register Serba GunaR0..R7

Register Dasar MCS51 52. Dalam mikroprosesor/mikrokontroler yang lain, register-register dasar biasanya ditempatkan ditempat tersendiri dalam inti prosesor MCS51 register-register itu ditempatkan secara terpisah. Program Counterditempatkan ditempat tersendiri di dalam inti prosesor Register Serba GunaR0..R7 ditempatkan di salah satu bagian darimemori-data internal Register lainnya ditempatkan dalamSpecial Function Register(SFR). Register Dasar MCS51 53. Register Dasar MCS51 54. Register Dasar MCS51

  • Program Counter
  • Berkapasitas 16 bit.
  • Di dalam PC dicatat nomor memori-program yang menyimpan instruksi berikutnya yang akan diambil ( fetch ) sebagai instruksi untuk dikerjakan ( execute ).
  • Saat setelah reset PC bernilai 0000h, berarti MCS51 akan segera mengambil isi memori-program nomor 0 sebagai instruksi.
  • Nilai PC otomatis bertambah 1 setelah prosesor mengambil instruksi 1 byte.
  • Ada instruksi yang hanya 1 byte, ada instruksi yang sampai 4 byte, dengan demikian pertambahan nilai PC setelah menjalankan instruksi, tergantung pada jumlah byte instruksi bersangkutan.

55. LECTURE 3 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 1) 56. Register Dasar MCS51

  • Akumulator
  • Akumulatorsebuah register yang berfungsi untuk menampung (accumulate) hasil pengolahan data
  • Akumulator bisa menampung data 8 bit (1 byte) dan merupakan register yang paling banyak kegunaannya, lebih dari setengah instruksi-instruksi MCS51 melibatkan Akumulator.
  • Instruksi-instruksi berikut memperjelas pengertian di atas :
    • MOV A,#20h
    • ADD A,#30h
  • Instruksi pertama menyimpan nilai 20h ke Akumulator,
  • Instruksi kedua menambahkan bilangan 30h ke akumulator, hasil penjumlahan sebesar 50h ditampung di Akumulator.

57. Register Dasar MCS51

  • Stack Pointer Register
  • 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.
  • Stack Pointer Register adalah register yang berfungsi untuk mengatur kerja stack, dalam Stack Pointer Register disimpan nomormemori-datayang dipakai untuk operasi Stack berikutnya.

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 pembantuAkumulatorsaat menjalankan instruksi perkalian dan pembagian. 59. Register Dasar MCS51 Data Pointer High Byte(DPH) danData 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 sebagaiData Pointer Register(DPTR). Sesuai dengan namanya, Register ini dipakai untuk mengalamati data dalam jangkauan yang luas, yaitu terutama untuk mengakses data yang berada pada memori eksternal 60. PEMROGRAMAN ASSEMBLY UNTUK MCS-51 Kode Program (perangkat lunak/ software ) pengendali mikrokontroler disusun dari kumpulan instruksi, instruksi tersebut setara dengan kalimat perintah bahasa manusia yang hanya terdiri atas predikat dan objek.Dengan demikian tahap pertama pembuatan program pengendali mikrokontroler dimulai dengan pengenalan dan pemahaman predikat (kata kerja) dan objek apa saja yang dimiliki mikrokontroler. 61. PEMROGRAMAN ASSEMBLY UNTUK MCS-51 Objek dalam pemrograman mikrokontroler adalah data yang tersimpan di dalam memori,register dan input/output. Sedangkan kata kerja yang dikenal pun secara umum dikelompokkan menjadi perintah untuk perpindahan data, arithmetik, operasi logika, pengaturan alur program dan beberapa hal khusus. Kombinasi dari kata kerja dan objek itulah yang membentuk perintah pengatur kerja mikrokontroler. 62. PEMROGRAMAN ASSEMBLY UNTUK MCS-51 Instruksi MOV A,7Fh merupakan contoh sebuah instruksi dasar yang sangat spesifik, MOV merupakan kata kerja yang memerintahkan peng-copy-an data, merupakan predikat dalam kalimat perintah ini. Sedangkan objeknya adalah data yang di-copy-kan, dalam hal ini adalah data yang ada di dalam alamat memori 7Fh di-copy-kan ke Akumulator A. 63. Pengalamatan Data dalam MCS51 Instruksi MOV A,7Fhmerupakan contoh sebuah instruksi dasar yang sangat spesifik, MOV merupakan kata kerja yang memerintahkan peng-copy-an data, merupakan predikat dalam kalimat perintah ini. Sedangkan objeknya adalah data yang di-copy-kan, dalam hal ini adalah data yang ada di dalam alamat memori 7Fh di-copy-kan ke Akumulator A. 64. Pengalamatan Data dalam MCS51 Pengalamatan/penempatan data konstan/konstanta ( immediate addressing mode ): Contoh :MOV A,#20h. Contoh instruksi ini mempunyai makna data konstanta 20h (sebagai data konstan ditandai dengan #) di-copy-kan ke Akumulator A.Pengalamatan data secara langsung ( direct addressing mode ) memindahkan data yang berada di dalam memori mengakses alamat memori tempat data tersebut berada : MOV A,20h. Contoh instruksi ini mempunyai makna data yang berada di dalam alamat memori 20h di-copy-kan ke Akumulator. 65. Pengalamatan Data dalam MCS51 Pengalamatan data secara tidak langsung ( indirect addressing mode ) menunjuk data yang berada di dalam memori, kalau memori penyimpan data ini letaknya berubah-rubah sehingga alamat memori tidak diakses secara langsung tapi di-titip-kan ke register lain. MOV A,@R0. Register serba guna R0 dipakai untuk mencatat alamat memori, sehingga instruksi ini mempunyai makna memori yang alamatnya tercatat dalam R0 isinya di-copy-kan ke Akumulator A. Tanda @ dipakai untuk menandai alamat memori disimpan di dalam R0. 66. Pengalamatan Data dalam MCS51 Pengalamatan data dalam register ( register addressing mode ): MOV A,R5. Instruksi ini mempunyai makna data dalam register serba guna R5 di-copykan ke Akumulator A.Instruksi ini membuat register serba guna R0 sampai R7 sebagai tempat penyimpan data yang sangat praktis yang kerjanya sangat cepat. 67. Instruksi-instruksi dalam MCS51

  • Instruksi-instruksi tersebut secara dikelompokkan sebagai berikut :
  • Kelompok Peng-copy-an Data
  • 2. Kelompok Aritmatika
  • 3. Kelompok Logika
  • 4. Kelompok Percabangan

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,R7Akumulator A dan register serba guna R7 berisikan data yang sama, yang asalnya tersimpan di dalam R7. MOV A,20h MOV A,@R1 MOV A,P1 MOV P3,A 69. Instruksi-instruksi dalam MCS51 KELOMPOK ARITMATIK(ADD, ADDC, SUBB, DA, MUL dan DIV) Perintah ADD dan ADDC IsiAkumulatorA + ( 1 byte )hasil diAkumulator .Dalam operasi inibit 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 nilaibit Carrydalam proses sebelumnya ikut dijumlahkan bersama. 70. Instruksi-instruksi dalam MCS51 Bilangan 1 bytebilangan konstan, register serba guna, dari memori data yang alamat memorinya dialamati secara langsung maupun tidak langsung ADD A,R0; register serba guna ADD A,#23h ; bilangan konstan ADD A,@R0; no memori tak langsung ADD A,P1; no memori langsung (port 1) 71. Instruksi-instruksi dalam MCS51 Perintah SUBB IsiAkumulatorA -bilangan 1 bytedengan nilaibit Carry , hasil pengurangan Akumulator .Dalam operasi inibit Carryjuga berfungsi sebagai penampung limpahan hasil pengurangan. Jika hasil pengurangan tersebut melimpah (nilainya kurang dari 0)bit Carry 1, tidak bit Carry 0. SUBB A,R0 ; A = A - R0 - C SUBB A,#23h ; A = A 23H SUBB A,@R1 SUBB A,P0 72. Instruksi-instruksi dalam MCS51 Perintah DA Perintah DA ( Decimal Adjust ) dipakai setelah perintah ADD; ADDC atau SUBB, dipakai untuk merubah nilai biner 8 bit yang tersimpan dalamAkumulatormenjadi 2 buah bilangan desimal yang masing-masing terdiri dari nilai biner 4 bit. DA A 73. Instruksi-instruksi dalam MCS51 Perintah MUL AB Bilangan biner 8 bit dalamAkumulatorA dikalikan dengan bilangan biner 8 bit dalamregisterB.Hasil perkalian berupa bilangan biner 16 bit, 8 bit bilangan biner yang bobotnya lebih besar ditampung diregisterB, sedangkan 8 bit lainnya yang bobotnya lebih kecil ditampung diAkumulatorA. Bit OV dalam PSW ( Program Status Word ) dipakai untuk menandai nilai hasil perkalian yang ada dalam register B. Bit OV akan bernilai 0 jikaregisterB bernilai 00h, kalau tidak bit OV bernilai 1. MOV A,#10 MOV B,#20 MUL AB 74. Instruksi-instruksi dalam MCS51 Perintah DIV AB Bilangan biner 8 bit dalamAkumulatorA dibagi dengan bilangan biner 8 bit dalamregisterB.Hasil pembagian berupa bilangan biner 8 bit ditampung diAkumulator , sedangkan sisa pembagian berupa bilangan biner 8 bit ditampung diregisterB. Bit OV dalam PSW ( Program Status Word ) dipakai untuk menandai nilai sebelum pembagian yang ada dalam register B. Bit OV akan bernilai 1 jika register B asalnya bernilai 00h. MOV A,#10 MOV B,#2 DIV AB 75. Instruksi-instruksi dalam MCS51 KELOMPOK LOGIKA (ANL, ORL dan XRL) Operasi logika yang bisa dilakukan adalahoperasi AND(kode operasi ANL),operasi ORORL danoperasi Exclusive-ORXRL ANL A,#01111110bit 0 sampai 7 dari Akumulator bernilai 0 sedangkan bit-bit lainnya tetap tidak berubah nilai. ORL A,#01111110bit 1 sampai 6 dari Akumulator bernilai 1 sedangkan bit-bit lainnya tetap tidak berubah nilai. XRL A,#01111110bit 1 sampai 6 dari Akumulator berbalik nilai, sedangkan bit-bit lainnya tetap tidak berubah nilai. 76. LECTURE 4 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 2) 77. Percabangan dan PengaturanAlur Program Pada MCS-51 Secara umum kelompok instruksi yang dipakai untuk mengatur alur program terdiri atas instruksi-instruksi JUMPInstruksi-instruksi untuk membuat dan memakai sub-rutin/modul (setara dengan PROCEDURE dalam Pascal) Instruksi-instruksi JUMP bersyarat ( conditional Jump , setara dengan statemen IF .. THEN ). 78. Percabangan dan PengaturanAlur 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 nilaiProgram Counterbertambah sebanyak jumlah byte yang membentuk instruksi yang sedang dijalankan Dengan demikian pada saat instruksi bersangkutan dijalankan Program Counter selalu menyimpan alamat memori-program yang menyimpan instruksi berikutnya. 79. Percabangan dan PengaturanAlur Program Pada MCS-51 Kelompok Instruksi JUMP Pada saat mikrokontroler menjalankan kelompok instruksi JUMP, nilaiProgram Counteryang runtun sesuai dengan alur program diganti dengan alamat memori-program baru yang dikehendaki programer. Mikrokontroler MCS51 mempunyai 3 macam intruksi JUMP, yakni instruksi LJMP ( Long Jump ), instruksi AJMP ( Absolute Jump ) dan instruksi SJMP 80. Percabangan dan PengaturanAlur Program Pada MCS-51 Kelompok Instruksi JUMP Pada saat mikrokontroler menjalankan kelompok instruksi JUMP, nilaiProgram Counteryang runtun sesuai dengan alur program diganti dengan alamat memori-program baru yang dikehendaki programer. Mikrokontroler MCS51 mempunyai 3 macam intruksi JUMP, yakni instruksi LJMP ( Long Jump ), instruksi AJMP ( Absolute Jump ) dan instruksi SJMP( Short Jump ).Kecepatan melaksanakan ketiga instruksi ini juga persis sama, yakni memerlukan waktu 2 periode instruksi 81. Percabangan dan PengaturanAlur Program Pada MCS-51 Instruksi LJMP Kode untuk instruksi LJMP adalah 02h, memori-program baru yang ditujubilangan biner 16 bit memori-program MCS51 yang jumlahnya 64 KiloByte. Instruksi LJMP terdiri atas 3 byte, yang bisa dinyatakan dengan bentuk umum 02 aa aa, aa yang pertama adalah memori-program bit 8 sampai dengan bit 15, sedangkan aa yang kedua adalah memori-program bit 0 sampai dengan bit 7. LJMP TugasBaru ORG 2000h TugasBaru: MOV A,P3.1 82. Percabangan dan PengaturanAlur Program Pada MCS-51 ORG adalah perintah pada assembler agar berikutnya assembler bekerja pada memori-program yang disebut di belakang ORG 2000H TugasBaru disebut sebagai LABEL, yakni sarana assembler untuk menandai/ menamai memori-program.Dengan demikian, dalam potonganprogram di atas, memori-program 2000h diberi nama TugasBaru, atau bisa juga dikatakan bahwa TugasBaru bernilai 2000h.Dengan demikian intruksi LJMP TugasBaru di atas, sama artinya dengan LJMP 2000h yang oleh assembler akan diterjemahkan menjadi 02 20 00 (heksadesimal). 83. Percabangan dan PengaturanAlur Program Pada MCS-51 Instruksi AJMP memori-program baru yang dituju dinyatakan dengan bilangan biner 11 bit, dengan demikian instruksi ini hanya bisa menjangkau satu daerah memori-program MCS51 sejauh 2 KiloByte.Instruksi AJMP terdiri atas 2 byte, byte pertama merupakan kode untuk instruksi AJMP (00001b) yang digabung dengan memori program bit 8 sampai dengan bit 10, byte kedua dipakai untuk menyatakan memori-program bit 0 sampai dengan bit 7. 84. Percabangan dan PengaturanAlur Program Pada MCS-51 ORG 800h AJMP DaerahIni AJMP DaerahLain ORG 900h DaerahIni: . . . ORG 1000h DaerahLain: . . . 85. Percabangan dan PengaturanAlur 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 relatiptersebut dinyatakan dengan 1 byte bilangan 2s complement, yang bisa dipakai untuk menyakatakan nilai antara 128 sampai dengan +127. Nilai minus dipakai untuk menyatakan bergeser ke instruksiinstruksi sebelumnya, sedangkan nilai positip untuk menyatakan bergeser ke instruksi-instruksi sesudahnya. 86. Percabangan dan PengaturanAlur Program Pada MCS-51 ORG 0F80h SJMP DaerahLain . . . ORG 1000h DaerahLain: instruksi SJMP DaerahLain tetap bisa dipakai, asalkan jarak antara instruksi itu dengan LABEL DaerahLain tidak lebih dari 127 byte. 1000H-F80H=80H=128D 87. Percabangan dan PengaturanAlur Program Pada MCS-51 Kelompok Instruksi untuk sub-rutin Sub-rutin merupakan suatu potong program yang karena berbagai pertimbangan dipisahkan dari program utama.Bagian-bagian di program utama akan memanggil (CALL) sub-rutin mikrokontroler sementara meninggalkan alur program utama untuk mengerjakan instruksi-instruksi dalam sub-rutin, kemudian kembali ke alur program utama. Satu-satunya cara membentuk sub-rutin adalah memberi instruksi RET pada akhir potongan program sub-rutin.Program sub-rutin di-panggil dengan instruksi ACALL atau LCALL. 88. Percabangan dan PengaturanAlur 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 nilaiProgram Countersecara otomatis di Stack Selanjutnya mikrokontroler mengerjakan instruksi-instruksi di dalam subrutin sampai menjumpai instruksi RET yang berfungsi sebagai penutup dari subrutin. 89. Percabangan dan PengaturanAlur Program Pada MCS-51 Instruksi ACALL dipakai untuk me-manggil program sub-rutin dalam daerah memori-program 2 KiloByte yang sama, setara dengan instruksi AJMP yang sudah dibahas di atas.Sedangkan instruksi LCALL bisa menjangkau seluruh memori-program mikrokontroler MCS51 sebanyak 64 KiloByte. 90. Percabangan dan PengaturanAlur Program Pada MCS-51 Kelompok Instruksi Jump Bersyarat Instruksi JZ ( Jump if Zero ) dan instruksi JNZ ( Jump if not Zero ) adalah instruksiJUMPbersyarat yang memantau nilaiAkumulatorA. MOV A,#0 JNZ BukanNol JZ Nol . . . BukanNol: . . . Nol : . . . 91. Percabangan dan PengaturanAlur 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 A0, syarat ini tidak pernah dipenuhi karena saat instruksi ini dijalankan nilai A=0), sedangkan instruksi JZ Nol selalu dikerjakan karena syaratnya selalu dipenuhi. 92. Percabangan dan PengaturanAlur Program Pada MCS-51 Instruksi JC ( Jump on Carry ) dan instruksi JNC ( Jump on no Carry ) memantau nilaibit Carrydi 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 instruksiJumpbersyarat yang memantau nilai-nilai bit tertentu. Bit-bit tertentu bisa merupakan bit-bit dalam register status maupun kaki input mikrokontroler MCS51. 93. Percabangan dan PengaturanAlur Program Pada MCS-51 MOV A,#01010101B JNB ACC.0,LAGI ;JIKA A BIT KE 0=0LOMPAT KE LAGI JBC ACC.6,LAGI2 ;JIKA A BIT KE 6=1LOMPAT KE LAGI 2 DANACC.6 0 LAGI: LAGI2: .. 94. Percabangan dan PengaturanAlur Program Pada MCS-51 Kelompok Instruksi proses dan test memantau kondisi yang sudah terjadi yang dicatat MCS51.Ada dua instruksimelakukan dulu suatu proses baru kemudian memantau hasil proses untuk menentukan apakah harusJump .Instruksi DJNZ ( Decrement and Jump if not Zero ), merupakan instruksi yang akan mengurangi 1 nilairegister serbaguna(R0..R7) ataumemori-data , danJumpjika ternyata setelah pengurangan 1 tersebut hasilnya tidak nol. 95. Percabangan dan PengaturanAlur Program Pada MCS-51 MOV R0,#23h ;R0=23H DJNZ R0,$ ;R0=R0-1 jika belum nolmaka looping di tempat (tanda $ dalam instruksi ini maksudnya adalah kerjakan kembali instruksi ini). Selama mengerjakan 2 instruksi di atas, semua pekerjaan lain akan tertundawaktu tundanya ditentukan oleh besarnya nilai yang diisikan ke R0. 96. Percabangan dan PengaturanAlur Program Pada MCS-51 Instruksi CJNE ( Compare and Jump if Not Equal ) membandingkan dua nilai yang disebut dan MCS akanJumpkalau 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 makaJumpke TidakSama. . 97. Assembler Directive

  • Assembler Directive yang bersifat umum tersebut, antara lain adalah:
  • ORG singkatan dariORIGIN , 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.
  • ORG 1000h
  • 2. EQU singkatan dariEQUATE , dipakai untuk menentukan nilai sebuah Symbol.
  • Angka88 EQU 88
  • Berarti memberi nilai 88 pada Symbol Angka88

98. Assembler Directive DB singkatan dariDEFINE 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 darimemori-programnomor 200h, instruksi selanjutnya memerintahkan program Assembler agar mengisimemori-programnomor 200h dan berikutnya dengan tulisan Belajar Mikrokontroler (yang diisikan adalah kode ASCII dari B, e dan seterusnya) 99. Assembler Directive DW singkatan dariDEFINE WORD , dipakai untuk memberi nilai 2 byte kememori-programpada baris bersangkutan. Assembler Directive ini biasa dipakai untuk membentuk suatu tabel yang isinya adalah nomor-nomormemori-program . DS singkatan dariDefine Storage , Assembler Directive ini dipakai untuk membentuk variable.Sebagai variabel tentu saja memori yang dipakai adalahmemori-data(RAM) bukanmemori-program(ROM). Jika Assembler Directive DB dan DW yang membentuk kode dimemori-program . Dan karena DS bekerja di RAM, maka DS hanya sekedar menyediakan tempat di memori, tapi tidak mengisi nilai pada memori bersangkutan. 100. Pemrograman Untuk Port Paralel Pada MCS51 Port paralel merupakan sarana utama sebuah chip Mikrokontroler, lewat sarana ini mikrokontroler mengeluarkan sinyal digital yang dipakai mengendalikan rangkaian-rangkaian di luar chip secara langsung.Chip mikrokontroler 8051/8031/8751/8951 mempunyai 40 kaki, 32 kaki diantaranya adalah kaki untuk keperluan port paralel. Satu port paralel terdiri dari 8 kaki, dengan demikian 32 kaki tersebut membentuk 4 buah port paralel, yang masing-masing dikenali sebagai Port 0, Port 1, Port 2 dan Port 3. 101. Pemrograman Untuk Port Paralel Pada MCS51 Masing-masing jalur (kaki) dari port paralel di-nomor-i mulai dari 0 sampai 7, jalur (kaki) pertama Port 0 disebut sebagai P0.0, jalur terakhir Port 3 adalah P3.7. MCS51 mempunyai dua kelompok instruksi untuk mengeluarkan data ke port paralel: kelompok instruksi pertama bekerja pada port seutuhnya artinya 8 jalur dari port bersangkutan, misalnya MOV P1,#FFh membuat ke-delapan jalur port 0 sekaligus menjadi 1. 102. Pemrograman Untuk Port Paralel Pada MCS51 kelompok instruksi kedua hanya berpengaruh pada salah satu jalur dari port, misalnya SETB P3.4P3.4 1 atau CLR P3.3P3.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 padasemua jalur Port 1 danmenyimpannya diA 103. Pemrograman Untuk Port Paralel Pada MCS51 ORG 0 JMP PROGRAM ORG 100H PROGRAM:MOV A,#0H ULANG:MOV P1,A CALL DELAY INC A JMP ULANG DELAY:MOV R0,#00H MOV R1,#00H ULANG1: INC R1 ULANG2: INC R0 CJNE R0,#0FFH,ULANG2 CJNE R1,#040H,ULANG1 RET 104. Pemrograman Untuk Port Paralel Pada MCS51 ORG 000H JMP MULAI ORG 100H MULAI: MOV P1,#0FFH ULANG: JNB P1.0,ULANG MOV P1,#00H END 105. Pemrograman Untuk Port Paralel Pada MCS51 ORG 000H JMP PROGRAM ORG 100H PROGRAM: MOV P1,#0FFh ULANG1:MOV C,P1.0 MOV P1.1,C JMP ULANG1 END 106. Pemrograman Untuk Port Paralel Pada MCS51 ORG 000H JMP PROGRAM ORG 100H PROGRAM: MOV A,#01H ;A=00000001 ULANG:MOV P1,A ;P1=00000001 RL A ;A=00000010dst CALL DELAY JMP ULANG DELAY: MOV R1,#00H ULANG1: INC R1 CJNE R1,#0FFH,ULANG1 RET END 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. LECTURE 5 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 3) 126. Pemrograman Dasar MCS-51

  • Ditulis dengan bahasa assembler, C, Basic,Pascal.

Proses kompilasi akan diperagakan 127. STRUKTUR MEMORI

  • Memori dari 89SXX terbagi menjadi:
  • - RAM Internal
  • o Register Bank
  • o Bit addressable RAM
  • o General Purpose RAM
  • - Register Fungsi Khusus (Special Function Register)
  • - Flash PEROM
  • - Memori Eksternal

128. STRUKTUR MEMORI 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) 130. STRUKTUR MEMORI 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 132. STRUKTUR MEMORI 133. STRUKTUR MEMORI Flash PEROM - Kapasitas 4 Kb - Alamat 000H hingga FFFH - Diakses bila: o Pin EA/VP 89S51 berlogika high o Ada perintah untuk memanggil instruksi di alamat tersebut-Dapat diproteksi dengan: o Lock Bit 1, tidak dapat dibaca oleh program yang berada di memori eksternal o Lock Bit 2, tidak dapat dibaca oleh peralatan Programmer o Lock Bit 3, sama sekali tidak dapat mengakses/diakses oleh/dari memori eksternal 134. STRUKTUR MEMORI External Memory - Dibutuhkan untuk: o Memori berkapasitas besar o Emulasi Program - Sistem pengalamatan Multiplex Addressing 135. STRUKTUR MEMORI 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 137. STRUKTUR MEMORI 138. STRUKTUR MEMORI 139. STRUKTUR MEMORI 140. STRUKTUR MEMORI 141. STRUKTUR MEMORI 142. LECTURE 6 TIMER DAN COUNTER 143. TIMER PADA MCS51

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

144. TIMER PADA MCS51

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

145. TIMER PADA MCS51 146. TIMER PADA MCS51

  • Sinyal denyut yang diumpankan ke pencacah bisa dibedakan menjadi 2 macam, yang pertama ialah :
  • Sinyal denyut dengan frekuensi tetap yang udah diketahui besarnya.
  • Sinyal denyut dengan frekuensi tidak tetap.

147. TIMER PADA MCS51

  • Jika sebuah pencacah bekerja dengan frekuensi tetap yang sudah diketahui besarnya, dikatakan pencacah tersebut bekerja sebagaitimer , karena kedudukan pencacah tersebut setara dengan waktu yang bisa ditentukan dengan pasti.
  • Jika sebuah pencacah bekerja dengan frekuensi yang tidak tetap, dikatakan pencacah tersebut bekerja sebagaicounter , kedudukan pencacah tersebut hanyalah menyatakan banyaknya pulsa yang sudah diterima pencacah.

148. TIMER PADA MCS51

  • Untaian pencacah biner yang dipakai, bisa merupakanpencacah biner menaik( count up binary counter ) ataupencacah biner menurun( count down binary counter ).
  • 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.

149. TIMER PADA MCS51 Keluarga mikrokontroler MCS51, misalnya 8951, 8051, atau 8031 dilengkapi dengan dua perangkat Timer/Counter, masing-masing dinamakan sebagaiTimer 0danTimer 1 . Sedangkan untuk jenis yang lebihbesar , misalnya 8952 dan 8052 mempunyai tambahan yaituTimer 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 sebagaimemori-data internal . 150. TIMER PADA MCS51 Pencacah biner untuk Timer 0 dibentuk dengan register TL0 ( Timer 0 Low Byte , memori-data internal alamat 6Ah) dan register TH0 ( Timer 0 High Byte , memori-data internal alamat 6Ch). Pencacah biner untuk Timer 1 dibentuk dengan register TL1 ( Timer 1 Low Byte , memori-data internal alamat 6Bh) dan register TH1 ( Timer 1 High Byte , memori-data internal alamat 6Dh). 151. TIMER PADA MCS51

  • Pencacah biner pembentuk Timer/Counter MCS51 merupakanpencacah biner menaik( count up binary counter ) yang mencacah dari 0000h sampai FFFFh
  • Saat kedudukan pencacah berubah dari FFFFh kembali ke 0000h akan timbul sinyal limpahan.
  • Untuk mengatur kerja Timer/Counter dipakai 2 register tambahan yang dipakai bersama oleh Timer 0 dan Timer 1.
  • Register tambahan tersebut adalah register TCON ( Timer Control Register , memori-data internal alamat 88h, bisa dialamati secara bit) dan register TMOD ( Timer Mode Register , memori-data internal alamat 89h).

152. TIMER PADA MCS51

  • Pencacah biner Timer 0 dan 1
  • TL0, TH0, TL1 dan TH1 merupakan SFR ( Special Function Register ) yang dipakai untuk membentuk pencacah biner perangkatTimer 0danTimer 1 .
  • Kapasitas keempat register tersebut masing-masing 8 bit, bisa disusun menjadi 4 macam Mode pencacah biner

153. TIMER PADA MCS51

  • Pada Mode 0, Mode 1 dan Mode 2Timer 0danTimer 1masing-masing bekerja sendiri, artinya bisa dibuatTimer 0bekerja pada Mode 1 danTimer 1bekerja pada Mode 2, atau kombinasi mode lainnya sesuai dengan keperluan.
  • Pada Mode 3 TL0, TH0, TL1 dan TH1 dipakai bersama-sama untuk menyusun sistem timer yang tidak bisa di-kombinasi lain.

154. TIMER MODE 0 PADA MCS51 Susunan TL0, TH0, TL1 dan TH1 pada mode 0 adalah sebagai berikut:Pencacah biner dibentuk dengan TLx (TL0 atau TL1) sebagai pencacah biner 5 bit (meski kapasitas riil 8 bit), limpahan dari pencacah biner 5 bit ini dihubungkan ke THx (maksudnya bisa TH0 atau TH1)membentuk sebuah untaian pencacah biner 13 bit, limpahan dari pencacah 13 bit ini ditampung di flip-flop TFx (TF0 atau TF1) yang berada di dalam register TCON. 155. TIMER MODE 1 PADA MCS51 Susunan TL0, TH0, TL1 dan TH1 pada mode 1 adalah sebagai berikut:Mode ini sama dengan Mode 0, hanya saja register TLx dipakai sepenuhnya sebagai pencacah biner 8 bitpencacah biner adalah 16 bit. Seiring dengan sinyal denyut, kedudukan pencacah biner 16 bit ini akan bergerak dari 0000h (biner 0000 0000 0000 0000), 0001h, 0002h sampai FFFFh (biner 1111 1111 1111 1111), dan melimpah kembali menjadi 0000h. 156. TIMER MODE 2 PADA MCS51 Mode 2 Pencacah Biner 8 bit dengan Isi Ulang (8 bit Autoreload Binary Counter ) TLx dipakai sebagai pencacah biner 8 bit, sedangkan THx dipakai untuk menyimpan nilai yang diisikan ulang ke TLx, setiap kali kedudukan TLx melimpah (berubah dari FFh menjadi 00h).Dengan cara ini bisa didapatkan sinyal limpahan yang frekuensinya ditentukan oleh nilai yang disimpan dalam TH0. 157. TIMER MODE 3 PADA MCS51 Pada Mode 3 TL0, TH0, TL1 dan TH1 dipakai untuk membentuk 3 untaian pencacah, yang pertama adalah untaian pencacah biner 16 bit tanpa fasilitas pemantau sinyal limpahan yang dibentuk dengan TL1 dan TH1. Yang kedua adalah TL0 yang dipakai sebagai pencacah biner 8 bit dengan TF0 pemantau limpahan. Pencacah biner ketiga adalah TH0 yang dipakai sebagai pencacah biner 8 bit dengan TF1 pemantau limpahan. 158. Register Pengatur Timer Register TMOD dibagi menjadi 2 bagian secara simetris, bit 0 sampai 3 register TMOD (TMOD bit 0 .. TMOD bit 3) dipakai untuk mengaturTimer 0 , bit 4 sampai 7 register TMODE (TMOD bit 4 .. TMOD bit 7) dipakai untuk mengaturTimer1,pemakaiannya sebagai berikut : Register TMOD dan register TCON merupakan register pembantu untuk mengatur kerjaTimer 0danTimer 1 , kedua register ini dipakai bersama olehTimer 0danTimer 1 . 159. Register Pengatur Timer

  • BitM0/M1dipakai untuk menentukan Mode Timer
  • 2. BitC/T*dipakai untuk mengatur sumber sinyal denyut yang diumpankan ke pencacah biner. JikaC/T* =0 sinyal denyut diperoleh dari osilator kristal yang frekuensinya sudah dibagi 12, sedangkan jikaC/T* =1 maka sinyal denyut
  • diperoleh dari kakiT0(untukTimer 0 ) atau kakiT1(untukTimer 1 ).
  • 3. BitGATEmerupakan bit pengatur saluran sinyal denyut. Bila bitGATE =0 saluran sinyal denyut hanya diatur oleh bitTRx(maksudnya adalahTR0atauTR1pada registerTCON ). Bila bitGATE =1 kakiINT0(untukTimer 0 ) atau kakiINT1(untukTimer 1 ) dipakai juga untuk mengatur saluran sinyal denyut

160. Register Pengatur Timer RegisterTCONdibagi menjadi 2 bagian, 4 bit pertama (bit 0 .. bit 3, bagian yang diarsir dalam Gambar 3b) dipakai untuk keperluan mengatur kakiINT0danINT1 Sisa 4 bit dari registerTCON(bit 4..bit 7) dibagi menjadi 2 bagian secara simetris yang dipakai untuk mengaturTimer 0/Timer 1 161. Register Pengatur Timer BitTFx(maksudnya adalahTF0atauTF1)merupakan bit penampung limpahan,TFxakan menjadi 1 setiap kali pencacah biner yang terhubung padanya melimpah (pencacah berubah dari FFFFh kembali menjadi 0000h).BitTFxdi-nol-kan dengan istruksiCLR TF0atauCLR TF1 . Jika sarana interupsi dariTimer 0 / Timer 1dipakai,TRxdi-nol-kan saat MCS51 menjalankanrutin layanan interupsi( ISRInterupt Service Routine ). 162. Register Pengatur Timer BitTRx(maksudnya adalahTR0atauTR1)merupakan bit pengatur saluran sinyal denyut, bila bit ini = 0sinyal denyut tidak disalurkan ke pencacah biner sehingga pencacah berhenti mencacah. Bila bitGATEpada registerTMOD= 1 , maka saluran sinyal denyut ini diatur bersama olehTRxdan sinyal pada kakiINT0 / INT1 163. Register Pengatur Timer Setelah MCS51 di-reset registerTMODbernilai $00, hal ini berarti : bitC/T*= 0 , menurut Gambar 4 keadaan ini membuat saklarS1ke posisi atas, sumber sinyal denyut berasal dari osilator kristal yang frekuensinya sudah dibagi 12, pencacah biner yang dibentuk denganTL1danTH1berfungsi sebagaitimer . 164. Register Pengatur Timer Jika sistem yang dirancang memang menghendakiTimer 1bekerja sebagai timermaka bitC/T * tidak perlu diatur lagi. Tapi jika sistem yang dirancang menghendaki agarTimer 1bekerjasebagaicounteruntuk menghitung pulsa yang masuk lewat kakaiT1 (P3.5 ), maka posisi saklarS1harus dikebawahkan dengan membuat bitC/T*menjadi 1 . 165. Register Pengatur Timer bitGATE = 0 , hal ini membuat output gerbang OR selalu 1 tidak dipengaruhi keadaan 0 atau 1 pada kakiINT1( P3.3 ). Dalam keadaan semacam ini, saklarS2hanya dikendalikan lewat bitTR1dalam registerTCON . JikaTR1 = 1 saklarS2tertutup sehingga sinyal denyut dariS1disalurkan ke sistem pencacah biner, aliran sinyal denyut akan dihentikan jikaTR = 0 . 166. Register Pengatur Timer Sebaliknya jika bitGATE = 1 , output gerbang OR akan mengikuti keadaan kakiINT1 , saatINT1 = 0 apa pun keadaan bitTR1output gerbang AND selalu = 0 dan saklarS1selalu terbuka, agar saklarS1bisa tertutup kakiINT1dan bitTR1harus = 1 secara bersamaan. Jika sistem yang dirancang menghendaki kerja dari timer /counter dikendalikan dari sinyal yang berasal dari luar chip, maka bitGATEharus dibuat menjadi 1 167. Register Pengatur Timer Jika sistem yang dirancang menghendaki kerja dari timer/counter dikendalikan dari sinyal yang berasal dari luar chip, maka bitGATEharus dibuat menjadi 1 bitM1danM0 = 0 , berartiTL1danTH1disusun menjadi pencacah biner 13 bit (Mode 0), jika dikehendakiTimer 1bekerja pada mode 1 maka bitM1harus dibuat 0 dan bitM0 1 . 168. Register Pengatur Timer Pengetahuan di atas dipakai sebagai dasar untuk mengatur dan mengendalikan Timer seperti terlihat dalam contoh-contoh berikut : Setelah resetTMODbernilai00h , berartiTimer 1bekerja sebagai pencacah biner 13 bit, sumber sinyal denyut dari osilator kristal atauTimer 1bekerja sebagai timer, bitGATE= 0 berarti kakiINT1tidak berpengaruh pada rangkaian sehinggaTimer 1hanya dikendalikan dari bitTR1 . Dalam pemakaian biasanya dipakai pencacah biner 16 bit, untuk keperluan itu instruksi yang diperlukan untuk mengaturTMODadalah : MOV TMOD,#00010000b 169. Register Pengatur Timer Bilangan biner00010000diisikan keTMOD , berakibat bit 7TMOD(bitGATE ) bernilai 0 , bit 6 (bitC/T* ) bernilai 0 , bit 5 dan 4 (bitM1danM0 ) bernilai 01 , ke-empat bit ini dipakai untuk mengaturTimer 1 , sehingga Timer 1 bekerja sebagaitimer dengan pencacah biner 16 bit yang dikendalikan hanya dengan TR1 . Jika dikehendaki pencacah biner dipakai sebagai counter untuk mencacah jumlah pulsa yang masuk lewat kakiT1( P3.5 ), instruksinya menjadi : MOV TMOD,#01010000b 170. Register Pengatur Timer Perbedaannya dengan instruksi di atas adalah dalam instruksi ini bit 6 (bitC/T* ) bernilai 1 . Selanjutnya jika diinginkan sinyal dari perangkat keras di luar chip MCS51 bisa ikut mengendalikanTimer 1 , instruksi pengaturTimer 1akan menjadi :MOV TMOD,#11010000b Dalam hal ini bit 7 (bitGATE ) bernilai 1 . Setelah mengatur konfigurasiTimer 0seperti di atas, pencacah biner belum mulai mencacah sebelum diperintah dengan instruksi :SETB TR1 Jika bitGATE= 1 , selama kakiINT1bernilai 0 pencacah biner belum akan mencacah. Untuk menghentikan proses pencacahan, dipakai instruksiCLR TR1 171. Register Pengatur Timer

  • TMODtidak bisa dialamati secara bit( non bit addressable ) sehingga jika jika kedua Timer dipakai, pengisian bit-bit dalam registerTMODharus dipikirkan sekali gus untukTimer 0danTimer 1 .
  • BitTR1danTR0yang dipakai untuk mengendalikan proses pencacahan, terletak di dalam registerTCON(memori-data internal nomor 88h) yangbisa dialamati secara bit( bit addressable ). SehinggaTR0danTR1bisa diatur secara terpisah (dengan perintahSETBatauCLR ), tidak seperti mengaturTMODyang harus dilakukan secara bersamaan.
  • Bit penampung limpahan pencacah binerTF0danTF1 , juga terletak dalam registerTCONyang masing-masing bisa di-monitor sendiri.

172. Aplikasi Timer Pemakaian waktu tunda Waktu tunda banyak dipakai dalam pemrograman mikrokontroler untuk membangkitkan pulsa, membangkitkan sinyal periodik dengan frekuensi tertentu, untuk menghilangkan effek bouncing dari skalar dalam membuat key pad (keyboard sederhana) dan lain sebagainya. Waktu tunda bisa dibangkitkan secara sederhana dengan menjalankan instruksi-instruksi yang waktu pelaksanaanya bisa diperhitungkan dengan tepat. Untuk mendapatkan waktu tunda yang panjang, tidak dipakai cara di atas tapi pakai Timer. Waktu tunda yang dibentuk dengan kedua cara tersebut sangat tergantung pada frekuensi kerja mikrokontroler, dalam contoh-contoh berikut dianggap mikrokontroler bekerja pada frekuensi 12 MHz. 173. Aplikasi Timer Instruksi-instruksi berikut ini bisa dipakai untuk membangkitkan pulsa 0 dengan lebar 3 mikro-detik pada kakiP1.0 CLR P1.0 NOP; 1 mikro-detik NOP; 1 mikro-detik SETB P1.0; 1 mikro-detik Instruksi baris pertama membuatP1.0yang mula-mula 1 menjadi 0 ,pelaksanaan instruksiNOPmemerlukan waktu 1 mikro-detik ,instruksiSETB P1.0juga memerlukan waktu 1 mikrodetik, total waktu sebelumP1.0kembali menjadi 1 adalah 3 mikro-detik 174. Aplikasi Timer Dengan sedikit perubahan instruksi-instruksi di atas bisa membangkitkan sinyal dengan frekuensi 100 KHz pada kakiP1.0: Sinyal100KHz: CPL P1.0; 1 mikro-detik NOP; 1 mikro-detik NOP; 1 mikro-detik SJMP Sinyal100KHz; 2 mikro-detik InstruksiCPL P1.0pada baris 1 membalik keadaan padaP1.0 , bila mula-mulaP1.0bernilai 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 adalahP1.0bernilai 0 selama 5 mikro-detik dan bernilai 1 selama 5 mikro-detik berulang terus tanpa henti, dengan frekuensi sebesar 1/10 mikro-detik = 100.000 Hertz. 175. Aplikasi Timer Program di atas bisa pula dibuat dengan memakaiTimer 1sebagai 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 mempersiapkanTimer 0bekerja pada Mode 2 Pencacah Biner 8 bit dengan Isi Ulang, bilangan pengisi ulang ditentukan sebesarF0hyang disimpan ke registerTH1pada baris 2, instruksi berikutnya memerintahkan pencacah biner mulai mencacah. 176. Aplikasi Timer Pencacah biner yang dibentuk dengan registerTL1akan mencacah naik seirama dengan siklus sinyal denyut, mulai dariF6hsampaiFFh , saat pencacah melimpah dariFFhke00hbitTR1pada registerTCONakan menjadi 1 danTL1secara otomatis di isi ulang dengan bilanganF0hyang tersimpan pada registerTH0 . Hal ini akan terjadi terus menerus dan berulang setiap 10 siklus sinyal denyut ( F6h ,F7h ,F8h ,F9h ,FAh ,FBh ,FCh ,FDh ,FEh ,FFhkembali ke00h , total 10siklus) 177. Aplikasi Timer InstruksiJNB TR1,$menunggu bitTR1menjadi 1 , yakni saat pencacah biner melimpah dariFFhke00hyang dibahas di atas. Lepas dari penantian tersebut,P1.0dibalik keadaanya dengan instruksiCPL P1.0 ,TR1dikembalikan menjadi 0 (harus dikembalikan sendiri dengan instruksi ini), agar bisa ditunggu lagi sampai menjadi 1 kembali setelah instruksiSJMP Ulangi . Frekuensi dari sinyal diP1.0sebesar 1 / 16 mikro-detik = 31,25 KHz. 178. Aplikasi Timer Contoh Penggunaan dalam subrutin MOV TMOD,#01H CALL DELAY DELAY: MOV TH0,#HIGH (-50000);SEKITAR 50000 MIKROSEKON MOV TL0,#LOW (-50000)SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET 179. LECTURE 7 KOMUNIKASI SERIAL 180. SERIAL INTERFACE

  • MCS-51 memiliki kemampuan untuk berkomunikasi secara serial melalui pin RXD dan TXD.
  • Satu hal yang perlu diingat adalah tingkat tegangan komunikasi kedua pin serial menggunakan tingkat tegangan TTL

181. STANDART SERIAL INTERFACE

  • Pada prinsipnya, komunikasi serial adalah komunikasi dimana transmisi data dilakukan per bit.
  • Interface serial hanya membutuhkan jalur yang sedikit (umumnya hanya 2 jalur) sehingga lebih menghemat pin jika dibandingkan dengan interface paralel.
  • Komunikasi serial ada dua macam, asynchronous serial dan synchronous serial.

182. STANDART SERIAL INTERFACE

  • Synchronousserial adalah komunikasi dimana hanya ada satu pihak (pengirim atau penerima) yang menghasilkanclock dan mengirimkanclock tersebut bersama-sama dengan data.
  • Contoh pengunaansynchronous serial terdapat pada transmisi data keyboard.

183. STANDART SERIAL INTERFACE

  • Asynchronous serialadalah komunikasi dimana kedua pihak (pengirim dan penerima) masing-masing menghasilkanclock namun hanya data yang ditransmisikan, tanpaclock.
  • Agar data yang dikirim sama dengan data yang diterima, maka kedua frekuensi clock harus sama dan harus erdapat sinkronisasi.

184. STANDART SERIAL INTERFACE

  • Setelah adanya sinkronisasi, pengirim akan mengirimkan datanya sesuai dengan frekuensiclock pengirim dan penerima akanmembaca data sesuai dengan frekuensiclock penerima.
  • Contoh penggunaanasynchronous serialadalah pada Universal AsynchronousReceiver Transmitter(UART) yang digunakan pada serial port (COM) komputer.
  • MCS-51 mendukung komunikasi secara asinkron, bahkan tiga dari empat serial mode yang dimiliki MCS-51 kompatibel dengan UART.

185. SERIAL REGISTER Register yang digunakan untuk mengatur komunikasi serial terdapat pada Serial Control (SCON) 186. SERIAL REGISTER Baud rate pada mode 1, 2, dan 3 dapat dilipatgandakan dengan memberi nilai 1 pada SMOD (dalam SFR PCON) 187. SERIAL REGISTER 188. SERIAL REGISTER -RENREN harus diberi nilai 1 untuk mengaktifkan penerimaan data. Jika REN diberi nilai 0, maka tidak akan ada penerimaan data.-TB8TB8 adalah bit ke-9 yang dikirimkan dalam mode 2 atau 3. Nilai bit ini diatur oleh program user.-RB8RB8 adalah bit ke-9 yang diterima dalam mode 2 atau 3. Pada mode 1, RB8 adalah stop bit yang diterima. Pada mode 0, RB8 tidak digunakan. 189. MODE OPERASI

  • MCS-51 memiliki 4 mode komunikasi serial.
  • Mode 0 berupa synchronous serial(shift register), sedangkan tiga mode yang lain berupa asynchronous serial (UART).
  • Pada semua mode, pengiriman dilakukan jika ada instruksi yang mengisi nilairegister SBUF.
  • Sedangkan pada saat penerimaan, data yang diterima akan disimpan pada register SBUF.

190. MODE OPERASI

  • Mode 0 adalah 8-bit shift registerdimana data dikirimkan dan diterima melaluipinRXD sedangkanclockdikirimkan dan diterima melaluipinTXD.
  • Pengiriman data 8 bit dilakukan dengan mengirimkan Least Significant Bit (LSB) terlebih dahulu.
  • Pada mode 0,baud rateyang digunakan adalah sebesar 1/12 dari frekuensi osilator.

191. MODE OPERASI

  • Pada mode 1, jumlah data yang dikirimkan sebanyak 10 bit yang terdiri daristart bit, 8bitdata (LSB terlebih dahulu), danstop bit.
  • Pada proses penerimaan, nilaistop bit akan dimasukkan ke RB8 secara otomatis. Pada proses pengiriman, stop bit akan diberi nilai 1 secara otomatis.
  • Pada mode 1, baud rate yang digunakan dapat diatur melalui Timer 1

192. MODE OPERASI

  • 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.
  • Pada proses pengiriman, nilaibit ke-9 dapat diatur dengan mengisi nilai TB8.
  • Pada proses penerimaan, bit ke-9 akan dimasukkan ke RB8 secara otomatis.
  • Pada mode 2,baud rateyang dapat digunakanadalah sebesar 1/64 frekuensi osilator atau 1/32 frekuensi osilator jika SMOD bernilai 1.

193. MODE OPERASI

  • Mode 3 hampir sama dengan mode 2.
  • Perbedaannya terdapat pada baud rateyang digunakan.
  • Jika mode 2 menggunakanbaud rateyang pasti, mode 3 menggunakan baud rate yang dihasilkan oleh Timer 1.

194. BAUD RATE

  • Baud rate adalah frekuensi clock yang digunakan dalam pengiriman dan penerimaan data.
  • Satuanbaud ratepada umumnya adalah bps (bit per second), yaitu jumlah bit yang dapat ditransmisikan per detik.
  • Baud rate untuk mode 0 bernilai tetap dengan rumus yang terdapat pada persamaan 1.

195. BAUD RATE Sedangkanbaud rateuntuk mode 2 memiliki 2 variasi tergantung dari kondisi SMOD. 196. BAUD RATE Baud rate untuk mode 1 dan 3 dihasilkan oleh Timer 1. Pengaturan baudrateuntuk mode 1 dan 3 dapat dilakukandengan cara mengubah nilai SMOD,TMOD, dan TH1.UmumnyaTimer1 dioperasikan pada mode 2 (8-bit Auto Reload) 197. BAUD RATE

  • Satu hal yang harus diperhatikan dalam pengaturan baud rate adalah nilai baud rate dan nilai TH1 diusahakan harus tepat dan bukan merupakan pembulatan.
  • Untuk komunikasi serial kecepatan tinggi, pembulatan terhadap nilai-nilai tersebut dapat mengakibatkan kekacauan dalam proses pengiriman atau penerimaan.
  • Jika terdapat nilai pecahan, user disarankan untuk mengganti osilator dengan frekuensi yang sesuai.
  • Untuk komunikasi dengan kecepatan rendah, toleransi terhadap kesalahan cukup besar sehingga pembulatan masih boleh dilakukan.

198. BAUD RATE Misalkan baud rate yang diinginkan adalah 19200 bps dengan frekuensi osilator 11,0592 MHz 199. BAUD RATE Untuk mendapatkanbaud rateyang lambat,userdapat mengoperasikan Timer 1 pada mode 1 dengan rumus 200. INISIALISASI SERIAL Proses inisialisasi bertujuan untuk menentukan mode komunikasi serial dan baud rate yang digunakan.Register yang harus diatur terlebih dahulu meliputi:1.SCONLangkah 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 sebagaiberikut:MOV SCON, #01010000batauMOV SCON, #50hatauSETB SM1SETB REN 201. INISIALISASI SERIAL 2.TMOD, TH1 dan/atau TL1, PCON, dan TCONJika komunikasi serial digunakan dalam mode 1 atau 3, maka langkah berikutnya adalah menentukan baud rate.MisalnyaTimer/Counter 1 digunakan sebagaitimer dalam mode 2 untuk membangkitkanbaud rate19200 bps, maka instruksinya adalah sebagai berikut:MOV TMOD, #00100000bMOV TH1, #0FDhMOV PCON, #10000000bMOV TCON, #01000000batauMOV TMOD, #20hMOV TH1, #0FDhMOV PCON, #80hMOV TCON, #40hatauMOV TMOD, #20hMOV TH1, #0FDhMOV PCON, #80hSETB TR1 202. INISIALISASI SERIAL 3.IE dan/atau IPJika komunikasi serial yang diprogram akan digunakan sebagai sumber interrupt, maka IE dan/atau IP juga harus diatur.Misalnya komunikasi serial digunakan sebagai sumberinterrupt dengan prioritas tinggi, maka instruksinya adalah sebagai berikut:MOV IP, #00010000bMOV IE, #10010000batauMOV IP, #10hMOV IE, #90hatauSETB PSSETB ESSETB EA 203. LECTURE 8 INTERUPSI 204. PENGANTAR

  • 8051 mempunyai 5 buah sumber interupsi.
  • Dua buah interupsi eksternal, dua buah interupsi timer dan sebuah interupsi port serial.
  • Meskipun memerlukan pengertian yang lebih mendalam, pengetahuan mengenai interupsi sangat membantu mengatasi masalah pemrograman mikroprosesor/mikrokontroler dalam hal menangani banyak peralatan input/output.
  • Pengetahuan mengenai interupsi tidak cukup hanya dibahas secara teori saja, diperlukan contoh program yang konkrit untuk memahami.

205. PENGANTAR

  • 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.
  • Nilai tersebut dinamakan sebagai vektor reset (reset vector)
  • Merupakan nomor awal memori-program yang menampung program yang harus dijalankan.

206. PENGANTAR

  • Pembahasan di atas memberi gambaran bahwa proses reset merupakan peristiwa perangkat keras (sinyal reset diumpankan ke kaki Reset) yang dipakai untuk mengatur kerja dari perangkat lunak, yakni menentukan aliran program prosesor (mengisi Program Counter dengan vektor reset).
  • Program yang dijalankan dengan cara reset, merupakan program utama bagi prosesor.

207. PENGANTAR

  • Peristiwa perangkat keras yang dipakai untuk mengatur kerja dari perangkat lunak, tidak hanya terjadi pada proses reset, tapi terjadi pula dalam proses interupsi.
  • Dalam proses interupsi, terjadinya sesuatu pada perangkat keras tertentu dicatat dalam flip-flop khusus, flip-flop tersebut sering disebut sebagai petanda (flag), catatan dalam petanda tersebut diatur sedemikian rupa sehingga bisa merupakan sinyal permintaan interupsi pada prosesor.

208. TEORI DASAR

  • Jika permintaan interupsi ini dilayani prosesor, Program Counter akan diisi dengan sebuah nilai. Nilai tersebut dinamakan sebagai vektor interupsi (interrupt vector), yang merupakan nomor awal memori-program yang menampung program yang dipakai untuk melayani permintaan interupsi tersebut.
  • Program yang dijalankan dengan cara interupsi, dinamakan sebagai program layanan interupsi (ISR - Interrupt Service Routine). Saat prosesor menjalankan ISR, pekerjaan yang sedang dikerjakan pada program utama sementara ditinggalkan, selesai menjalankan ISR prosesor kembali menjalankan program utama.

209. BAGAN KERJA INTERUPSI

  • Sebuah prosesor bisa mempunyai beberapa perangkat keras yang merupakan sumber sinyal permintaan interupsi.
  • Masing-masing sumber interupsi dilayani dengan ISR berlainan.
  • Prosesor mempunyai beberapa vektor interupsi untuk memilih ISR mana yang dipakai melayani permintaan interupsi dari berbagai sumber.

210. BAGAN KERJA INTERUPSI

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

211. BAGAN KERJA INTERUPSI

  • Jika pada saat yang sama terjadi lebih dari satu permintaan interupsi, prosesor akan melayani permintaan interupsi tersebut menurut prioritas yang sudah ditentukan.
  • Selesai melayani permintaan interupsi perioritas yang lebih tinggi, prosesor melayani permintaan interupsi berikutnya, baru setelah itu kembali mengerjakan program utama.
  • 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.

212. BAGAN KERJA INTERUPSI

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

213. SUMBER INTERUPSI MCS51 214. SUMBER INTERUPSI MCS51

  • Seperti terlihat dalam Gambar 2, AT89C51 mempunyai 6 sumber interupsi
  • yakni Interupsi External ( External Interrupt ) yang berasal dari kakiINT0danINT1
  • Interupsi Timer ( Timer Interrupt ) yang berasal dariTimer 0maupunTimer 1
  • Interupsi Port Seri ( Serial Port Interrupt ) yang berasal dari bagian penerima dan bagian pengirim Port Seri.
  • Di samping itu AT89S52 mempunyai 2 sumber interupsi lain, yakni Interupsi Timer2bersumber dariTimer 2yang memang tidak ada pada AT89C51.

215. SUMBER INTERUPSI MCS51

  • BitIE0(atau bitIE1 ) dalamTCONmerupakan petanda (flag) yang menandakan adanya permintaan Interupsi Eksternal.
  • Ada 2 keadaan yang bisa meng-aktip-kan petanda ini, yang pertama karena level tegangan 0 pada kakiINT0(atauINT1 ), yang kedua karena terjadi transisi sinyal 1 menjadi 0 pada kakiINT0(atauINT1 ).
  • Pilihan bentuk sinyal ini ditentukan lewat bitIT0(atau bitIT1 ) yang terdapat dalam registerTCON .

216. SUMBER INTERUPSI MCS51 Kalau bitIT0(atauIT1 ) = 0 maka bitIE0(atauIE1 ) dalamTCONmenjadi 1 saat kakiINT0 = 0 . Kalau bitIT0(atauIT1 ) = 1 maka bitIE0(atauIE1 ) dalamTCONmenjadi 1 saat terjadi transisi sinyal 1 menjadi 0 pada kakiINT0 . 217. SUMBER INTERUPSI MCS51 Menjelang prosesor menjalankanISRdari Interupsi Eksternal, bitIE0(atau bitIE1 ) dikembalikan menjadi 0 , menandakan permintaan Interupsi Eksternal sudah dilayani.Namun jika permintaan Interupsi Ekternal terjadi karena level tegangan 0 pada kakiIT0(atauIT1 ), dan level tegangan pada kaki tersebut saat itu masih = 0 maka bitIE0(atau bitIE1 ) akan segera menjadi 1 lagi! 218. SUMBER INTERUPSI MCS51 BitTF0(atau bitTF1 ) dalamTCONmerupakan petanda (flag) yang menandakan adanya permintaan Interupsi Timer, bitTF0(atau bitTF1 ) menjadi 1 pada saat terjadi limpahan pada pencacah biner Timer 0 (atau Timer 1). Menjelang prosesor menjalankanISRdari Interupsi Timer, bitTF0(atau bitTF1 ) dikembalikan menjadi 0 , menandakan permintaan Interupsi Timer sudah dilayani. 219. SUMBER INTERUPSI MCS51 Interupsi port seri terjadi karena dua hal, yang pertama terjadi setelah port seri selesai mengirim data 1 byte, permintaan interupsi semacam ini ditandai dengan petanda (flag)TI = 1 .Yang kedua terjadi saat port seri telah menerima data 1 byte secara lengkap, permintaan interupsi semacam ini ditandai dengan petanda (flag)RI = 1 . 220. SUMBER INTERUPSI MCS51 Petanda di atas tidak dikembalikan menjadi 0menjelang prosesor menjalankanISRdari Interupsi port seri, karena petanda tersebut masih diperlukanISRuntuk menentukan sumber interupsi berasal dariTIatauRI .Agar port seri bisa dipakai kembali setelah mengirim atau menerima data, petanda-petanda tadi harus di-nol-kan lewat program. 221. SUMBER INTERUPSI MCS51 Petanda permintaan interupsi ( IE0 ,TF0 ,IE1 ,TF1 ,RIdanTI ) 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 eksternalIT0bisa diajukan dengan instruksiSETB IE0 . 222. Mengaktifkan Interupsi Semua sumber permintaan interupsi yang di bahas di atas, masing-masing bisa di-aktif-kan atau di-nonaktif-kan secara tersendiri lewat bit-bit yang ada dalam registerIE( Interrupt Enable Register ). BitEX0danEX1untuk mengatur interupsi eksternalINT0danINT1 , bitET0danET1untuk mengatur interupsi timer 0 dan timer 1, bitESuntuk mengatur interupsi port seri.Disamping itu ada pula bitEAyang bisa dipakai untuk mengatur semua sumber interupsi sekaligus. 223. Mengaktifkan Interupsi Setelah reset, semua bit dalam registerIEbernilai 0 , artinya sistem interupsi dalam keadaan non-aktip.Untuk mengaktipkan salah satu sistem interupsi, bit pengatur interupsi bersangkutan diaktipkan dan jugaEAyang mengatur semua sumber interupsi.Misalnya instruksi yang dipakai untuk mengaktipkan interupsi ekternalINT0adalahSETB EX0disusul denganSETB EA . 224. Vektor Interupsi Saat MCS51 menanggapi permintaan interupsiProgram Counter diisi dengan sebuah nilai yang dinamakan sebagai vektor interupsiyang merupakan nomor awal dari memori-program yang menampungISRuntuk melayani permintaan interupsi tersebut.Vektor interupsi itu dipakai untuk melaksanakan instruksiLCALLyang diaktipkan secara perangkat keras. 225. Vektor Interupsi Vektor interupsi untuk interupsi eksternalINT0adalah0003h , untuk interupsi timer 0 adalah000Bh Interupsi ekternalINT1adalah0013h Interupsi timer 1 adalah001Bhdan untuk interupsi port seri adalah0023h . Jarak vektor interupsi satu dengan lainnya sebesar 8, atau hanya tersedia 8 byte untuk setiapISR .Jika sebuahISRmemang hanya pendek saja, tidak lebih dari 8 byte, makaISRtersebut bisa langsung ditulis pada memori-program yang disediakan untuknya.ISRyang lebih panjang dari 8 byte ditulis ditempat lain, tapi pada memori-program yang ditunjuk oleh vektor interupsi diisikan instruksiJUMPke arahISRbersangkutan. 226. LECTURE 9 INTERFACING DENGANLCD KARAKTER 227. INTERFACING DENGANLCD KARAKTER 228. INTERFACING DENGANLCD KARAKTER RS=P1.0 RW=P1.1 E=P1.2 DB7=P2.7 DB6=P2.6 DB5=P2.5 DB4=P2.4 229. INTERFACING DENGANLCD KARAKTER Inisialisasi dan file pendukung LCD : hd44780.asm bagian variabel rs bit p1.0 rw bit p1.1 e bit p1.2 rkursor equ 14h lkursor equ 10h rdisplay equ 1fh ldisplay equ 18h homelcd equ 02h barisdua equ 0c0h display_clear equ 01h display_off equ 08h cursor_on equ 0eh cursor_off equ 0ch blink_on equ 0fh blink_off equ 0eh set4bit equ 28h set8bit equ 38h 230. INTERFACING DENGANLCD KARAKTER DELAY1S: mov r0,#100 ss: call delay5ms djnz r0,ss RET delay5ms: MOV TMOD,#01H MOV TH0,#HIGH(-5000) MOV TL0,#LOW(-5000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET 231. INTERFACING DENGANLCD KARAKTER baris2_lcd: mov a,#barisdua call kirim_perintah ret baris1_lcd: mov a,#homelcd call kirim_perintah ret 232. INTERFACING DENGANLCD KARAKTER geser_display_kanan: mov a,#rdisplay call kirim_perintah ret geser_display_kiri: mov a,#ldisplay call kirim_perintah ret geser_kursor_kiri: mov a,#lkursor call kirim_perintah ret geser_kursor_kanan: mov a,#rkursor call kirim_perintah ret 233. INTERFACING DENGANLCD KARAKTER baca_register: mov p2,#0ffh ;jadikan p2 sebagai input setb rw clr rs setb e mov a,p2 anl a,#0f0h clr e push acc setb e mov a,p2 anl a,#0f0h clr e swap a pop b add a,b clr rw ret 234. INTERFACING DENGANLCD KARAKTER periksa_busy: call baca_register jb acc.7,periksa_busy ret kirim_data_lcd: setb e mov p2,a clr e ret kirim_karakter: clr rw setb rs call kirim_data_lcd swap a call kirim_data_lcd call periksa_busy ret 235. INTERFACING DENGANLCD KARAKTER kirim_perintah: clr rw clr rs call kirim_data_lcd ;4bit sebanyak 2kali swap a call kirim_data_lcd call periksa_busy ret 236. INTERFACING DENGANLCD KARAKTER init_lcd: setb rs clr e call delay5ms call delay5ms call delay5ms call delay5ms mov a,#30h ;d7='0',d6='0',d5='1',d4='1' call kirim_perintah call delay50us call delay50us mov a,#30h call kirim_perintah mov a,#20h ;send init call kirim_perintah mov a,#28h ;8x5, 2lines d5='0'-->4bit;d3='1'-->2baris,d2='0'-->5x8 call kirim_perintah mov a,#08h ;display off call kirim_perintah mov a,#01h ;display clear call kirim_perintah mov a,#0eh ;display on call kirim_perintah mov a,#06h ;mode increment address call kirim_perintah ret 237. INTERFACING DENGANLCD KARAKTER hapus_layar: mov a,#01h call kirim_perintah ret data_lcd data p2 ;set4bit posisi msb kursor_on: mov a,#cursor_on call kirim_perintah ret kursor_off: mov a,#cursor_off call kirim_perintah ret 238. INTERFACING DENGANLCD KARAKTER posisi_awal_lcd: mov a,#02h ;set ke posisi paling awal call kirim_perintah ret kirim_pesan_lcd: loop_kirim_pesan_lcd: mov a,#0 ;ambil data dr memori yang ditunjuk movc a,@a+dptr cjne a,#0fh,kirim_lcd ;kirim ke lcd selama belum;ditemukan 0fh ret kirim_lcd: call kirim_karakter inc dptr ;tunjuk ke memori selanjutnya jmp loop_kirim_pesan_lcd 239. INTERFACING DENGANLCD KARAKTER kirim_pesan_lcd_with_delay: loop_kirim_pesan_lcd_with_delay: mov a,#0 ;ambil data dr memori yang ditunjuk movc a,@a+dptr cjne a,#0fh,kirim_lcd_with_delay ;kirim ke lcd selama belum ditemukan 0fh ret kirim_lcd_with_delay: call kirim_karakter inc dptr ;tunjuk ke memori selanjutnya call delay1s jmp loop_kirim_pesan_lcd_with_delay 240. INTERFACING DENGANLCD 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... ',0fhpesanlcd4: db '#SWITCH.COM#',0fhpesanlcd5: db '@@-FTEKUKSW-@@',0fh heart: db 0,10,31,31,14,4,0,0,0fh oke: db 4,0,0eh,0,1fh,0,1fh,0,0fh $include (hd44780.asm) 241. INTERFACING DENGANLCD KARAKTER POLA: mov r1,#40h mov r2,#0 loop: mov a,r1 call kirim_perintah mov dptr,#heart mov a,r2 movc a,@a+dptr inc r2 inc r1 cjne a,#0fh,kirim_lcd_grafik mov a,#02h call kirim_perintah mov a,#0 call kirim_karakter call delay1s jmp exit kirim_lcd_grafik: call kirim_karakter jmp loop exit: ret 242. INTERFACING DENGANLCD KARAKTER call init_lcd mov dptr,#pesanlcd1 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd2 call kirim_pesan_lcd call delay1s call delay1s call delay1s call hapus_layar mov dptr,#pesanlcd3 call kirim_pesan_lcd_with_delay call delay1s 243. INTERFACING DENGANLCD KARAKTER call hapus_layar call baris2_lcd call kursor_off mov dptr,#pesanlcd4 call kirim_pesan_lcd call delay1s call hapus_layar call delay1s call baris1_lcd mov dptr,#pesanlcd4 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd5 call kirim_pesan_lcd call delay1s call delay1s call hapus_layar call delay1s call pola 244. INTERFACING DENGANLCD KARAKTER call init_lcd mov dptr,#pesanlcd1 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd2 call kirim_pesan_lcd call delay1s call delay1s call delay1s 245. INTERFACING DENGANLCD KARAKTER call hapus_layar mov dptr,#pesanlcd3 call kirim_pesan_lcd_with_delay call delay1s 246. INTERFACING DENGANLCD KARAKTER call hapus_layar call baris2_lcd call kursor_off mov dptr,#pesanlcd4 call kirim_pesan_lcd call delay1s 247. INTERFACING DENGANLCD KARAKTER call hapus_layar call delay1s call baris1_lcd mov dptr,#pesanlcd4 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd5 call kirim_pesan_lcd call delay1s call delay1s 248. INTERFACING DENGANLCD KARAKTER call hapus_layar call delay1s call pola 249. LECTURE 10 INTERFACING DENGANLCDGRAFIK 250. Koneksi LCD dengan Mikrokontroler 251. Spesifikasi Teknis 252. Spesifikasi Teknis 253. Spesifikasi Teknis 254. Spesifikasi Teknis 255. Spesifikasi Teknis 256. Spesifikasi Teknis 257. Spesifikasi Teknis 258. Spesifikasi Teknis 259. Spesifikasi Teknis 260. Spesifikasi Teknis 261. Spesifikasi Teknis 262. Spesifikasi Teknis 263. Pengalamatan Pada Layar LCD 264. Command 265. Command 266. Command 267. Start Line 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 269. Rutin Hapus Layar 270. Konversi dan nilai untuk Layar LCD2 271. Diagram Alir Menggambar Data Hasil Pengukuran di Layar LCD 272. Contoh Hasil di Layar Sinyal Uji 1kHz Sinus Sinyal Uji 125 Hz & 1kHz Sinus 273. Contoh Hasil di Layar Sinyal Uji Derau Putih Sinyal Uji Derau Merah Jambu 274. Contoh Hasil di Layar Sinyal Uji Derau Putih Sinyal Uji Derau Merah Jambu 275. LECTURE 11 EKSPANSI SISTEM MCS51 DENGAN DAC, ADC, SIPO, PISO, MUX ANALOG, LATCHES, PPI 276. LECTURE 12 Sensor-Sensor +IC Special Function 277. Robot Sensing and Sensors 278. References

  • Sensors for mobile robots: theory and applications, H. R. Everett, A. K. Peters Ltd, C1995, ISBN: 1-56881-048-2
  • Handbook of Modern Sensors: Physics, Designs and Applications , 2 ndedition, Jacob Fraden, AIP Press/Springer, 1996. ISBN 1-56396-538-0.

279. Some websites

  • http://www.omega.com/(sensors + hand-helds)
  • http://www.extech.com/(hand-helds)
  • http://www.agilent.com/(instruments, enormous)
  • http://www.keithley.com/(instruments, big)
  • http://www.tegam.com/(instruments, small)
  • http://www.edsci.com/(optics ++)
  • http://www.pacific.net/~brooke/Sensors.html (comprehensive listing of sensors etc. and links)

280. What is Sensing ?

  • Collect information about the world
  • Sensor - an electrical/mechanical/chemical device that maps an environmental attribute to a quantitative measurement
  • Each sensor is based on atransduction principle-conversion of energy from one form to another

281. Human sensing and organs

  • Vision: eyes (optics, light)
  • Hearing: ears (acoustics, sound)
  • Touch: skin (mechanics, heat)
  • Odor: nose (vapor-phase chemistry)
  • Taste: tongue (liquid-phase chemistry)

Counterpart? 282. Extended ranges and modalities

  • Vision outside the RGB spectrum
    • Infrared Camera, see at night
  • Active vision
    • Radar and optical (laser) range measurement
  • Hearing outside the 20 Hz 20 kHz range
    • Ultrasonic range measurement
  • Chemical analysis beyond taste and smell
  • Radiation: , , -rays, neutrons, etc

283. Transduction to electronics

  • Thermistor: temperature-to-resistance
  • Electrochemical: chemistry-to-voltage
  • Photocurrent: light intensity-to-current
  • Pyroelectric: thermal radiation-to-voltage
  • Humidity: humidity-to-capacitance
  • Length (LVDT:Linear variable differential transformers): position-to-inductance
  • Microphone: sound pressure-to-

284. Sensor Fusion and Integration

  • Human: One organ one sense?
    • Not necessarily
      • Balance: ears
      • Touch: tongue
      • Temperature: skin
  • Robot:
    • Sensor fusion:
      • Combine readings from several sensors into a (uniform) data structure
    • Sensor integration:
      • Use information from several sensors to do something useful

285. Sensor Fusion

  • One sensor is (usually) not enough
    • Real sensors are noisy
    • Limited Accuracy
    • Unreliable - Failure/redundancy
    • Limited point of view of the environment
      • Return an incomplete description of the environment
    • The sensor of choice may be expensive - might be cheaper to combine two inexpensive sensors

286. General Processing Fusion Interpretation Sensing Perception Preprocessing Preprocessing Preprocessing Preprocessing Sensor Sensor Sensor Sensor 287. Preprocessing

  • Colloquially - cleanup the sensor readings before using them
  • Noise reduction - filtering
  • Re-calibration
  • Basic stuff - e.g. edge detection in vision
  • Usually unique to each sensor
  • Change (transform) data representation

288. Sensor/Data Fusion

  • Combine data from different sources
    • measurements from different sensors
    • measurements from different positions
    • measurements from different times
  • Often a mathematical technique that takes into account uncertainties in data sources
    • Discrete Bayesian methods
    • Neural networks
    • Kalman filtering
  • Produces a merged data set (as though there was one virtual sensor)

289. Interpretation

  • Task specific
  • Often modeled as a best fit problem given somea prioriknowledge about the environment
  • Tricky

290. Classification ofSensors

  • Proprioception (Internal state) v.s. Exteroceptive (external state)
    • measure values internally to the system (robot),e.g. battery level, wheel position, joint angle, etc,
    • observation of environments, objects
  • Active v.s. Passive
    • emitting energy into the environment, e.g., radar, sonar
    • passively receive energy to make observation, e.g., camera
  • Contact v.s. non-contact
  • Visual v.s. non-visual
    • vision-based sensing, image processing, video camera

291. Proprioceptive Sensors

  • Encoders, Potentiometers
    • measure angle of turn via change in resistance or by counting optical pulses
  • Gyroscopes
    • measure rate of change of angles
    • fiber-optic (newer, better), magnetic (older)
  • Compass
    • measure which way is north
  • GPS: measure location relative to globe

292. Touch Sensors

  • Whiskers, bumpers etc.
    • mechanical contact leads to
      • closing/opening of a switch
      • change in resistance of some element
      • change in capacitance of some element
      • change in spring tension
      • ...

293. Sensors Based on Sound

  • SONAR:So undN avigationa ndR anging
    • bounce sound off of objects
    • measure time for reflection to be heard - gives a range measurement
    • measure change in frequency - gives the relative speed of the object (Doppler effect)
    • bats and dolphins use it with amazing results
    • robots use it w/ less than amazing results

294. Robotics Sensor Based on EM Spectrum 295. Electromagnetic Spectrum Visible Spectrum 700 nm 400 nm 296. Sensors Based on EM Spectrum

  • Radio and Microwave
    • RADAR:Ra dioD etectiona ndR anging
    • Microwave radar: insensitive to clouds
  • Coherent light
    • all photons have same phase and wavelength
    • LASER:L ightA mplification byS timulatedE mission ofR adiation
    • LASER RADAR: LADAR - accurate ranging

297. Sensors Based on EM Spectrum

  • Light sensitive
    • eyes, cameras, photocells etc.
    • Operating principle
      • CCD - charge coupled devices
      • photoelectric effect
  • IR sensitive
    • Local Proximity Sensing
      • Infrared LEDs (cheap, active sensing)
      • usually low resolution - normally used for presence/absence of obstacles rather than ranging, operate over small range
    • Sense heat differences and construct images
      • Human detection sensors
      • night vision application

298. General Classification (1) 299. General Classification (2) 300. Sensors Used in Robot 301. Solar Cell Digital Infrared Ranging Compass Touch Switch Pressure Switch Limit Switch Magnetic Reed Switch Magnetic Sensor Miniature Polaroid Sensor Polaroid Sensor Board Piezo Ultrasonic Transducers Pyroelectric Detector Thermistor Gas Sensor Gieger-Muller Radiation Sensor Piezo Bend Sensor Resistive Bend Sensors Mechanical Tilt Sensors Pendulum ResistiveTilt Sensors CDS CellResistive Light Sensor Hall Effect Magnetic Field Sensors Compass IRDA Transceiver IR Amplifier Sensor IR Modulator Receiver Lite-On IRRemote Receiver Radio Shack Remote Receiver IR Sensor w/lens Gyro Accelerometer IR Reflection Sensor IR PinDiode UV Detector Metal Detector 302. Sensors Used in Robot

  • Resistive sensors
    • bend sensors, potentiometer, resistive photocells, ...
  • Tactile sensors
    • contact switch, bumpers
  • Infrared sensors
    • Reflective, proximity, distance sensors
  • Ultrasonic Distance Sensor
  • Inertial Sensors(measure the second derivatives of position)
    • Accelerometer, Gyroscopes,
  • Orientation Sensors
    • Compass, Inclinometer
  • Laser range sensors
  • Vision, GPS,

303.

  • Bend Sensors
  • Resistance = 10k to