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

  • 17,525 views
Uploaded on

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

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

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
17,525
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
2,765
Comments
0
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Deddy Susilo, S.T. 61546 EE-632 MICROCONTROLLER
  • 2. Silabus (3 sks) - 16 minggu 1. Sekilas ttg Mikroprosesor, Mikrokomputer,Mikrokontroler 2. Arsitektur Mikrokontoler MCS-51 3. Pemrograman Bahasa Assembly untuk MCS-51 4. Timer dan Counter 5. Komunikasi Serial 6. Interupsi 7. Ekspansi Sistem MCS-51 dengan DAC, ADC, SIPO, PISO, Mux Analog, Latches, PPI 8. Interfacing dengan LCD karakter dan Grafik, driver motor
  • 3. Silabus (3 sks) - 16 minggu 9. Sensor-Sensor + IC Special Func 10. Protokol I2C (I square C) 11. Protokol I2S (I square S) 12. Protokol SPI (Serial Paralel Interface) 13. Penerapan Kontrol PID 14. Penerapan Kontrol Fuzzy 15. Arsitektur uC AVR + AVR STUDIO 16. Pemrograman Dasar AVR 17. Menggunakan Code Vision AVR
  • 4. silabus (3 sks) Bobot Penilaian : TTS : 30% TAS : 40% LAB : 30% - 12 x Praktikum ( @ 1,5% ) - 1 x Tes Praktek (Pengali Praktikum) - Proyek 12 % Kuliah : Selasa 11-13 (F-212) Rabu 14-16 (E-138)
  • 5. LECTURE 1 ARSITEKTUR MIKROKONTROLER MCS51 (PART 1)
  • 6. MIKROPROSESOR ? MIKROKOMPUTER ? MIKROKONTROLER ?
  • 7. MIKROPROSESOR ? sebuah IC ( Integrated Circuit ) yang digunakan sebagai otak/pengolah utama dalam sebuah sistem komputer
  • 8. MIKROPROSESOR ? 1971 oleh Intel Corp, yaitu Mikroprosesor Intel 4004 yang mempunyai arsitektur 4 bit
  • 9. MIKROPROSESOR ? 8080(berarsitektur 8 bit), 8085, dan kemudian 8086 (berarsitektur 16 bit)
  • 10. MIKROPROSESOR ? Motorola dengan M6800 dan Zilog dengan Z80 nya
  • 11. MIKROKOMPUTER ? sebuah mikroprosesor merupakan CPU (unit pengolah pusat) sistem 8
  • 12. MIKROKOMPUTER ? pada PC, mikroprosesor digunakan sebagai pengolah utama pada semua kerja komputer, yaitu untuk menjalankan perangkat lunak, memecahkan persoalan-persoalan aritmatika, mengendalikan proses Input/Output ,
  • 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 luar  untuk mengirimkan dan menerima data dari/ke luar sistem. pada PC, salah satu piranti I/O bertugas menerima masukan data dari keyboard, serta piranti I/O yang lain bertugas mengirimkan data ke printer untuk dicetak, dsb.
  • 23. BAGIAN BAGIAN MIKROKOMPUTER Clock (denyut)  menyinkronkan kerja semua piranti dalam sistem. Sumber sinyal dari Clock biasanya didapatkan dari osilator kristal.
  • 24. KESIMPULAN 1 IC mikroprosesor tak dapat berdiri sendiri, karena kerjanya sangatlah bergantung dari piranti2 pendukung lainnya. Misal tanpa adanya piranti Input/Output akan membuat sistem tak dapat berinteraksi dengan dunia luar. Atau misalnya tanpa adanya RAM, mikroprosesor tidak dapat bekerja dan mengolah data-data pada variabel yang diinstruksikan oleh perangkat lunak.
  • 25. KESIMPULAN 2 Akibat dari kebergantungannya yang besar pada piranti2 pendukung  mikroprosesor menjadi kurang efisien. Perusahaan2 semikonduktor menciptakan sebuah IC mikroprosesor jenis lain yang didalamnya sudah terdapat piranti-piranti pendukungnya  mikrokontroler. ‘mikrokomputer dalam sebuah chip’ ( single chip microcomputer ).
  • 26. KESIMPULAN 3 Meski kurang efisien dibanding mikrokontroler, untuk penggunaan tertentu mikroprosesor tetap mempunyai kelebihan2, antara lain lebih cepat dan lebih upgradable (karena semua piranti tambahan diletakkan di luar sehingga bisa diganti).
  • 27. BEBERAPA JENIS MIKROPROSESOR DAN MIKROKONTROLER 24
  • 28. ARSITEKTUR MIKROKONTROLER KELUARGA MCS-51 Mikrokontroler 8051  Intel mikrokontroler  populer, banyak perusahaan2 semikonduktor lain yang membuat ‘clone’ -nya. Perusahaan tsb antara lain adalah Atmel, Siemens, AMD, Philips, dsb. banyak ‘clone’ dari 8051, maka terbentuklah keluarga besar mikrokontroler yang mempunyai arsitektur dasar yang sama dengan 8051, yang selanjutnya ‘clone-clone’ tersebut lazim disebut dengan keluarga mikrokontroler MCS-51.
  • 29. LECTURE 2 ARSITEKTUR MIKROKONTROLER MCS51 (PART 2)
  • 30. Fasilitas-Fasilitas Mikrokontroler 8051 • 4K bytes ROM • 128 bytes RAM • Empat buah I/O (Input/Output) port. Masing-masing I/O port terdiri dari 8bit • Dua buah timer/counter. Masing-masing adalah 16bit timer. • Antarmuka ( Interface ) Serial • Ruang pengalamatan memori eksternal untuk kode (program) sebesar 64Kbytes • Ruang pengalamatan memori eksternal untuk data sebesar 64K bytes
  • 31. 3 256 bytes RAM 8KB FLASH EPROM 8952 2 128 bytes RAM 4KB FLASH EPROM 8951 3 256 bytes RAM 8KB EPROM 8752 3 256 bytes RAM 8KB EPROM 8032 3 256 bytes RAM 0KB 8052 2 128 bytes RAM 8KB ROM 8751 2 128 bytes RAM 0KB 8031 2 128 bytes RAM 4KB ROM 8051 Jumlah Timer Memori Data Intenal Memori Program (Kode) Internal Tipe
  • 32. Susunan Pin IC 8051/8031/8751/8951
  • 33.
    • Port 0 (P0.0-P0.7)  punya fungsi ganda. Pada perancangan dengan minimum sistem (tanpa eksternal memori)  port0  I/O
    • Pada perancangan dengan penambahan memori eksternal (baik RAM & ROM/EPROM)  multiplexing alamat ( address ) dan data
    • 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.
    • Pada setengah siklus waktu kerja mikrokontroler, port 0  keluaran alamat A0-A7 dan pada setengah siklus berikutnya port 0  keluaran data D0-D7.
    • Pergantian address dan 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 sebagai address 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 pengaturan multiplexing alamat 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 31  memilih 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 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.
    • Semua pin pada IC mikrokontroler keluarga MCS-51  TTL 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 langsung  RAM (Random Access Memory) sebanyak 128 byte dan Special Function Register sebanyak 128 byte. RAM internal dan hardware register ini terletak di dalam IC 8951. Sebagian ruang alamat pada RAM internal dapat diakses secara bit (bukan secara byte). Pengalamatan Memori dan Register Pada MCS51 Khususnya AT89S51
  • 43. 3. Ruang alamat memori data eksternal sebanyak maksimal 64KB misalnya 6264. Ruang alamat memori kode program dan ruang alamat memori data eksternal sebenarnya memiliki ruang alamat yang sama (overlap). Ruang alamat memori kode program dan ruang alamat memori data eksternal dialamati dari alamat 0000h sampai FFFFh. Sedangkan memori-data internal dialamati dari alamat 00h sampai FFh. Alamat 00h sampai 7Fh dipakai untuk mengalamati RAM internal dan alamat 80h sampai FFh dipakai untuk mengalamati Special Function Register. Pengalamatan Memori dan Register Pada MCS51 Khususnya AT89S51
  • 44. Pengalamatan Memori dan Register Pada MCS51 Khususnya AT89S51
  • 45. Memori-data nomor 00h sampai 7Fh bisa dipakai sebagai memori penyimpan data biasa, dibagi menjadi 3 bagian:  Alamat memori 00h sampai 18h selain sebagai memori-data biasa, bisa pula dipakai sebagai Register Serba Guna ( General Purpose Register ).  Alamat memori 20h sampai 2Fh selain sebagai memori-data biasa, bisa dipakai untuk menyimpan informasi dalam level bit .  Alamat memori 30h sampai 7Fh (sebanyak 80 byte) merupakan memori-data biasa, bisa dipakai untuk menyimpan data maupun dipakai sebagai Stack. Pengalamatan Memori dan Register Pada MCS51 Khususnya AT89S51
  • 46. Menempati alamat memori-data 00h sampai 18h (32 byte)  4 Kelompok Register ( Register Bank ), 8 byte memori dari masing2 Kelompok  Register 0 , .. Register 7 (R0, R1, R2, R3, R4, R5, R6 dan R7). Penulisan program memori2 ini  disebut R0, R1, R2, R3, R4, R5, R6 dan R7, tidak lagi dengan nomor memori Pengertian ini bisa diperjelas dengan contoh 2 instruksi berikut : MOV A,04h (isi di alamat 04h  Akumulator) MOV A,R4 (isi R4  Akumulator) Penerjemahan ke kode mesin, instruksi pertama dirubah menjadi E5 04 (heksadesimal) dan instruksi kedua menjadi E6 (heksadesimal), jadi instruksi kedua lebih sederhana dari instruksi pertama. Register Serba Guna ( General Purpose Register )
  • 47. Khusus Register 0 dan Register 1 (R0 dan R1) masih punya mempunyai kemampuan lain  register penampung alamat yang dipakai dalam pengaksesan memori secara tidak langsung ( indirect memori addressing ) Memori level Bit ( Memori-data internal 20h sampai 2Fh) Setiap byte memori di daerah ini bisa dipakai menampung 8 bit informasi yang masing-masing dinomori tersendiri, dengan demikian dari 16 byte memori yang ada bisa dipakai untuk menyimpan 128 bit (16 x 8 bit) yang dialamati dengan alamat 00h sampai 7Fh. Informasi dalam level bit tersebut masing-masing bisa di-‘1’-kan, di - ‘0’- kan dengan instruksi SETB dan CLR. Register Serba Guna ( General Purpose Register )
  • 48. Instruksi SETB 00h  memori-bit alamat 0h menjadi ‘1’ = membuat bit nomor 0 dari memori-data pada alamat 20h menjadi ‘1’  bit-bit lain memori 20h tidak berubah nilai. Instruksi CLR 7Fh  memori-bit alamat 7Fh menjadi ‘0’ = membuat bit nomor 7 dari memori-data pada alamat 2Fh menjadi ‘0’  bit-bit lain memori 2Fh tidak berubah nilai. MOV 21h,#0Fh = SETB 08h SETB 09h SETB 0Ah SETB 0Bh CLR 0Ch CLR 0Dh CLR 0Eh CLR 0Fh Register Serba Guna ( General Purpose Register )
  • 49. Special Function Register (SFR)  satu daerah RAM dalam IC keluarga MCS51  untuk mengatur perilakunya dalam hal-hal khusus, misalnya tempat untuk berhubungan dengan port paralel P1 atau P3, dan sarana input/output lainnya, tapi tidak umum dipakai untuk menyimpan data seperti layaknya memori-data. Penulisan program SFR diperlakukan persis sama dengan memori-data. Untuk mengisi memori-data pada alamat 60h dengan bilangan 0Fh, instruksi  MOV 60h,#0Fh Register Khusus (SFR - Special Function Register )
  • 50. Sedangkan untuk menyimpan 0Fh ke Port 1 yang di SFR menempati memori-data pada alamat 90h, instruksi yang dipergunakan adalah : MOV 90h,#0Fh Mengakses memori-data ada dua cara, yakni - langsung ( direct memory addressing) -tidak langsung ( indirect memory addressing ) lewat bantuan R0 dan R1. Tapi untuk SFR hanya bisa dipakai penyebutan nomor memori secara langsung ( direct memory addressing ) saja. Register Khusus (SFR - Special Function Register )
  • 51.
    • 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 Byte dan Data Pointer Low Byte
    • Register Serba Guna R0..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 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. 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
    • Akumulator  sebuah 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 nomor memori-data yang 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 pembantu Akumulator saat menjalankan instruksi perkalian dan pembagian.
  • 59. Register Dasar MCS51 Data Pointer High Byte (DPH) dan Data Pointer Low Byte (DPL) masing-masing merupakan register dengan kapasitas 8 bit, tapi dalam pemakaiannya kedua register ini digabungkan menjadi satu register 16 bit yang dinamakan sebagai Data Pointer Register (DPTR). Sesuai dengan namanya, Register ini dipakai untuk mengalamati data dalam jangkauan yang luas, yaitu terutama untuk mengakses data yang berada pada memori eksternal
  • 60. PEMROGRAMAN ASSEMBLY UNTUK MCS-51 Kode Program (perangkat lunak/ software ) pengendali mikrokontroler disusun dari kumpulan instruksi, instruksi tersebut setara dengan kalimat perintah bahasa manusia yang hanya terdiri atas predikat dan objek. Dengan demikian tahap pertama pembuatan program pengendali mikrokontroler dimulai dengan pengenalan dan pemahaman predikat (kata kerja) dan objek apa saja yang dimiliki mikrokontroler.
  • 61. PEMROGRAMAN ASSEMBLY UNTUK MCS-51 Objek dalam pemrograman mikrokontroler adalah data yang tersimpan di dalam memori,register dan input/output. Sedangkan ‘kata kerja’ yang dikenal pun secara umum dikelompokkan menjadi perintah untuk perpindahan data, arithmetik, operasi logika, pengaturan alur program dan beberapa hal khusus. Kombinasi dari ‘kata kerja’ dan objek itulah yang membentuk perintah pengatur kerja mikrokontroler.
  • 62. PEMROGRAMAN ASSEMBLY UNTUK MCS-51 Instruksi MOV A,7Fh merupakan contoh sebuah instruksi dasar yang sangat spesifik, MOV merupakan ‘kata kerja’ yang memerintahkan peng-copy-an data, merupakan predikat dalam kalimat perintah ini. Sedangkan objeknya adalah data yang di-copy-kan, dalam hal ini adalah data yang ada di dalam alamat memori 7Fh di-copy-kan ke Akumulator A.
  • 63. Pengalamatan Data dalam MCS51 Instruksi MOV A,7Fh merupakan contoh sebuah instruksi dasar yang sangat spesifik, MOV merupakan ‘kata kerja’ yang memerintahkan peng-copy-an data, merupakan predikat dalam kalimat perintah ini. Sedangkan objeknya adalah data yang di-copy-kan, dalam hal ini adalah data yang ada di dalam alamat memori 7Fh di-copy-kan ke Akumulator A.
  • 64. Pengalamatan Data dalam MCS51 Pengalamatan/penempatan data konstan/konstanta ( immediate addressing mode ): Contoh :MOV A,#20h. Contoh instruksi ini mempunyai makna data konstanta 20h (sebagai data konstan ditandai dengan ‘#’) di-copy-kan ke Akumulator A. Pengalamatan data secara langsung ( direct addressing mode )  memindahkan data yang berada di dalam memori  mengakses alamat memori tempat data tersebut berada : MOV A,20h. Contoh instruksi ini mempunyai makna data yang berada di dalam alamat memori 20h di-copy-kan ke Akumulator.
  • 65. Pengalamatan Data dalam MCS51 Pengalamatan data secara tidak langsung ( indirect addressing mode )  menunjuk data yang berada di dalam memori, kalau memori penyimpan data ini letaknya berubah-rubah sehingga alamat memori tidak diakses secara langsung tapi di-‘titip’-kan ke register lain. MOV A,@R0. Register serba guna R0 dipakai untuk mencatat alamat memori, sehingga instruksi ini mempunyai makna memori yang alamatnya tercatat dalam R0 isinya di-copy-kan ke Akumulator A. Tanda ‘@’ dipakai untuk menandai alamat memori disimpan di dalam R0.
  • 66. Pengalamatan Data dalam MCS51 Pengalamatan data dalam register ( register addressing mode ): MOV A,R5. Instruksi ini mempunyai makna data dalam register serba guna R5 di-copykan ke Akumulator A. Instruksi ini membuat register serba guna R0 sampai R7 sebagai tempat penyimpan data yang sangat praktis yang kerjanya sangat cepat.
  • 67. 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,R7 Akumulator A dan register serba guna R7 berisikan data yang sama, yang asalnya tersimpan di dalam R7. MOV A,20h MOV A,@R1 MOV A,P1 MOV P3,A
  • 69. Instruksi-instruksi dalam MCS51 KELOMPOK ARITMATIK (ADD, ADDC, SUBB, DA, MUL dan DIV) Perintah ADD dan ADDC Isi Akumulator A + ( 1 byte )  hasil di Akumulator . Dalam operasi ini bit Carry (C flag dalam PSW)  penampung limpahan hasil penjumlahan. Jika hasil penjumlahan nilainya lebih besar dari 255, bit Carry  ‘1’, kalau tidak  ‘0’. ADDC sama dengan ADD, hanya saja dalam ADDC nilai bit Carry dalam proses sebelumnya ikut dijumlahkan bersama.
  • 70. Instruksi-instruksi dalam MCS51 Bilangan 1 byte  bilangan konstan, register serba guna, dari memori data yang alamat memorinya dialamati secara langsung maupun tidak langsung ADD A,R0 ; register serba guna ADD A,#23h ; bilangan konstan ADD A,@R0 ; no memori tak langsung ADD A,P1 ; no memori langsung (port 1)
  • 71. Instruksi-instruksi dalam MCS51 Perintah SUBB Isi Akumulator A - bilangan 1 byte dengan nilai bit Carry , hasil pengurangan  Akumulator . Dalam operasi ini bit Carry juga berfungsi sebagai penampung limpahan hasil pengurangan. Jika hasil pengurangan tersebut melimpah (nilainya kurang dari 0) bit Carry  ‘1’, tidak bit Carry  ‘0’. SUBB A,R0 ; A = A - R0 - C SUBB A,#23h ; A = A – 23H SUBB A,@R1 SUBB A,P0
  • 72. Instruksi-instruksi dalam MCS51 Perintah DA Perintah DA ( Decimal Adjust ) dipakai setelah perintah ADD; ADDC atau SUBB, dipakai untuk merubah nilai biner 8 bit yang tersimpan dalam Akumulator menjadi 2 buah bilangan desimal yang masing-masing terdiri dari nilai biner 4 bit. DA A
  • 73. Instruksi-instruksi dalam MCS51 Perintah MUL AB Bilangan biner 8 bit dalam Akumulator A dikalikan dengan bilangan biner 8 bit dalam register B. Hasil perkalian berupa bilangan biner 16 bit, 8 bit bilangan biner yang bobotnya lebih besar ditampung di register B, sedangkan 8 bit lainnya yang bobotnya lebih kecil ditampung di Akumulator A. Bit OV dalam PSW ( Program Status Word ) dipakai untuk menandai nilai hasil perkalian yang ada dalam register B. Bit OV akan bernilai ‘0’ jika register B bernilai 00h, kalau tidak bit OV bernilai ‘1’. MOV A,#10 MOV B,#20 MUL AB
  • 74. Instruksi-instruksi dalam MCS51 Perintah DIV AB Bilangan biner 8 bit dalam Akumulator A dibagi dengan bilangan biner 8 bit dalam register B. Hasil pembagian berupa bilangan biner 8 bit ditampung di Akumulator , sedangkan sisa pembagian berupa bilangan biner 8 bit ditampung di register B. Bit OV dalam PSW ( Program Status Word ) dipakai untuk menandai nilai sebelum pembagian yang ada dalam register B. Bit OV akan bernilai ‘1’ jika register B asalnya bernilai 00h. MOV A,#10 MOV B,#2 DIV AB
  • 75. Instruksi-instruksi dalam MCS51 KELOMPOK LOGIKA (ANL, ORL dan XRL) Operasi logika yang bisa dilakukan adalah operasi AND (kode operasi ANL), operasi OR  ORL dan operasi Exclusive-OR  XRL ANL A,#01111110  bit 0 sampai 7 dari Akumulator bernilai ‘0’ sedangkan bit-bit lainnya tetap tidak berubah nilai. ORL A,#01111110  bit 1 sampai 6 dari Akumulator bernilai ‘1’ sedangkan bit-bit lainnya tetap tidak berubah nilai. XRL A,#01111110  bit 1 sampai 6 dari Akumulator berbalik nilai, sedangkan bit-bit lainnya tetap tidak berubah nilai.
  • 76. LECTURE 4 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 2)
  • 77. Percabangan dan Pengaturan Alur Program Pada MCS-51 Secara umum kelompok instruksi yang dipakai untuk mengatur alur program terdiri atas instruksi-instruksi JUMP Instruksi-instruksi untuk membuat dan memakai sub-rutin/modul (setara dengan PROCEDURE dalam Pascal) Instruksi-instruksi JUMP bersyarat ( conditional Jump , setara dengan statemen IF .. THEN ).
  • 78. Percabangan dan Pengaturan Alur Program Pada MCS-51 Kelompok Instruksi JUMP Mikrokontroler menjalankan instruksi-instruksi, selesai menjalankan satu instruksi mikrokontroler langsung menjalankan instruksi berikutnya Hal ini dilakukan dengan cara nilai Program Counter bertambah sebanyak jumlah byte yang membentuk instruksi yang sedang dijalankan Dengan demikian pada saat instruksi bersangkutan dijalankan Program Counter selalu menyimpan alamat memori-program yang menyimpan instruksi berikutnya.
  • 79. Percabangan dan Pengaturan Alur Program Pada MCS-51 Kelompok Instruksi JUMP Pada saat mikrokontroler menjalankan kelompok instruksi JUMP, nilai Program Counter yang runtun sesuai dengan alur program diganti dengan alamat memori-program baru yang dikehendaki programer. Mikrokontroler MCS51 mempunyai 3 macam intruksi JUMP, yakni instruksi LJMP ( Long Jump ), instruksi AJMP ( Absolute Jump ) dan instruksi SJMP
  • 80. Percabangan dan Pengaturan Alur Program Pada MCS-51 Kelompok Instruksi JUMP Pada saat mikrokontroler menjalankan kelompok instruksi JUMP, nilai Program Counter yang runtun sesuai dengan alur program diganti dengan alamat memori-program baru yang dikehendaki programer. Mikrokontroler MCS51 mempunyai 3 macam intruksi JUMP, yakni instruksi LJMP ( Long Jump ), instruksi AJMP ( Absolute Jump ) dan instruksi SJMP( Short Jump ). Kecepatan melaksanakan ketiga instruksi ini juga persis sama, yakni memerlukan waktu 2 periode instruksi
  • 81. Percabangan dan Pengaturan Alur Program Pada MCS-51 Instruksi LJMP Kode untuk instruksi LJMP adalah 02h, memori-program baru yang dituju  bilangan biner 16 bit  memori-program MCS51 yang jumlahnya 64 KiloByte. Instruksi LJMP terdiri atas 3 byte, yang bisa dinyatakan dengan bentuk umum 02 aa aa, aa yang pertama adalah memori-program bit 8 sampai dengan bit 15, sedangkan aa yang kedua adalah memori-program bit 0 sampai dengan bit 7. LJMP TugasBaru … ORG 2000h TugasBaru: MOV A,P3.1
  • 82. Percabangan dan Pengaturan Alur Program Pada MCS-51 ORG adalah perintah pada assembler agar berikutnya assembler bekerja pada memori-program yang disebut di belakang ORG  2000H TugasBaru disebut sebagai LABEL, yakni sarana assembler untuk menandai/ menamai memori-program. Dengan demikian, dalam potonganprogram di atas, memori-program 2000h diberi nama TugasBaru, atau bisa juga dikatakan bahwa TugasBaru bernilai 2000h. Dengan demikian intruksi LJMP TugasBaru di atas, sama artinya dengan LJMP 2000h yang oleh assembler akan diterjemahkan menjadi 02 20 00 (heksadesimal).
  • 83. Percabangan dan Pengaturan Alur Program Pada MCS-51 Instruksi AJMP memori-program baru yang dituju dinyatakan dengan bilangan biner 11 bit, dengan demikian instruksi ini hanya bisa menjangkau satu daerah memori-program MCS51 sejauh 2 KiloByte. Instruksi AJMP terdiri atas 2 byte, byte pertama merupakan kode untuk instruksi AJMP (00001b) yang digabung dengan memori program bit 8 sampai dengan bit 10, byte kedua dipakai untuk menyatakan memori-program bit 0 sampai dengan bit 7.
  • 84. Percabangan dan Pengaturan Alur Program Pada MCS-51 ORG 800h AJMP DaerahIni AJMP DaerahLain ORG 900h DaerahIni: . . . ORG 1000h DaerahLain: . . .
  • 85. Percabangan dan Pengaturan Alur Program Pada MCS-51 Instruksi SJMP memori-program dalam instruksi ini tidak dinyatakan dengan memori-program yang sesungguhnya, tapi dinyatakan dengan ‘pergeseran relatip’ terhadap nilai Program Counter saat instruksi ini dilaksanakan. Pergeseran relatip tersebut dinyatakan dengan 1 byte bilangan 2’s complement, yang bisa dipakai untuk menyakatakan nilai antara –128 sampai dengan +127. Nilai minus dipakai untuk menyatakan bergeser ke instruksiinstruksi sebelumnya, sedangkan nilai positip untuk menyatakan bergeser ke instruksi-instruksi sesudahnya.
  • 86. Percabangan dan Pengaturan Alur Program Pada MCS-51 ORG 0F80h SJMP DaerahLain . . . ORG 1000h DaerahLain: instruksi SJMP DaerahLain tetap bisa dipakai, asalkan jarak antara instruksi itu dengan LABEL DaerahLain tidak lebih dari 127 byte. 1000H-F80H=80H=128D
  • 87. Percabangan dan Pengaturan Alur Program Pada MCS-51 Kelompok Instruksi untuk sub-rutin Sub-rutin merupakan suatu potong program yang karena berbagai pertimbangan dipisahkan dari program utama. Bagian-bagian di program utama akan ‘memanggil’ (CALL) sub-rutin  mikrokontroler sementara meninggalkan alur program utama untuk mengerjakan instruksi-instruksi dalam sub-rutin, kemudian kembali ke alur program utama. Satu-satunya cara membentuk sub-rutin adalah memberi instruksi RET pada akhir potongan program sub-rutin. Program sub-rutin di-’panggil’ dengan instruksi ACALL atau LCALL.
  • 88. Percabangan dan Pengaturan Alur Program Pada MCS-51 Agar nantinya mikrokontroler bisa meneruskan alur program utama, pada saat menerima instruksi ACALL atau LCALL, sebelum mikrokontroler pergi mengerjakan sub-rutin, nilai Program Counter saat itu disimpan dulu ke dalam menyimpan nilai Program Counter secara otomatis di Stack Selanjutnya mikrokontroler mengerjakan instruksi-instruksi di dalam subrutin sampai menjumpai instruksi RET yang berfungsi sebagai penutup dari subrutin.
  • 89. Percabangan dan Pengaturan Alur Program Pada MCS-51 Instruksi ACALL dipakai untuk me-‘manggil’ program sub-rutin dalam daerah memori-program 2 KiloByte yang sama, setara dengan instruksi AJMP yang sudah dibahas di atas. Sedangkan instruksi LCALL bisa menjangkau seluruh memori-program mikrokontroler MCS51 sebanyak 64 KiloByte.
  • 90. Percabangan dan Pengaturan Alur Program Pada MCS-51 Kelompok Instruksi Jump Bersyarat Instruksi JZ ( Jump if Zero ) dan instruksi JNZ ( Jump if not Zero ) adalah instruksi JUMP bersyarat yang memantau nilai Akumulator A. MOV A,#0 JNZ BukanNol JZ Nol . . . BukanNol: . . . Nol : . . .
  • 91. Percabangan dan Pengaturan Alur Program Pada MCS-51 Kelompok Instruksi Jump Bersyarat Dalam contoh program sebelumnya, MOV A,#0  A bernilai nol mengakibatkan instruksi JNZ BukanNol tidak akan pernah dikerjakan (JNZ artinya Jump kalau nilai A<>0, syarat ini tidak pernah dipenuhi karena saat instruksi ini dijalankan nilai A=0), sedangkan instruksi JZ Nol selalu dikerjakan karena syaratnya selalu dipenuhi.
  • 92. Percabangan dan Pengaturan Alur Program Pada MCS-51 Instruksi JC ( Jump on Carry ) dan instruksi JNC ( Jump on no Carry )  memantau nilai bit Carry di dalam PSW Instruksi JB ( Jump on Bit Set ), instruksi JNB ( Jump on not Bit Set ) dan instruksi JBC (Ju mp on Bit Set Then Clear Bit )  merupakan instruksi Jump bersyarat yang memantau nilai-nilai bit tertentu. Bit-bit tertentu bisa merupakan bit-bit dalam register status maupun kaki input mikrokontroler MCS51.
  • 93. Percabangan dan Pengaturan Alur Program Pada MCS-51 MOV A,#01010101B JNB ACC.0,LAGI ;JIKA A BIT KE 0=‘0’ LOMPAT KE LAGI JBC ACC.6,LAGI2 ;JIKA A BIT KE 6=‘1’ LOMPAT KE LAGI 2 DAN ACC.6  ’0’ LAGI: …… LAGI2: … ..
  • 94. Percabangan dan Pengaturan Alur Program Pada MCS-51 Kelompok Instruksi proses dan test  memantau kondisi yang sudah terjadi yang dicatat MCS51. Ada dua instruksi  melakukan dulu suatu proses baru kemudian memantau hasil proses untuk menentukan apakah harus Jump . Instruksi DJNZ ( Decrement and Jump if not Zero ), merupakan instruksi yang akan mengurangi 1 nilai register serbaguna (R0..R7) atau memori-data , dan Jump jika ternyata setelah pengurangan 1 tersebut hasilnya tidak nol.
  • 95. Percabangan dan Pengaturan Alur Program Pada MCS-51 MOV R0,#23h ;R0=’23H’ DJNZ R0,$ ;R0=R0-1 jika belum nol maka looping di tempat (tanda $ dalam instruksi ini maksudnya adalah kerjakan kembali instruksi ini). Selama mengerjakan 2 instruksi di atas, semua pekerjaan lain akan tertunda  waktu tundanya ditentukan oleh besarnya nilai yang diisikan ke R0.
  • 96. Percabangan dan Pengaturan Alur Program Pada MCS-51 Instruksi CJNE ( Compare and Jump if Not Equal ) membandingkan dua nilai yang disebut dan MCS akan Jump kalau kedua nilai tersebut tidak sama! MOV A,P1 CJNE A,#0Ah,TidakSama ... SJMP EXIT TidakSama: ... Instruksi MOV A,P1 membaca nilai input dari Port 1, instruksi CJNE A,#0Ah,Tidaksama memeriksa apakah nilai Port 1 yang sudah disimpan di A sama dengan 0Ah, jika tidak maka Jump ke TidakSama. .
  • 97. Assembler Directive
    • Assembler Directive yang bersifat umum tersebut, antara lain adalah:
    • 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.
    • ORG 1000h
    • 2. EQU – singkatan dari EQUATE , dipakai untuk menentukan nilai sebuah Symbol.
    • Angka88 EQU 88
    • Berarti memberi nilai 88 pada Symbol Angka88
  • 98. Assembler Directive DB – singkatan dari DEFINE BYTE , dipakai untuk memberi nilai tertentu pada memori-program. Nilai tersebut merupakan nilai 1 byte, bisa berupa angka ataupun kode ASCII. DB merupakan Assembler Directive yang dipakai untuk membentuk teks maupun tabel. Contoh : ORG 200h STRING DB ‘Belajar Mikrokontroler’ ORG 200h memerintahkan program Assembler agar bekerja mulai dari memori-program nomor 200h, instruksi selanjutnya memerintahkan program Assembler agar mengisi memori-program nomor 200h dan berikutnya dengan tulisan ‘Belajar Mikrokontroler’ (yang diisikan adalah kode ASCII dari ‘B’, ‘e’ dan seterusnya)
  • 99. Assembler Directive DW – singkatan dari DEFINE WORD , dipakai untuk memberi nilai 2 byte ke memori-program pada baris bersangkutan. Assembler Directive ini biasa dipakai untuk membentuk suatu tabel yang isinya adalah nomor-nomor memori-program . DS – singkatan dari Define Storage , Assembler Directive ini dipakai untuk membentuk variable. Sebagai variabel tentu saja memori yang dipakai adalah memori-data (RAM) bukan memori-program (ROM). Jika Assembler Directive DB dan DW yang membentuk kode di memori-program . Dan karena DS bekerja di RAM, maka DS hanya sekedar menyediakan tempat di memori, tapi tidak mengisi nilai pada memori bersangkutan.
  • 100. Pemrograman Untuk Port Paralel Pada MCS51 Port paralel merupakan sarana utama sebuah chip Mikrokontroler, lewat sarana ini mikrokontroler mengeluarkan sinyal digital yang dipakai mengendalikan rangkaian-rangkaian di luar chip secara langsung. Chip mikrokontroler 8051/8031/8751/8951 mempunyai 40 kaki, 32 kaki diantaranya adalah kaki untuk keperluan port paralel. Satu port paralel terdiri dari 8 kaki, dengan demikian 32 kaki tersebut membentuk 4 buah port paralel, yang masing-masing dikenali sebagai Port 0, Port 1, Port 2 dan Port 3.
  • 101. Pemrograman Untuk Port Paralel Pada MCS51 Masing-masing jalur (kaki) dari port paralel di-nomor-i mulai dari 0 sampai 7, jalur (kaki) pertama Port 0 disebut sebagai P0.0, jalur terakhir Port 3 adalah P3.7. MCS51 mempunyai dua kelompok instruksi untuk mengeluarkan data ke port paralel: kelompok instruksi pertama bekerja pada port seutuhnya artinya 8 jalur dari port bersangkutan, misalnya MOV P1,#FFh membuat ke-delapan jalur port 0 sekaligus menjadi ‘1’.
  • 102. Pemrograman Untuk Port Paralel Pada MCS51 kelompok instruksi kedua hanya berpengaruh pada salah satu jalur dari port, misalnya SETB P3.4  P3.4  ’1’ atau CLR P3.3  P3.3  ‘0’. Selain itu port paralel bisa pula dipakai untuk menerima sinyal digital dari rangkaian di luar chip mikrokontroler: MOV A,P1 ;ambil sinyal digital pada semua jalur Port 1 dan menyimpannya di A
  • 103. Pemrograman Untuk Port Paralel Pada MCS51 ORG 0 JMP PROGRAM ORG 100H PROGRAM:MOV A,#0H ULANG: MOV P1,A CALL DELAY INC A JMP ULANG DELAY: MOV R0,#00H MOV R1,#00H ULANG1: INC R1 ULANG2: INC R0 CJNE R0,#0FFH,ULANG2 CJNE R1,#040H,ULANG1 RET
  • 104. Pemrograman Untuk Port Paralel Pada MCS51 ORG 000H JMP MULAI ORG 100H MULAI: MOV P1,#0FFH ULANG: JNB P1.0,ULANG MOV P1,#00H END
  • 105. Pemrograman Untuk Port Paralel Pada MCS51 ORG 000H JMP PROGRAM ORG 100H PROGRAM: MOV P1,#0FFh ULANG1: MOV C,P1.0 MOV P1.1,C JMP ULANG1 END
  • 106. Pemrograman Untuk Port Paralel Pada MCS51 ORG 000H JMP PROGRAM ORG 100H PROGRAM: MOV A,#01H ;A=00000001 ULANG: MOV P1,A ;P1=00000001 RL A ;A=00000010 dst CALL DELAY JMP ULANG DELAY: MOV R1,#00H ULANG1: INC R1 CJNE R1,#0FFH,ULANG1 RET END
  • 107.  
  • 108.  
  • 109.  
  • 110.  
  • 111.  
  • 112.  
  • 113.  
  • 114.  
  • 115.  
  • 116.  
  • 117.  
  • 118.  
  • 119.  
  • 120.  
  • 121.  
  • 122.  
  • 123.  
  • 124.  
  • 125. LECTURE 5 PEMROGRAMAN BAHASA ASSEMBLY UNTUK MIKROKONTROLER MCS51 (PART 3)
  • 126. 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 sebagai timer , 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 sebagai counter , kedudukan pencacah tersebut hanyalah menyatakan banyaknya pulsa yang sudah diterima pencacah.
  • 148. TIMER PADA MCS51
    • Untaian pencacah biner yang dipakai, bisa merupakan pencacah biner menaik ( count up binary counter ) atau pencacah 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 sebagai Timer 0 dan Timer 1 . Sedangkan untuk jenis yang lebih besar , misalnya 8952 dan 8052 mempunyai tambahan yaitu Timer 2 . Perangkat Timer/Counter tersebut merupakan perangkat keras yang menjadi satu dalam chip mikrokontroler MCS51, perangkat tersebut dikenal sebagai SFR ( Special Function Register ) yang berkedudukan sebagai memori-data internal .
  • 150. TIMER PADA MCS51 Pencacah biner untuk Timer 0 dibentuk dengan register TL0 ( Timer 0 Low Byte , memori-data internal alamat 6Ah) dan register TH0 ( Timer 0 High Byte , memori-data internal alamat 6Ch). Pencacah biner untuk Timer 1 dibentuk dengan register TL1 ( Timer 1 Low Byte , memori-data internal alamat 6Bh) dan register TH1 ( Timer 1 High Byte , memori-data internal alamat 6Dh).
  • 151. TIMER PADA MCS51
    • Pencacah biner pembentuk Timer/Counter MCS51 merupakan pencacah biner menaik ( count up binary counter ) yang mencacah dari 0000h sampai FFFFh
    • Saat kedudukan pencacah berubah dari FFFFh kembali ke 0000h akan timbul sinyal limpahan.
    • Untuk mengatur kerja Timer/Counter dipakai 2 register tambahan yang dipakai bersama oleh Timer 0 dan Timer 1.
    • Register tambahan tersebut adalah register TCON ( Timer Control Register , memori-data internal 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 perangkat Timer 0 dan Timer 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 2 Timer 0 dan Timer 1 masing-masing bekerja sendiri, artinya bisa dibuat Timer 0 bekerja pada Mode 1 dan Timer 1 bekerja pada Mode 2, atau kombinasi mode lainnya sesuai dengan keperluan.
    • Pada Mode 3 TL0, TH0, TL1 dan TH1 dipakai bersama-sama untuk menyusun sistem timer yang tidak bisa di-kombinasi lain.
  • 154. TIMER MODE 0 PADA MCS51 Susunan TL0, TH0, TL1 dan TH1 pada mode 0 adalah sebagai berikut: Pencacah biner dibentuk dengan TLx (TL0 atau TL1) sebagai pencacah biner 5 bit (meski kapasitas riil 8 bit), limpahan dari pencacah biner 5 bit ini dihubungkan ke THx (maksudnya bisa TH0 atau TH1)  membentuk sebuah untaian pencacah biner 13 bit, limpahan dari pencacah 13 bit ini ditampung di flip-flop TFx (TF0 atau TF1) yang berada di dalam register TCON.
  • 155. TIMER MODE 1 PADA MCS51 Susunan TL0, TH0, TL1 dan TH1 pada mode 1 adalah sebagai berikut: Mode ini sama dengan Mode 0, hanya saja register TLx dipakai sepenuhnya sebagai pencacah biner 8 bit  pencacah biner adalah 16 bit. Seiring dengan sinyal denyut, kedudukan pencacah biner 16 bit ini akan bergerak dari 0000h (biner 0000 0000 0000 0000), 0001h, 0002h … sampai FFFFh (biner 1111 1111 1111 1111), dan melimpah kembali menjadi 0000h.
  • 156. TIMER MODE 2 PADA MCS51 Mode 2 – Pencacah Biner 8 bit dengan Isi Ulang ( 8 bit Autoreload Binary Counter ) TLx dipakai sebagai pencacah biner 8 bit, sedangkan THx dipakai untuk menyimpan nilai yang diisikan ulang ke TLx, setiap kali kedudukan TLx melimpah (berubah dari FFh menjadi 00h). Dengan cara ini bisa didapatkan sinyal limpahan yang frekuensinya ditentukan oleh nilai yang disimpan dalam TH0.
  • 157. TIMER MODE 3 PADA MCS51 Pada Mode 3 TL0, TH0, TL1 dan TH1 dipakai untuk membentuk 3 untaian pencacah, yang pertama adalah untaian pencacah biner 16 bit tanpa fasilitas pemantau sinyal limpahan yang dibentuk dengan TL1 dan TH1. Yang kedua adalah TL0 yang dipakai sebagai pencacah biner 8 bit dengan TF0 pemantau limpahan. Pencacah biner ketiga adalah TH0 yang dipakai sebagai pencacah biner 8 bit dengan TF1 pemantau limpahan.
  • 158. Register Pengatur Timer Register TMOD dibagi menjadi 2 bagian secara simetris, bit 0 sampai 3 register TMOD (TMOD bit 0 .. TMOD bit 3) dipakai untuk mengatur Timer 0 , bit 4 sampai 7 register TMODE (TMOD bit 4 .. TMOD bit 7) dipakai untuk mengatur Timer1, pemakaiannya sebagai berikut : Register TMOD dan register TCON merupakan register pembantu untuk mengatur kerja Timer 0 dan Timer 1 , kedua register ini dipakai bersama oleh Timer 0 dan Timer 1 .
  • 159. Register Pengatur Timer
    • Bit M0/M1 dipakai untuk menentukan Mode Timer
    • 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
    • diperoleh dari kaki T0 (untuk Timer 0 ) atau kaki T1 (untuk Timer 1 ).
    • 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
  • 160. Register Pengatur Timer Register TCON dibagi menjadi 2 bagian, 4 bit pertama (bit 0 .. bit 3, bagian yang diarsir dalam Gambar 3b) dipakai untuk keperluan mengatur kaki INT0 dan INT1 Sisa 4 bit dari register TCON (bit 4..bit 7) dibagi menjadi 2 bagian secara simetris yang dipakai untuk mengatur Timer 0/Timer 1
  • 161. Register Pengatur Timer Bit TFx (maksudnya adalah TF0 atau TF1) merupakan bit penampung limpahan, TFx akan menjadi ‘ 1 ’ setiap kali pencacah biner yang terhubung padanya melimpah (pencacah berubah dari FFFFh kembali menjadi 0000h). Bit TFx di-nol-kan dengan istruksi CLR TF0 atau CLR TF1 . Jika sarana interupsi dari Timer 0 / Timer 1 dipakai, TRx di-nol-kan saat MCS51 menjalankan rutin layanan interupsi ( ISR – Interupt Service Routine ).
  • 162. Register Pengatur Timer Bit TRx (maksudnya adalah TR0 atau TR1) merupakan bit pengatur saluran sinyal denyut, bila bit ini = 0 sinyal denyut tidak disalurkan ke pencacah biner sehingga pencacah berhenti mencacah. Bila bit GATE pada register TMOD = 1 , maka saluran sinyal denyut ini diatur bersama oleh TRx dan sinyal pada kaki INT0 / INT1
  • 163. Register Pengatur Timer Setelah MCS51 di-reset register TMOD bernilai $00, hal ini berarti : • bit C/T* =’ 0 ’, menurut Gambar 4 keadaan ini membuat saklar S1 ke posisi atas, sumber sinyal denyut berasal dari osilator kristal yang frekuensinya sudah dibagi 12, pencacah biner yang dibentuk dengan TL1 dan TH1 berfungsi sebagai timer .
  • 164. Register Pengatur Timer Jika sistem yang dirancang memang menghendaki Timer 1 bekerja sebagai timer maka bit C/T * tidak perlu diatur lagi. Tapi jika sistem yang dirancang menghendaki agar Timer 1 bekerja sebagai counter untuk menghitung pulsa yang masuk lewat kakai T1 (P3.5 ), maka posisi saklar S1 harus dikebawahkan dengan membuat bit C/T* menjadi ‘ 1 ’.
  • 165. Register Pengatur Timer bit GATE =’ 0 ’, hal ini membuat output gerbang OR selalu ‘ 1 ’ tidak dipengaruhi keadaan ‘ 0 ’ atau ‘ 1 ’ pada kaki INT1 ( P3.3 ). Dalam keadaan semacam ini, saklar S2 hanya dikendalikan lewat bit TR1 dalam register TCON . Jika TR1 =’ 1 ’ saklar S2 tertutup sehingga sinyal denyut dari S1 disalurkan ke sistem pencacah biner, aliran sinyal denyut akan dihentikan jika TR = ’0’ .
  • 166. Register Pengatur Timer Sebaliknya jika bit GATE =’ 1 ’, output gerbang OR akan mengikuti keadaan kaki INT1 , saat INT1 =’ 0 ’ apa pun keadaan bit TR1 output gerbang AND selalu =’ 0 ’ dan saklar S1 selalu terbuka, agar saklar S1 bisa tertutup kaki INT1 dan bit TR1 harus =’ 1 ’ secara bersamaan. Jika sistem yang dirancang menghendaki kerja dari timer /counter dikendalikan dari sinyal yang berasal dari luar chip, maka bit GATE harus dibuat menjadi ‘ 1 ’
  • 167. Register Pengatur Timer Jika sistem yang dirancang menghendaki kerja dari timer/counter dikendalikan dari sinyal yang berasal dari luar chip, maka bit GATE harus dibuat menjadi ‘ 1 ’ bit M1 dan M0 =’ 0 ’, berarti TL1 dan TH1 disusun menjadi pencacah biner 13 bit (Mode 0), jika dikehendaki Timer 1 bekerja pada mode 1 maka bit M1 harus dibuat ‘ 0 ’ dan bit M0 ‘ 1’ .
  • 168. Register Pengatur Timer Pengetahuan di atas dipakai sebagai dasar untuk mengatur dan mengendalikan Timer seperti terlihat dalam contoh-contoh berikut : Setelah reset TMOD bernilai 00h , berarti Timer 1 bekerja sebagai pencacah biner 13 bit, sumber sinyal denyut dari osilator kristal atau Timer 1 bekerja sebagai ‘timer’, bit GATE =’ 0 ’ berarti kaki INT1 tidak berpengaruh pada rangkaian sehingga Timer 1 hanya dikendalikan dari bit TR1 . Dalam pemakaian biasanya dipakai pencacah biner 16 bit, untuk keperluan itu instruksi yang diperlukan untuk mengatur TMOD adalah : MOV TMOD,#00010000b
  • 169. Register Pengatur Timer Bilangan biner 00010000 diisikan ke TMOD , berakibat bit 7 TMOD (bit GATE ) bernilai ‘ 0 ’, bit 6 (bit C/T* ) bernilai ‘ 0 ’, bit 5 dan 4 (bit M1 dan M0 ) bernilai ‘ 01’ , ke-empat bit ini dipakai untuk mengatur Timer 1 , sehingga Timer 1 bekerja sebagai timer dengan pencacah biner 16 bit yang dikendalikan hanya dengan TR1 . Jika dikehendaki pencacah biner dipakai sebagai counter untuk mencacah jumlah pulsa yang masuk lewat kaki T1 ( P3.5 ), instruksinya menjadi : MOV TMOD,#01010000b
  • 170. Register Pengatur Timer Perbedaannya dengan instruksi di atas adalah dalam instruksi ini bit 6 (bit C/T* ) bernilai ‘ 1 ’. Selanjutnya jika diinginkan sinyal dari perangkat keras di luar chip MCS51 bisa ikut mengendalikan Timer 1 , instruksi pengatur Timer 1 akan menjadi : MOV TMOD,#11010000b Dalam hal ini bit 7 (bit GATE ) bernilai ‘ 1 ’. Setelah mengatur konfigurasi Timer 0 seperti di atas, pencacah biner belum mulai mencacah sebelum diperintah dengan instruksi : SETB TR1 Jika bit GATE = ‘ 1 ’, selama kaki INT1 bernilai ‘ 0 ’ pencacah biner belum akan mencacah. Untuk menghentikan proses pencacahan, dipakai instruksi CLR TR1
  • 171. Register Pengatur Timer
    • 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 .
    • 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.
    • Bit penampung limpahan pencacah biner TF0 dan TF1 , juga terletak dalam register TCON yang 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 kaki P1.0 CLR P1.0 NOP ; 1 mikro-detik NOP ; 1 mikro-detik SETB P1.0 ; 1 mikro-detik Instruksi baris pertama membuat P1.0 yang mula-mula ‘ 1 ’ menjadi ‘ 0 ’,pelaksanaan instruksi NOP memerlukan waktu 1 mikro-detik ,instruksi SETB P1.0 juga memerlukan waktu 1 mikrodetik, total waktu sebelum P1.0 kembali menjadi ‘ 1 ’ adalah 3 mikro-detik
  • 174. Aplikasi Timer Dengan sedikit perubahan instruksi-instruksi di atas bisa membangkitkan sinyal dengan frekuensi 100 KHz pada kaki P1.0 : Sinyal100KHz: CPL P1.0 ; 1 mikro-detik NOP ; 1 mikro-detik NOP ; 1 mikro-detik SJMP Sinyal100KHz ; 2 mikro-detik Instruksi CPL P1.0 pada baris 1 membalik keadaan pada P1.0 , bila mula-mula P1.0 bernilai ‘ 1 ’ akan dirubah menjadi ‘ 0 ’, sebaliknya bila mula-mula ‘ 0 ’ akan dirubah menjadi ‘ 1 ’. Total waktu tunda ke-empat baris di atas adalah 5 mikro-detik, sehingga yang terjadi adalah P1.0 bernilai ‘ 0 ’ selama 5 mikro-detik dan bernilai ‘ 1 ’ selama 5 mikro-detik berulang terus tanpa henti, dengan frekuensi sebesar 1/10 mikro-detik = 100.000 Hertz.
  • 175. Aplikasi Timer Program di atas bisa pula dibuat dengan memakai Timer 1 sebagai pengatur waktu tunda sebagai berikut : MOV TMOD,#00100000b ; Timer 1 bekerja pada Mode 2 MOV TH1,#0F6h ; Nilai pengisi ulang TL1 SETB TR1 ; Timer 1 mulai mencacah Ulangi: JNB TF1,$ ; Tunggu sampai melimpah CPL P1.0 ; Keadaan pada P1.0 di-balik CLR TF1 ; Hapus limpahan pencacah SJMP Ulangi ; Ulangi terus tiada henti… Instruksi baris pertama mempersiapkan Timer 0 bekerja pada Mode 2 – Pencacah Biner 8 bit dengan Isi Ulang, bilangan pengisi ulang ditentukan sebesar F0h yang disimpan ke register TH1 pada baris 2, instruksi berikutnya memerintahkan pencacah biner mulai mencacah.
  • 176. Aplikasi Timer Pencacah biner yang dibentuk dengan register TL1 akan mencacah naik seirama dengan siklus sinyal denyut, mulai dari F6h sampai FFh , saat pencacah melimpah dari FFh ke 00h bit TR1 pada register TCON akan menjadi ‘ 1 ’ dan TL1 secara otomatis di isi ulang dengan bilangan F0h yang tersimpan pada register TH0 . Hal ini akan terjadi terus menerus dan berulang setiap 10 siklus sinyal denyut ( F6h , F7h , F8h , F9h , FAh , FBh , FCh , FDh , FEh , FFh kembali ke 00h , total 10siklus)
  • 177. Aplikasi Timer Instruksi JNB TR1,$ menunggu bit TR1 menjadi ‘ 1 ’, yakni saat pencacah biner melimpah dari FFh ke 00h yang dibahas di atas. Lepas dari penantian tersebut, P1.0 dibalik keadaanya dengan instruksi CPL P1.0 , TR1 dikembalikan menjadi 0 (harus dikembalikan sendiri dengan instruksi ini), agar bisa ditunggu lagi sampai menjadi ‘ 1 ’ kembali setelah instruksi SJMP Ulangi . Frekuensi dari sinyal di P1.0 sebesar 1 / 16 mikro-detik = 31,25 KHz.
  • 178. Aplikasi Timer Contoh Penggunaan dalam subrutin MOV TMOD,#01H … … CALL DELAY … … … DELAY: MOV TH0,#HIGH (-50000) ;SEKITAR 50000 MIKROSEKON MOV TL0,#LOW (-50000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET
  • 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
    • Synchronous serial adalah komunikasi dimana hanya ada satu pihak (pengirim atau penerima) yang menghasilkan clock dan mengirimkan clock tersebut bersama-sama dengan data.
    • Contoh pengunaan synchronous serial terdapat pada transmisi data keyboard.
  • 183. STANDART SERIAL INTERFACE
    • Asynchronous serial adalah komunikasi dimana kedua pihak (pengirim dan penerima) masing-masing menghasilkan clock namun hanya data yang ditransmisikan, tanpa clock.
    • 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 frekuensi clock pengirim dan penerima akan membaca data sesuai dengan frekuensi clock penerima.
    • Contoh penggunaan asynchronous serial adalah pada Universal Asynchronous Receiver 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 - REN REN harus diberi nilai ‘1’ untuk mengaktifkan penerimaan data. Jika REN diberi nilai ‘0’, maka tidak akan ada penerimaan data. - TB8 TB8 adalah bit ke-9 yang dikirimkan dalam mode 2 atau 3. Nilai bit ini diatur oleh program user. - RB8 RB8 adalah bit ke-9 yang diterima dalam mode 2 atau 3. Pada mode 1, RB8 adalah stop bit yang diterima. Pada mode 0, RB8 tidak digunakan.
  • 189. 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 nilai register SBUF.
    • Sedangkan pada saat penerimaan, data yang diterima akan disimpan pada register SBUF.
  • 190. MODE OPERASI
    • Mode 0 adalah 8-bit shift register dimana data dikirimkan dan diterima melalui pin RXD sedangkan clock dikirimkan dan diterima melalui pin TXD.
    • Pengiriman data 8 bit dilakukan dengan mengirimkan Least Significant Bit (LSB) terlebih dahulu.
    • Pada mode 0, baud rate yang digunakan adalah sebesar 1/12 dari frekuensi osilator.
  • 191. MODE OPERASI
    • Pada mode 1, jumlah data yang dikirimkan sebanyak 10 bit yang terdiri dari start bit, 8 bit data (LSB terlebih dahulu), dan stop bit.
    • Pada proses penerimaan, nilai stop 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, nilai bit ke-9 dapat diatur dengan mengisi nilai TB8.
    • Pada proses penerimaan, bit ke-9 akan dimasukkan ke RB8 secara otomatis.
    • Pada mode 2, baud rate yang dapat digunakan adalah 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 rate yang digunakan.
    • Jika mode 2 menggunakan baud rate yang 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.
    • Satuan baud rate pada 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 Sedangkan baud rate untuk mode 2 memiliki 2 variasi tergantung dari kondisi SMOD.
  • 196. BAUD RATE Baud rate untuk mode 1 dan 3 dihasilkan oleh Timer 1. Pengaturan baudrate untuk mode 1 dan 3 dapat dilakukan dengan cara mengubah nilai SMOD,TMOD, dan TH1. Umumnya Timer 1 dioperasikan pada mode 2 (8-bit Auto Reload)
  • 197. 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 mendapatkan baud rate yang lambat, user dapat mengoperasikan Timer 1 pada mode 1 dengan rumus
  • 200. INISIALISASI SERIAL Proses inisialisasi bertujuan untuk menentukan mode komunikasi serial dan baud rate yang digunakan. Register yang harus diatur terlebih dahulu meliputi: 1. SCON Langkah pertama adalah menentukan mode yang akan digunakan (mode 0, 1, 2, atau 3), kemampuan menerima data, dan nilai bit ke-9. Misalnya mode yang digunakan adalah mode 1 dengan kemampuan menerima data namun tanpa komunikasi multiprosesor, maka instruksinya adalah sebagai berikut: MOV SCON, #01010000b atau MOV SCON, #50h atau SETB SM1 SETB REN
  • 201. INISIALISASI SERIAL 2. TMOD, TH1 dan/atau TL1, PCON, dan TCON Jika komunikasi serial digunakan dalam mode 1 atau 3, maka langkah berikutnya adalah menentukan baud rate. Misalnya Timer/Counter 1 digunakan sebagai timer dalam mode 2 untuk membangkitkan baud rate 19200 bps, maka instruksinya adalah sebagai berikut: MOV TMOD, #00100000b MOV TH1, #0FDh MOV PCON, #10000000b MOV TCON, #01000000b atau MOV TMOD, #20h MOV TH1, #0FDh MOV PCON, #80h MOV TCON, #40h atau MOV TMOD, #20h MOV TH1, #0FDh MOV PCON, #80h SETB TR1
  • 202. INISIALISASI SERIAL 3. IE dan/atau IP Jika komunikasi serial yang diprogram akan digunakan sebagai sumber interrupt, maka IE dan/atau IP juga harus diatur. Misalnya komunikasi serial digunakan sebagai sumber interrupt dengan prioritas tinggi, maka instruksinya adalah sebagai berikut: MOV IP, #00010000b MOV IE, #10010000b atau MOV IP, #10h MOV IE, #90h atau SETB PS SETB ES SETB EA
  • 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 kaki INT0 dan INT1
    • Interupsi Timer ( Timer Interrupt ) yang berasal dari Timer 0 maupun Timer 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 Timer 2 bersumber dari Timer 2 yang memang tidak ada pada AT89C51.
  • 215. SUMBER INTERUPSI MCS51
    • Bit IE0 (atau bit IE1 ) dalam TCON merupakan 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 kaki INT0 (atau INT1 ), yang kedua karena terjadi transisi sinyal ‘ 1 ’ menjadi ‘ 0 ’ pada kaki INT0 (atau INT1 ).
    • Pilihan bentuk sinyal ini ditentukan lewat bit IT0 (atau bit IT1 ) yang terdapat dalam register TCON .
  • 216. SUMBER INTERUPSI MCS51 Kalau bit IT0 (atau IT1 ) =’ 0 ’ maka bit IE0 (atau IE1 ) dalam TCON menjadi ‘ 1 ’ saat kaki INT0 =’ 0 ’. Kalau bit IT0 (atau IT1 ) =’ 1 ’ maka bit IE0 (atau IE1 ) dalam TCON menjadi ‘ 1 ’ saat terjadi transisi sinyal ‘ 1 ’ menjadi ‘ 0 ’ pada kaki INT0 .
  • 217. SUMBER INTERUPSI MCS51 Menjelang prosesor menjalankan ISR dari Interupsi Eksternal, bit IE0 (atau bit IE1 ) dikembalikan menjadi ‘ 0 ’, menandakan permintaan Interupsi Eksternal sudah dilayani. Namun jika permintaan Interupsi Ekternal terjadi karena level tegangan ‘ 0 ’ pada kaki IT0 (atau IT1 ), dan level tegangan pada kaki tersebut saat itu masih =’ 0 ’ maka bit IE0 (atau bit IE1 ) akan segera menjadi ‘ 1 ’ lagi!
  • 218. SUMBER INTERUPSI MCS51 Bit TF0 (atau bit TF1 ) dalam TCON merupakan petanda (flag) yang menandakan adanya permintaan Interupsi Timer, bit TF0 (atau bit TF1 ) menjadi ‘ 1 ’ pada saat terjadi limpahan pada pencacah biner Timer 0 (atau Timer 1). Menjelang prosesor menjalankan ISR dari Interupsi Timer, bit TF0 (atau bit TF1 ) dikembalikan menjadi ‘ 0 ’, menandakan permintaan Interupsi Timer sudah dilayani.
  • 219. SUMBER INTERUPSI MCS51 Interupsi port seri terjadi karena dua hal, yang pertama terjadi setelah port seri selesai mengirim data 1 byte, permintaan interupsi semacam ini ditandai dengan petanda (flag) TI =’ 1 ’. Yang kedua terjadi saat port seri telah menerima data 1 byte secara lengkap, permintaan interupsi semacam ini ditandai dengan petanda (flag) RI =’ 1 ’.
  • 220. SUMBER INTERUPSI MCS51 Petanda di atas tidak dikembalikan menjadi ‘ 0’ menjelang prosesor menjalankan ISR dari Interupsi port seri, karena petanda tersebut masih diperlukan ISR untuk menentukan sumber interupsi berasal dari TI atau RI . Agar port seri bisa dipakai kembali setelah mengirim atau menerima data, petanda-petanda tadi harus di-nol-kan lewat program.
  • 221. SUMBER INTERUPSI MCS51 Petanda permintaan interupsi ( IE0 , TF0 , IE1 , TF1 , RI dan TI ) semuanya bisa di-nol-kan atau di-satu-kan lewat instruksi, pengaruhnya sama persis kalau perubahan itu dilakukan oleh perangkat keras. Artinya permintaan interupsi bisadiajukan lewat pemrograman, misalnya permintaan interupsi eksternal IT0 bisa diajukan dengan instruksi SETB IE0 .
  • 222. Mengaktifkan Interupsi Semua sumber permintaan interupsi yang di bahas di atas, masing-masing bisa di-aktif-kan atau di-nonaktif-kan secara tersendiri lewat bit-bit yang ada dalam register IE ( Interrupt Enable Register ). Bit EX0 dan EX1 untuk mengatur interupsi eksternal INT0 dan INT1 , bit ET0 dan ET1 untuk mengatur interupsi timer 0 dan timer 1, bit ES untuk mengatur interupsi port seri. Disamping itu ada pula bit EA yang bisa dipakai untuk mengatur semua sumber interupsi sekaligus.
  • 223. Mengaktifkan Interupsi Setelah reset, semua bit dalam register IE bernilai ‘ 0 ’, artinya sistem interupsi dalam keadaan non-aktip. Untuk mengaktipkan salah satu sistem interupsi, bit pengatur interupsi bersangkutan diaktipkan dan juga EA yang mengatur semua sumber interupsi. Misalnya instruksi yang dipakai untuk mengaktipkan interupsi ekternal INT0 adalah SETB EX0 disusul dengan SETB EA .
  • 224. Vektor Interupsi Saat MCS51 menanggapi permintaan interupsi  Program Counter diisi dengan sebuah nilai yang dinamakan sebagai vektor interupsi  yang merupakan nomor awal dari memori-program yang menampung ISR untuk melayani permintaan interupsi tersebut. Vektor interupsi itu dipakai untuk melaksanakan instruksi LCALL yang diaktipkan secara perangkat keras.
  • 225. Vektor Interupsi Vektor interupsi untuk interupsi eksternal INT0 adalah 0003h , untuk interupsi timer 0 adalah 000Bh Interupsi ekternal INT1 adalah 0013h Interupsi timer 1 adalah 001Bh dan untuk interupsi port seri adalah 0023h . Jarak vektor interupsi satu dengan lainnya sebesar 8, atau hanya tersedia 8 byte untuk setiap ISR . Jika sebuah ISR memang hanya pendek saja, tidak lebih dari 8 byte, maka ISR tersebut bisa langsung ditulis pada memori-program yang disediakan untuknya. ISR yang lebih panjang dari 8 byte ditulis ditempat lain, tapi pada memori-program yang ditunjuk oleh vektor interupsi diisikan instruksi JUMP ke arah ISR bersangkutan.
  • 226. LECTURE 9 INTERFACING DENGAN LCD KARAKTER
  • 227. INTERFACING DENGAN LCD KARAKTER
  • 228. INTERFACING DENGAN LCD KARAKTER RS=P1.0 RW=P1.1 E=P1.2 DB7=P2.7 DB6=P2.6 DB5=P2.5 DB4=P2.4
  • 229. INTERFACING DENGAN LCD KARAKTER Inisialisasi dan file pendukung LCD : hd44780.asm bagian variabel rs bit p1.0 rw bit p1.1 e bit p1.2 rkursor equ 14h lkursor equ 10h rdisplay equ 1fh ldisplay equ 18h homelcd equ 02h barisdua equ 0c0h display_clear equ 01h display_off equ 08h cursor_on equ 0eh cursor_off equ 0ch blink_on equ 0fh blink_off equ 0eh set4bit equ 28h set8bit equ 38h
  • 230. INTERFACING DENGAN LCD KARAKTER DELAY1S: mov r0,#100 ss: call delay5ms djnz r0,ss RET delay5ms: MOV TMOD,#01H MOV TH0,#HIGH(-5000) MOV TL0,#LOW(-5000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET
  • 231. INTERFACING DENGAN LCD KARAKTER baris2_lcd: mov a,#barisdua call kirim_perintah ret baris1_lcd: mov a,#homelcd call kirim_perintah ret
  • 232. INTERFACING DENGAN LCD KARAKTER geser_display_kanan: mov a,#rdisplay call kirim_perintah ret geser_display_kiri: mov a,#ldisplay call kirim_perintah ret geser_kursor_kiri: mov a,#lkursor call kirim_perintah ret geser_kursor_kanan: mov a,#rkursor call kirim_perintah ret
  • 233. INTERFACING DENGAN LCD KARAKTER baca_register: mov p2,#0ffh ;jadikan p2 sebagai input setb rw clr rs setb e mov a,p2 anl a,#0f0h clr e push acc setb e mov a,p2 anl a,#0f0h clr e swap a pop b add a,b clr rw ret
  • 234. INTERFACING DENGAN LCD KARAKTER periksa_busy: call baca_register jb acc.7,periksa_busy ret kirim_data_lcd: setb e mov p2,a clr e ret kirim_karakter: clr rw setb rs call kirim_data_lcd swap a call kirim_data_lcd call periksa_busy ret
  • 235. INTERFACING DENGAN LCD KARAKTER kirim_perintah: clr rw clr rs call kirim_data_lcd ;4bit sebanyak 2kali swap a call kirim_data_lcd call periksa_busy ret
  • 236. INTERFACING DENGAN LCD KARAKTER init_lcd: setb rs clr e call delay5ms call delay5ms call delay5ms call delay5ms mov a,#30h ;d7='0',d6='0',d5='1',d4='1' call kirim_perintah call delay50us call delay50us mov a,#30h call kirim_perintah mov a,#20h ;send init call kirim_perintah mov a,#28h ;8x5, 2lines d5='0'-->4bit;d3='1'-->2baris,d2='0'-->5x8 call kirim_perintah mov a,#08h ;display off call kirim_perintah mov a,#01h ;display clear call kirim_perintah mov a,#0eh ;display on call kirim_perintah mov a,#06h ;mode increment address call kirim_perintah ret
  • 237. INTERFACING DENGAN LCD KARAKTER hapus_layar: mov a,#01h call kirim_perintah ret data_lcd data p2 ;set4bit posisi msb kursor_on: mov a,#cursor_on call kirim_perintah ret kursor_off: mov a,#cursor_off call kirim_perintah ret
  • 238. INTERFACING DENGAN LCD KARAKTER posisi_awal_lcd: mov a,#02h ;set ke posisi paling awal call kirim_perintah ret kirim_pesan_lcd: loop_kirim_pesan_lcd: mov a,#0 ;ambil data dr memori yang ditunjuk movc a,@a+dptr cjne a,#0fh,kirim_lcd ;kirim ke lcd selama belum ;ditemukan 0fh ret kirim_lcd: call kirim_karakter inc dptr ;tunjuk ke memori selanjutnya jmp loop_kirim_pesan_lcd
  • 239. INTERFACING DENGAN LCD KARAKTER kirim_pesan_lcd_with_delay: loop_kirim_pesan_lcd_with_delay: mov a,#0 ;ambil data dr memori yang ditunjuk movc a,@a+dptr cjne a,#0fh,kirim_lcd_with_delay ;kirim ke lcd selama belum ditemukan 0fh ret kirim_lcd_with_delay: call kirim_karakter inc dptr ;tunjuk ke memori selanjutnya call delay1s jmp loop_kirim_pesan_lcd_with_delay
  • 240. INTERFACING DENGAN LCD KARAKTER ;Contoh Program sederhana menampilkan karakter dan grafis ;Tabel karakter dan file library lcd hd44780 pesanlcd1: db 'Deddy Susilo, ST',0fh pesanlcd2: db '-- NIP: 61546 --',0fh pesanlcd3: db ' Please Wait... ',0fh pesanlcd4: db '# SWITCH.COM #',0fh pesanlcd5: db '@@-FTEK UKSW-@@',0fh heart: db 0,10,31,31,14,4,0,0,0fh oke: db 4,0,0eh,0,1fh,0,1fh,0,0fh $include (hd44780.asm)
  • 241. INTERFACING DENGAN LCD KARAKTER POLA: mov r1,#40h mov r2,#0 loop: mov a,r1 call kirim_perintah mov dptr,#heart mov a,r2 movc a,@a+dptr inc r2 inc r1 cjne a,#0fh,kirim_lcd_grafik mov a,#02h call kirim_perintah mov a,#0 call kirim_karakter call delay1s jmp exit kirim_lcd_grafik: call kirim_karakter jmp loop exit: ret
  • 242. INTERFACING DENGAN LCD KARAKTER call init_lcd mov dptr,#pesanlcd1 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd2 call kirim_pesan_lcd call delay1s call delay1s call delay1s call hapus_layar mov dptr,#pesanlcd3 call kirim_pesan_lcd_with_delay call delay1s
  • 243. INTERFACING DENGAN LCD KARAKTER call hapus_layar call baris2_lcd call kursor_off mov dptr,#pesanlcd4 call kirim_pesan_lcd call delay1s call hapus_layar call delay1s call baris1_lcd mov dptr,#pesanlcd4 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd5 call kirim_pesan_lcd call delay1s call delay1s call hapus_layar call delay1s call pola
  • 244. INTERFACING DENGAN LCD KARAKTER call init_lcd mov dptr,#pesanlcd1 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd2 call kirim_pesan_lcd call delay1s call delay1s call delay1s
  • 245. INTERFACING DENGAN LCD KARAKTER call hapus_layar mov dptr,#pesanlcd3 call kirim_pesan_lcd_with_delay call delay1s
  • 246. INTERFACING DENGAN LCD KARAKTER call hapus_layar call baris2_lcd call kursor_off mov dptr,#pesanlcd4 call kirim_pesan_lcd call delay1s
  • 247. INTERFACING DENGAN LCD KARAKTER call hapus_layar call delay1s call baris1_lcd mov dptr,#pesanlcd4 call kirim_pesan_lcd call baris2_lcd mov dptr,#pesanlcd5 call kirim_pesan_lcd call delay1s call delay1s
  • 248. INTERFACING DENGAN LCD KARAKTER call hapus_layar call delay1s call pola
  • 249. LECTURE 10 INTERFACING DENGAN LCD GRAFIK
  • 250. Koneksi LCD dengan Mikrokontroler
  • 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 nd edition, 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 a transduction 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-<anything>
  • 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 some a priori knowledge about the environment
    • Tricky
  • 290. Classification of Sensors
    • 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 und N avigation a nd R 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 dio D etection a nd R anging
      • Microwave radar: insensitive to clouds
    • Coherent light
      • all photons have same phase and wavelength
      • LASER: L ight A mplification by S timulated E mission of R 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 Resistive Tilt Sensors CDS Cell Resistive Light Sensor Hall Effect Magnetic Field Sensors Compass IRDA Transceiver IR Amplifier Sensor IR Modulator Receiver Lite-On IR Remote Receiver Radio Shack Remote Receiver IR Sensor w/lens Gyro Accelerometer IR Reflection Sensor IR Pin Diode UV Detector Metal Detector
  • 302. 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 35k
    • As the strip is bent, resistance increases
    • Potentiometers
    • Can be used as position sensors for sliding mechanisms or rotating shafts
    • Easy to find, easy to mount
    • Light Sensor (Photocell)
    • Good for detecting direction/presence of light
    • Non-linear resistance
    • Slow response to light changes
    Resistive Sensors Resistive Bend Sensor Photocell Potentiometer R is small when brightly illuminated
  • 304. Applications Sensor
    • Measure bend of a joint
    • Wall Following/Collision Detection
    • Weight Sensor
    Sensors Sensor
  • 305. Inputs for Resistive Sensors Voltage divider: You have two resisters, one is fixed and the other varies, as well as a constant voltage V micro R1 R2 Vsense Comparator: If voltage at + is greater than at -, digital high out A/D converter Digital I/O + - Binary Threshold V
  • 306. Infrared Sensors
    • Intensity based infrared
      • Reflective sensors
      • Easy to implement
      • susceptible to ambient light
    • Modulated Infrared
      • Proximity sensors
      • Requires modulated IR signal
      • Insensitive to ambient light
    • Infrared Ranging
      • Distance sensors
      • Short range distance measurement
      • Impervious to ambient light, color and reflectivity of object
  • 307. Intensity Based Infrared
    • Easy to implement (few components)
    • Works very well in controlled environments
    • Sensitive to ambient light
    time voltage time voltage Increase in ambient light raises DC bias Break-Beam sensor Reflective Sensor
  • 308. IR Reflective Sensors
    • Reflective Sensor:
      • Emitter IR LED + detector photodiode/phototransistor
      • Phototransistor: the more light reaching the phototransistor, the more current passes through it
      • A beam of light is reflected off a surface and into a detector
      • Light usually in infrared spectrum, IR light is invisible
    • Applications:
      • Object detection,
      • Line following, Wall tracking
      • Optical encoder (Break-Beam sensor)
    • Drawbacks:
      • Susceptible to ambient lighting
        • Provide sheath to insulate the device from outside lighting
      • Susceptible to reflectivity of objects
      • Susceptible to the distance between sensor and the object
  • 309. Modulated Infrared
    • Modulation and Demodulation
      • Flashing a light source at a particular frequency
      • Demodulator is tuned to the specific frequency of light flashes. (32kHz~45kHz)
      • Flashes of light can be detected even if they are very week
      • Less susceptible to ambient lighting and reflectivity of objects
      • Used in most IR remote control units, proximity sensors
    Negative true logic: Detect = 0v No detect = 5v
  • 310. IR Proximity Sensors
    • Proximity Sensors:
      • Requires a modulated IR LED, a detector module with built-in modulation decoder
      • Current through the IR LED should be limited: adding a series resistor in LED driver circuit
      • Detection range: varies with different objects (shiny white card vs. dull black object)
      • Insensitive to ambient light
    • Applications:
      • Rough distance measurement
      • Obstacle avoidance
      • Wall following, line following
    limiter demodulator bandpass filter amplifier comparator integrator
  • 311. IR Distance Sensors
    • Basic principle of operation:
      • IR emitter + focusing lens + position-sensitive detector
    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
  • 312. IR Distance Sensors
    • Sharp GP2D02 IR Ranger
      • Distance range: 10cm (4&quot;) ~ 80cm (30&quot;). 
      • Moderately reliable for distance measurement
      • Immune to ambient light
      • Impervious to color and reflectivity of object
      • Applications: distance measurement, wall following, …
  • 313. Basic Navigation Techniques
    • • Relative Positioning (called Dead-reckoning )
    • – Information required: incremental (internal)
        • Velocity
        • heading
    • – With this technique the position can be updated with respect to a starting point
    • – Problems: unbounded accumulation error
    • • Absolute Positioning
    • – Information Required: absolute (external)
    • – Absolute references (wall, corner, landmark)
    • – Methods
        • Magnetic Compasses (absolute heading, earth’s magnetic field)
        • Active Beacons
        • Global Positioning Systems (GPS)
        • Landmark Navigation (absolute references: wall, corner, artificial landmark)
        • Map-based positioning
  • 314. Dead Reckoning Cause of unbounded accumulation error:
    • Systematic Errors:
    • Unequal wheel diameters
    • Average of both wheel diameters differs from nominal diameter
    • Misalignment of wheels
    • Limited encoder resolution, sampling rate, …
    • Nonsystematic Errors:
    • Travel over uneven floors
    • Travel over unexpected objects on the floor
    • Wheel-slippage due to : slippery floors; over-acceleration, fast turning (skidding), non-point wheel contact with the floor
  • 315. Sensors used in navigation
    • Dead Reckoning
      • Odometry (monitoring the wheel revolution to compute the offset from a known starting position)
        • Encoders,
        • Potentiometer,
        • Tachometer, …
    • – Inertial Sensors (measure the second derivative of position)
        • Gyroscopes,
        • Accelerometer, …
    • External Sensors
      • Compass
      • Ultrasonic
      • Laser range sensors
      • Radar
      • Vision
      • Global Positioning System (GPS)
  • 316. Robotics Sensor and Aktuator Example
  • 317. Incremental Optical Encoders
    • Relative position
    - calibration ? - direction ? - resolution ? grating light emitter light sensor decode circuitry
  • 318. Quiz 2: How could you augment a grating-based (relative) encoder in order to detect the direction of rotation? light emitter/detector Quiz 1: If there are 100 lines in the grating, what is the smallest detectable change in motor-shaft angle? Incremental Optical Encoders
  • 319.
    • Relative position
    grating light emitter light sensor decode circuitry A B A B A leads B - calibration ? - direction ? - resolution ? Incremental Optical Encoders
  • 320. Incremental Optical Encoders - direction - resolution grating light emitter light sensor Decode circuitry
      • Incremental Encoder:
    • It generates pulses proportional to the rotation speed of the shaft.
    • • Direction can also be indicated with a two phase encoder:
    A B A leads B
  • 321. Incremental Optical Encoders
      • Incremental Encoder:
    Encoder pulse and motor direction A B A leads B
  • 322. Absolute Optical Encoders Gray Code
    • Used when loss of reference is not possible.
    • Gray codes: only one bit changes at a time ( less uncertainty).
    • • The information is transferred in parallel form (many wires are necessary).
    000 001 011 010 110 111 101 100 000 001 010 011 100 101 110 111 Binary
  • 323. Other Odometry Sensors
    • Resolver
    • Potentiometer
    • = varying resistance
    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
  • 324. Range Finder (Ultrasonic, Laser)
  • 325. Range Finder
    • Time of Flight
    • The measured pulses typically come form ultrasonic, RF and optical energy sources.
      • D = v * t
      • D = round-trip distance
      • v = speed of wave propagation
      • t = elapsed time
    • Sound = 0.3 meters/msec
    • RF/light = 0.3 meters / ns (Very difficult to measure short distances 1-100 meters)
  • 326. Ultrasonic Sensors
    • Basic principle of operation:
      • Emit a quick burst of ultrasound (50kHz), (human hearing: 20Hz to 20kHz)
      • Measure the elapsed time until the receiver indicates that an echo is detected.
      • Determine how far away the nearest object is from the sensor
      • D = v * t
      • D = round-trip distance
      • v = speed of propagation (340 m/s)
      • t = elapsed time
    Bat, dolphin, …
  • 327. Ultrasonic Sensors
    • Ranging is accurate but bearing has a 30 degree uncertainty. The object can be located anywhere in the arc.
    • Typical ranges are of the order of several centimeters to 30 meters.
    • Another problem is the propagation time. The ultrasonic signal will take 200 msec to travel 60 meters. ( 30 meters roundtrip @ 340 m/s )
  • 328. Polaroid Ultrasonic Sensors Ultrasonic transducer Electronic board
    • Transducer Ringing:
      • transmitter + receiver @ 50 KHz
      • Residual vibrations or ringing may be interpreted as the echo signal
      • Blanking signal to block any return signals for the first 2.38ms after transmission
    http://www.acroname.com/robotics/info/articles/sonar/sonar.html
      • It was developed for an automatic camera focusing system
      • Range: 6 inches to 35 feet
  • 329. Operation with Polaroid Ultrasonic
    • The Electronic board supplied has the following I/0
      • INIT : trigger the sensor, ( 16 pulses are transmitted )
      • BLANKING : goes high to avoid detection of own signal
      • ECHO : echo was detected.
      • BINH : goes high to end the blanking (reduce blanking time < 2.38 ms)
      • BLNK : to be generated if multiple echo is required
    t
  • 330. Ultrasonic Sensors
    • Applications:
      • Distance Measurement
      • Mapping: Rotating proximity scans (maps the proximity of objects surrounding the robot)
    Scanning at an angle of 15 º apart can achieve best results
  • 331. Noise Issues
  • 332. Laser Ranger Finder
    • Range 2-500 meters
    • Resolution : 10 mm
    • Field of view : 100 - 180 degrees
    • Angular resolution : 0.25 degrees
    • Scan time : 13 - 40 msec.
    • These lasers are more immune to Dust and Fog
    http://www.sick.de/de/products/categories/safety/
  • 333. Inertial Sensors
    • Gyroscopes
      • Measure the rate of rotation independent of the coordinate frame
      • Common applications:
        • Heading sensors, Full Inertial Navigation systems (INS)
    • Accelerometers
      • Measure accelerations with respect to an inertial frame
      • Common applications:
        • Tilt sensor in static applications, Vibration Analysis, Full INS Systems
  • 334. Accelerometers
    • They measure the inertia force generated when a mass is affected by a change in velocity.
    • This force may change
      • The tension of a string
      • The deflection of a beam
      • The vibrating frequency of a mass
  • 335. Accelerometer
    • Main elements of an accelerometer:
    • Mass 2. Suspension mechanism 3. Sensing element
    • High quality accelerometers include a servo loop to improve the linearity of the sensor.
  • 336. Gyroscopes
    • These devices return a signal proportional to the rotational velocity.
    • There is a large variety of gyroscopes that are based on different principles
  • 337. Global Positioning System (GPS) http://www.cnde.iastate.edu/staff/swormley/gps/gps.html
    • 24 satellites (+several spares)
    • b roadcast time, identity, orbital parameters (latitude, longitude, altitude)
  • 338. Noise Issues
    • Real sensors are noisy
    • Origins: natural phenomena + less-than-ideal engineering
    • Consequences: limited accuracy and precision of measurements
    • Filtering:
      • software: averaging, signal processing algorithm
      • hardware tricky: capacitor
  • 339.  
  • 340. Contoh Stasiun Cuaca di Badan Meteorologi dan Geofisika yang bisa diautomatisasi dengan Pemrograman Mikrokontroler LECTURE 13
  • 341. STASIUN KLIMATOLOGI Adalah unit pelaksana teknis BMG Tugas : a. Melaksanakan pengamatan klimatologi b. Pengumpulan dan penyebaran data c. Penganalisaan dan prakiraan di wilayahnya. d. Pelayanan jasa klimatologi dan kualitas udara e. Pengamatan Meterorologi pertanian.
  • 342. Taman Alat Gbr1.Taman alat Klimatologi
    • Tempat / sebidang Tanah datar untuk meletakkan alat-alat Klimatologi.
    • Syaratnya : sudut pandangan 45 o berumput pendek, kanan-kiri tdk boleh ada bangunan/pohon yg tinggi.
    • Diberi pagar, supaya terhindar
    • dari gangguan binatang dll.
    • Letaknya sebaiknya dekat dgn
    • pertanian.
  • 343. Aktinograph Bimetal
    • Alat pengukur/pencatat secara automatis Intensitas Radiasi Matahari.
    • Satuan K Cal/cm 2 (Langley).
    • Keterangan : Kertas pias diganti setiap hari.
    • setiap kotak kecil = 12 kalori, perhitungan total 1 hari dihitung jumlah kotak
    • kecil. Alat ini menggunakan sensor Bimetal.
    Gbr.4 Actinograf
  • 344. Campbel Stokes
    • Pencatat lama penyinaran
    • matahari
    • Satuan : Jam/ Prosentase ( % )
    • Pias harian.
    • Jenis pias 3 macam :
    • 1. Lengkung panjang
    • (11 Okt- 28 Feb)
    • 2. Lurus
    • (11 Sep – 10 Okt)
    • (1 Maret – 10 April)
    • 3. Lengkung pendek
    • (11 Aprl – 10 Agst)
    • Bola Kaca dari kaca Masip.
    Gbr.5 Cambelstock
  • 345. GUN BELLANI INTEGRATOR RADIATION
    • Pencatat Intensitas Cahaya
    • Matahari
    • Satuan : Calori/Cm2 (Langley).
    • Intensitas Cahaya Matahari =
    • Selisih pembacaan skala dikalikan
    • konstanta dibagi 21
    • Cara kerja alat : Sewaktu
    • memasang alat dipagi hari, alat
    • dibalik dan dikembalikan sehingga
    • permukaan air dalam tabung
    • mendekati nol. Air dlm alat
    • volumenya konstan dan bila kena
    • cahaya matahari akan menguap
    • dan berkondensasi shg air turun
    • kebawah.
  • 346. PSYCHROMETER STANDAR
    • Terdiri dari 4 buah thermometer
    • 1. Thermometer Bola Kering (BK)
    • Thermometer Bola Basah (BB)
    • Thermometer Maximum
    • Thermometer Minimum
    • Piche Evaporimeter
    • Fungsi alat Pengukur Suhu Udara dan
    • Kelembaban Udara
    • Satuan : Suhu Derajat Celcius
    • Kelembaban dalam Persen ( %).
    • * Thermometer BK menunjukan suhu
    • udara
    • * Thermometer BB digunakan mencara
    • kelembaban udara dengan bantuan
    • Table.
    • * Thermometer BB, bola air raksa harus
    • selalu basah dengan menggunakan
    • Kain muslin yang selalu basah oleh air
    • murni
  • 347. Barometer
    • Alat untuk mengukur takanan udara.
    • Satuan Milibar (mb).
    • Tabung berisi air raksa. Dilengkapi thermome-
    • ter untuk mengetahui sauhu udara dalam
    • ruangan. Alat ini tidak boleh terkena sinar Ma-
    • tahari & angin langsung dipasang tegak lurus
    • pada dinding yang kuat. Tingggi bejana satu
    • meter dari lantai.
    • baca termometer yang menempel pada baro-
    • meter kemudian stel nonius sehingga me-
    • nyinggung permukaan air raksa, baca skala
    • barometer.
  • 348. Barograph
    • Alat pencatat tekanan udara
    • secara automatis.
    • Satuan Milibar.(mb).
    • Sensor menggunakan ta-
    • bung hampa udara / kotak
    • logam yang hampa udara yg
    • terbuat dari logam yang sa-
    • ngat lenting. Bila tekanan
    • Atmosfer berubah volume
    • kotak berubah. Perubahan
    • volume kotak di hubungkan
    • dengan tangkai pena dan
    • menggores di pias.
  • 349. Anemometer 10m
    • Fungsi alat : Pencatat Arah dan Kecepatan Angin Sesaat
    • Satuan : Arah Angin ( 8 mata angin )
    • Kecepatan Angin : Knots. ( 1 Knots = 1.8 Km/Jam )
    • Keterangan : Yang dimaksud arah angin yaitu Arah dari mana angin
    • berhembus.
  • 350. Authomatic Weather Stasion
    • Fungsi alat : Sensor Pengukur Suhu udara, Kelembaban,
    • Tekanan Udara, Arah angin, kecepatan angin, curah hujan,
    • Penyinaran Matahari, suhu tanah.
    • Satuan : Suhu udara =Derajat celcius,Tekanan = milibar,
    • Curah hujan = Milimeter (mm). Penyinaran matahari =
    • Langley, Kecepatan angin = Knots, Km/Jam. Arah angin =
    • derajat.
    • Keterangan : dari sensor tersebut data disimpan
    • didata loger dan disambung melalui kabel ke Komputer yang
    • ada diruangan Observasi untuk melihat tampilang alat
    • tersebut.
  • 351. Thermohygrograph
    • Fungsi alat : Pencatat Suhu udara dan Kelembaban Udara (Nisbi)
    • Satuan : Derajat Calcius & Prosentase (%).
    • Keterangan : Pias harian, atau Mingguan.
    • * Sensor Suhu terbuat dari logam, bila udara panas logam memuai dan
    • menggerakan pena keatas, bila udara dingin mengkerut gerakan pena turun
    • * Sensor Kelembaban udara terbuat dari rambut manusia, bila udara basah
    • Rambut memanjang dan bila udara kering rambut memendek.
  • 352. Thermometer tanah gumdul
    • Funsi alat : Pengukur Suhu tanah Gundul.
    • Satuan : Derajat Celcius
    • Keterangan : * Kedalaman 0 cm, 5 Cm. 10 Cm, 20 Cm, 50 Cm, 100 cm.
    • Benda kuning pada thermometer 50 cm dan 100 cm adalah parapin yang
    • Berfungsi agar ketika alat tersebut dibaca maka suhu tidak berubah.
    • Data suhu tanah ini digunakan dalam kegiatan pemupukan tanah.
  • 353. Thermometer tanah berumput Fungsi alat : Pengukur Suhu tanah Berumput. Satuan : Derajat Celcius Keterangan : * Kedalaman 0 cm, 5 Cm. 10 Cm, 20 Cm, 50 Cm, 100 cm. Benda kuning pada thermometer 50 cm dan 100 cm adalah parapin yang Berfungsi agar ketika alat tersebut dibaca maka suhu tidak berubah. Data suhu tanah ini digunakan dalam kegiatan pemupukan tanah.
  • 354. Cup Counter Anemometer tinggi 2 meter Fungsi alat : Pengukur Kecepatan Angin Rata-rata harian Satuan : Km / Jam Keterangan : Prinsip kerja seperti garakan Spedometer sepeda motor dalam satuan km/jam Kecapatan angina rata-rata harian selisih pembacaan angka dibagi 24 jam.
  • 355. Sangkar Meteorologi Funsi alat : Tempat meletakan peralatan Meteorologi Satuan : - Keterangan : Berventilasi, Double Jalusi guna untuk mengalirkan udara masuk- keluar. Dicat putih agar memantulkan cahaya (merupakan konversi dari WMO)
  • 356. Penakar Hujan ( Ombrometer ) Fungsi alat : Pengukur Curah Hujan Satuan : Milimeter ( mm ). Keterangan : * Curah hujan di ukur dengan gelas penakar setiap pagi Jam 07.00WS. Atau 1 milimeter hujan yang ditakar sama volumenya dengan 10 cc.
  • 357. Penakar Hujan Otomatis ( Hellman ) Fungsi alat : Pencatat Instensitas Curahhujan / tingkat kelebatannya Satuan : Milimeter ( mm ). Keterangan : * Setiap hari pias diganti (pias Harian atau Pias Mingguan). Hujan dengan Instensitas lebat bentuk grafik terjal hujan dengan intensitas Ringan bentuk grafik landai. * Waktu terjadi dan berakhirnya hujan dapat diketahui.
  • 358. Panci Penguapan ( Open Pan Evaporimeter ) Funsi alat : Pengukur Penguapan air langsung Satuan : Milimeter (mm). Ukuran alat : Tinggi Alat 25,4 Cm, diameter alat 120.7 Cm. Keterangan : Alat ini dilengkapi dengan 1. Thermometer air Six Bellani (Thermometer Apumg) 2. Cup Counter anemometer tinggi 05 meter 3. Alat pengukur tinggi permukaan air ( Hook Gauge ).
  • 359. Fungsi alat : Pengukur partikel kecil padat aerosol di udara (debu, carbon dll) Satuan : Mikrogram / m³ Keterangan : DI dalam alat terdapat motor penghisap & flow rate Pengukur kecepa tan aliran udara masuk. Udara dihisap oleh motor penghisap me lalui celah samping penutup. Banyaknya vol. udara dicatat oleh flow rate. Di dalam alat ini dipasang filter untuk menampung udara yang masuk. Pengoperasian 24 jam dalam 6 hari. Ambang batas polusi ud. = 260 µgr/m³ HIGH VOLUME AIR SAMPLER (HV. SAMPLER)
  • 360. Tambahan Sensor Suhu
  • 361. MACAM-MACAM SENSOR SUHU
    • Bimetalic Temperatur Sensor
    • Thermocouples
    • Resistance Temperature Detectors
    • Thermistors
    • Integrated Circuit Temperature Sensor
  • 362. Bimetalic Temperatur Sensor
  • 363. Thermocouples
  • 364.  
  • 365. Working Principle
    • Seebeck effect
    • Ketika bahan konduksi apapun dalam hal ini penghantar menghasilkan perbedaan panas yang menghasilkan tegangan
    • Perbedaan panas disebabkan oleh karakteristik masing2 penghantar
  • 366.  
  • 367.
    • Untuk mengukur panas dengan cara menyambungkannya dengan konduktor jenis yang lain
    • Tegangan yang dihasilkan bergantung pada jenis bahan konduksi atau metal yang digunakan
    • Perbedaan biasanya 1-70 mikrovolt perderajat Celcius
    • Thermokopel memberikan perbedaan dalam temperatur bukan nilai mutlak dan dapat mengukur dalam jangkah lebar sesuai dengan karakteristik bahan.
  • 368.  
  • 369. Resistance Temperature Detectors
  • 370. Thermistors
  • 371. IC temp transducers
    • Ics used as temp. transducer
    • Most linear
    • Highest o/p
  • 372.  
  • 373. Lm 335 series
    • Uses a temp sensitive zener diode
    • Provides o/p- 10 mv /K
  • 374. Lm 34 series
    • Precision sensor
    • O/p V proportional to F
    • O/p 10 mv /F
    • Low cost, Low o/p impedance,Linear
    • Draws little I (about 70 micro amps)
    • To measure zero degree needs –ve supply
  • 375. Lm 35 series
    • Precision sensor
    • O/p V proportional to C
    • O/p 10 mv /C
    • Low cost, Low o/p impedance,Linear
    • Draws little I (about 70 micro amps)
  • 376.  
  • 377.  
  • 378.  
  • 379.  
  • 380.  
  • 381. Jenis-jenis IC Temperatur Sensors LM35
  • 382. Prinsip kerja IC Temperatur Sensors
    • Suhu lingkungan di deteksi menggunakan bagian IC yang peka terhadap suhu
    • Suhu lingkungan ini diubah menjadi tegangan listrik oleh rangkaian di dalam IC, dimana perubahan suhu berbanding lurus dengan perubahan tegangan output.
    • Pada seri LM35
    • V out =10 mV/ o C
    • Tiap perubahan 1 o C akan menghasilkan perubahan tegangan output sebesar 10mV
  • 383. Kelebihan dan Kelemahan IC Temperatur Sensors Tipe LM35
    • Kelebihan:
    • Rentang suhu yang jauh, antara -55 sampai +150 o C
    • Low self-heating, sebesar 0.08 o C
    • Beroperasi pada tegangan 4 sampai 30 V
    • Rangkaian tidak rumit
    • Tidak memerlukan pengkondisian sinyal
    • Kekurangan:
    • Membutuhkan sumber tegangan untuk beroperasi
  • 384. Contoh permasalahan
    • Rancangkan suatu sensor suhu menggunakan IC LM35 yang mengikuti spesifikasi;
    • Interval : 16-36 0 C
    • sumber tegangan : 5 V
    • Output : 0.1V/ 0 C
  • 385. SMART SOLUTIONS
    • We know that LM35 has an operating range of -55 0 C to 150 0 C and suplay voltage range of 4V-30V so there are no problems with range and supplay voltage requirements,
    • But there are problem at output because the specification also call for 0.1V = 1 0 C, which is ten times greater than LM35 output
    • So that we can use op-amp to increase output voltage ten times greater. The gain of amplifier can be set to ten times by proper selection of resistors at op-amp
  • 386. Rancangan Rangkaian Sensor
  • 387. LECTURE 14 Industrial Sensor
  • 388.  
  • 389.  
  • 390.  
  • 391.  
  • 392.  
  • 393.  
  • 394.  
  • 395.  
  • 396.  
  • 397.  
  • 398.  
  • 399.  
  • 400.  
  • 401.  
  • 402.  
  • 403.  
  • 404.  
  • 405.  
  • 406.  
  • 407.  
  • 408.  
  • 409.  
  • 410.  
  • 411.  
  • 412.  
  • 413.  
  • 414.  
  • 415.  
  • 416.  
  • 417.  
  • 418.  
  • 419.  
  • 420.  
  • 421.  
  • 422.  
  • 423.  
  • 424.  
  • 425.  
  • 426.  
  • 427.  
  • 428.  
  • 429.  
  • 430.  
  • 431.  
  • 432.  
  • 433.  
  • 434.  
  • 435.  
  • 436.  
  • 437.  
  • 438.  
  • 439.  
  • 440. IC SPECIAL FUNCTION for SENSOR SIGNAL CONDITIONING LECTURE 15
  • 441. IC SPECIAL FUNCTION for SENSOR SIGNAL CONDITIONING LM3914 - 3915
  • 442. IC SPECIAL FUNCTION for SENSOR SIGNAL CONDITIONING LM3914 - 3915 LM3914 LINEAR SCALE LM3915 DECIBEL SCALE
  • 443. IC SPECIAL FUNCTION for SENSOR SIGNAL CONDITIONING LM3914 - 3915
  • 444. IC SPECIAL FUNCTION for SENSOR SIGNAL CONDITIONING LM3914 - 3915
  • 445. IC SPECIAL FUNCTION for SENSOR SIGNAL CONDITIONING LM2907-2917 F TO V CONVERTER
  • 446. IC SPECIAL FUNCTION for SENSOR SIGNAL CONDITIONING LM2907-2917 F TO V CONVERTER
  • 447. IC SPECIAL FUNCTION for SENSOR SIGNAL CONDITIONING LM2907-2917 F TO V CONVERTER
  • 448. IC SPECIAL FUNCTION for SENSOR SIGNAL CONDITIONING LM2907-2917 F TO V CONVERTER
  • 449. IC SPECIAL FUNCTION for SENSOR SIGNAL CONDITIONING LM2907-2917 F TO V CONVERTER
  • 450. IC SPECIAL FUNCTION for SENSOR SIGNAL CONDITIONING LM2907-2917 F TO V CONVERTER
  • 451. IC SPECIAL FUNCTION for SENSOR SIGNAL CONDITIONING LM2907-2917 F TO V CONVERTER
  • 452. IC SPECIAL FUNCTION for SENSOR SIGNAL CONDITIONING MAX260 PROGRAMMABLE FILTER
  • 453. Tapis Pembobot A, C dan rata
  • 454. Tapis Pembobot A
  • 455. Sound Level Meter Random-Incidence Relative Response Level As a Function of Frequency for Various Weightings sesuai bakuan ANSI S1.4-1971
  • 456. Tapis Pembobot C
  • 457. Sound Level Meter Random-Incidence Relative Response Level As a Function of Frequency for Various Weightings sesuai bakuan ANSI S1.4-1971
  • 458. KARAKTERISTIK TAPIS LOLOS PITA fo = , Q = Vrms =
  • 459. Pembagian Tapis 1, 1/3 dan 1/6 Oktaf pada Frekuensi Audio sesuai bakuan ANSI S1.11-1971 Specification for octave, half-octave, and third-octave band filter sets   1 Oktaf 1 1oktaf ½ Oktaf 1 1/2okt 1/3 1/3okt taf f O 10 3n/10 10 3n/20 10 3n/30 f L 2 –1/2 f O 2 –1/4 f O 2 -1/6 f O f H 2 1/2 f O 2 ¼ f O 2 1/6 f O
  • 460. Tapis Lolos Pita Terprogram MAX262
  • 461. SWITCHED CAPASITOR TECHNIQUE
  • 462. SWITCHED CAPASITOR TECHNIQUE PENGISIAN KAPASITOR TERJADI SETIAP PERIODE CLOCK. Qtot = Cs.Vi .T/Ts Imean = Qtot/T = Cs.Vi/Ts Frekuensi osilator XTAL mikrokontroler Frekuensi keluaran P1.0 = -------------------------------------------------- 4 x [65536 – RCap]
  • 463. SETTING MODE UNTUK FUNGSI BPF
  • 464. Peta Memori dan Diagram Waktu Pemrograman Tapis
  • 465. DIAGRAM ALIR UMUM PEMROGRAMAN TAPIS
  • 466. DIAGRAM ALIR PEMILIHAN MODE 2 BPF Pada alamat memori 0 D1 (M1=‘0’) dan D0 (M0 = ‘1’)
  • 467. DIAGRAM ALIR PEMROGRAMAN RASIO fdetak/fpusat = 28,88 Pada alamat memori 1 D0 (F0 = ‘0’) dan D1 (F1 = ‘0’) Pada alamat memori 2 D0 (F2 = ‘0’) dan D1 (F3 = ‘0’) Pada alamat memori 3 D0 (F4 = ‘0’) dan D1 (F5 = ‘0’)
  • 468. DIAGRAM ALIR PEMROGRAMAN Q=1,41 UNTUK 1 OKTAF Pada alamat memori 4 D0 (Q0 = ‘0’) dan D1 (Q1 = ‘0’) Pada alamat memori 5 D0 (Q2 = ‘0’) dan D1 (Q3 = ‘0’) Pada alamat memori 6 D0 (Q4 = ‘0’) dan D1 (Q5 = ‘0’) Pada alamat memori 7 D0 (Q6 = ‘0’)
  • 469.  
  • 470. lampiran
  • 471. LAMPIRAN DATA SENSOR
  • 472. LAMPIRAN DATA SENSOR
  • 473. LAMPIRAN DATA SENSOR
  • 474. LAMPIRAN DATA SENSOR
  • 475. LAMPIRAN DATA SENSOR
  • 476. LAMPIRAN DATA SENSOR
  • 477. SHARP GP2D12 Bentuk fisik GP2D12 Grafik antara tegangan vs jarak
  • 478. SHARP GP2D12
  • 479. SHARP GP2D12
  • 480. Fitur –fitur SHARP GP2D12
    • Mempunyai tegangan kerja antara 4,5  5,5 Volt DC dan arus yang dibutuhkan sebesar 33  55 mA.
    • Tipe output sensor berupa tegangan DC kurang lebih dari 0 ,4  2,5 Volt.
    • Deteksi jarak dari 10  80 cm .
    • Sedikit terpengaruh oleh warna pantulan obyek yang diukur .
  • 481. UVTRON Flame Sensor Driver UVTRON Sensor api UVTRON
  • 482. UVTRON Flame Sensor Driver UVTRON
  • 483. UVTRON Flame Sensor Driver UVTRON
  • 484. UVTRON Flame Sensor Driver UVTRON
  • 485. UVTRON Spectral Response
  • 486. D EVANTECH CMPS03
  • 487. F itur – fitur D EVANTECH CMPS03
      • Tegangan kerja 5 Volt DC dan arus yang dibutuhkan 15 mA.
      • Mempunyai 2 macam output data, PWM pada kaki no 4 dan I2C pada kaki no 2 dan 3
  • 488. Mikrofon kondenser Bentuk fisik mikrofon kondenser Untai mikrofon kondenser
  • 489. Tone Decoding (XR 2211) FEATURES  Wide Frequency Range, 0.01Hz to 300kHz  Wide Supply Voltage Range, 4.5V to 20V  HCMOS/TTL/Logic Compatibility  FSK Demodulation, with Carrier Detection  Wide Dynamic Range, 10mV to 3V rms APPLICATIONS  Caller Identification Delivery  FSK Demodulation  Tone Decoding  FM Detection  Carrier Detection Bentuk fisik XR 2211
  • 490. TPA81 THERMOPILE ARRAY
  • 491. TPA81 THERMOPILE ARRAY
  • 492. TPA81 THERMOPILE ARRAY
  • 493. ANTENNA
  • 494. ANTENNA
  • 495. ANTENNA
  • 496. ANTENNA
  • 497. ANTENNA
  • 498. Gambar untai driver motor DC
  • 499. Gambar untai sensor deteksi garis Penerima Infra Merah Pemancar Infra Merah
  • 500. Gambar untai penguat mikrofon kondenser
  • 501. Gambar untai Tone Decoding dengan XR 2211 ( fo = 4,5 kHz)
  • 502. OPTOCOUPLER 4N25, dkk
  • 503. OPTOCOUPLER 4N25, dkk
  • 504. OPTOCOUPLER 6N135, dkk
  • 505. PHOTO INTERUPTER TLP824, 825, dkk
  • 506. PHOTO INTERUPTER TLP824, 825, dkk
  • 507. HALL EFFECT SENSOR
  • 508. HALL EFFECT SENSOR
  • 509. HALL EFFECT SENSOR
  • 510. HALL EFFECT SENSOR
  • 511. HALL EFFECT SENSOR
  • 512. HALL EFFECT SENSOR
  • 513. HALL EFFECT SENSOR
  • 514. HALL EFFECT SENSOR
  • 515. CA package The ACS7xx Families of Hall Effect Current Sensors
  • 516. How Do They Work?
    • Current passing through the power leadframe generates a magnetic field
    • The ferrite core concentrates the magnetic field on the Hall effect sensor
    • No connection between power path and sensor = isolation (3.0 kV)
    SIP packaged Linear Hall Effect Sensor Ferrite Magnetic Field Concentrator Power Leadframe Plastic Over-molding
  • 517. Block Diagram
  • 518. What Is The Output? -100 -80 -60 -40 -20 0 20 40 60 80 100 Current (Amps) 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 Vout (Volts) Vcc/2 Vcc “ ratiometric output” scales with Vcc example output of ACS75xCx–100
  • 519. How Are They Intended To Be Mounted? ACS75x Evaluation Board Available from our on-line store at: www.allegromicro.com/control/webstore.htm
  • 520. Why Should I Use The ACS75x Current Sensor?
    • 1) Isolation
    • 3.0kV
    No opto-isolator required Replaces current transformer
  • 521. Why Should I Use The ACS75x Current Sensor?
    • 2) Lower Power
    • Dissipation +
    • Lower Voltage Drop
    Internal resistance = 130  Ohms (752) =100  Ohms (754) (yes, micro -ohms) Especially important in battery driven products
  • 522. Why Should I Use The ACS75x Current Sensor?
    • 3) Smaller Size
    ACS750 ACS75x LEM HY25-P 200A, 50m  shunt resistor
  • 523. Why Should I Use The ACS75x Current Sensor?
    • 4) Single Supply Voltage
    Fewer voltage regulators on board No level shifting required on output to interface to micro Most competing sensors require dual, +/- voltage supplies
  • 524. Why Should I Use The ACS75x Current Sensor?
    • 5) Reduced Component Count
    ACS75x = 1 Resistor + op-amp + isolator = 3 Saves per socket costs, reduces board space
  • 525. Why Should I Use The ACS75x Current Sensor?
    • 6) Easier Assembly
    With thread-thru sensors, the current conductor must be threaded through the sensor in assembly. This is an expensive, manual operation With the Allegro ACS75x no thread-thru required
  • 526. Why Should I Use The ACS75x Current Sensor?
    • 7) Lead-free
    < 0.1% lead meets all international standards for lead-free initiatives
  • 527. Safety Certifications
    • All Allegro current sensors are certified by TUV America to the EN, UL, and CSA versions of IEC60950
    • Mold compound is UL recognized to UL94V-0
  • 528. The ACS752 Family
    • Part Measurable Temperature
    • Number Current Range
    • ACS752 SCA-050 50A -20 to 85 C
    • ACS752 SCA-100 100A -20 to 85 C
    custom ‘CA’ package 50kHz bandwidth Introduced March 2004
  • 529. 752 Datasheet – 50A Rise time t r I P =  50A 7  s Frequency Bandwidth f - 3dB 50 kHz  I P , T = +25°C 38.0 40.0 42.0 mV/A Sensitivity Sens  I P , Over Temperature 37.0 42.5 mV /A Noise V NOISE Peak - to - Peak; Ta = +25°C No External Filter 75 mV  I P , T = +25°C +/ - 1 Total Accuracy (Including all offsets) X Ip  I P , Over Temperature +/ - 7.5 % 3.0 Characteristic Symbol Test Conditions Limits ELECTRICAL CHARACTERISTICS, over temperature unless otherwise stated Min. Typ. Max. Units Primary Sensed Current I P - 50 50 A Supply Voltage V CC 4.5 5.0 5.5 V Supply Current I CC V cc = 5.0V, output open 7 10 mA Output Resistance R OUT Iout = 1.2 mA 1 2  Primary Conductor Resistance R PRIMARY I P =  100A; +25°C 130   Isolation Voltage V ISO Pins 1 - 3 and 4 - 5, 60 Hz, 1 minute 2.5 kV PERFORMANCE CHARACTERISTICS, - 20 °C to +85 °C, Vcc = 5V unless otherw ise specified Propagation time t PROP I P =  50A 4 Response time t RESPONSE I P =  50A 8 Non - linearity E L  I P +/ - 4 % Symmetry E S  I P 97.5 100 102.5 % I = 0A, T = +25°C - 40 Vcc/2 +40 mV Electrical Offset Voltage (Magnetic error not included) V OE I = 0A, Over Temperat ure - 50 Vcc/2 +50 mV Magnetic Offset Error V OM I = 0A, after excursion of 100A +/ - 0.3 +/ - 0.65 A
  • 530. 752 Datasheet – 100A Rise time t r I P =  50A 7  s Frequency Bandwidth f - 3dB 50 kHz  I P , T = +25°C 19.0 20.0 21.0 mV/A Sensitivity Sens  I P , Over Temperature 18.0 22.0 mV/A Noise V NOISE Peak - to - Peak; Ta = +25°C No External Filter 55 mV  I P , T = +25°C +/ - 1 Total Accuracy (Including all offsets) X Ip  I P , Over Temperature +/ - 9 % 3.0 Characteristic Symbol Test Conditions Limits ELECTRICAL CHARACTERISTICS, over temperature unless otherwise stated Min. Typ. Max. Units Primary Sensed Current I P - 100 100 A Supply Voltage V CC 4.5 5.0 5.5 V Supply Current I CC V cc = 5.0V, output open 7 10 mA Output Resistance R OUT Iout = 1.2 mA 1 2  Primary Conductor Resistance R PRIMARY I P =  100A; +25°C 130   Isolation Voltage V ISO Pins 1 - 3 and 4 - 5, 60 Hz, 1 minute 2.5 kV PERFORMANCE CHARACTERISTICS, - 20 °C to +85 °C, Vcc = 5V unless othe rwise specified Propagation time t PROP I P =  50A 4 Response time t RESPONSE I P =  50A 8 Non - linearity E L  I P +/ - 4.4 % Symmetry E S  I P 98 100 102 % I = 0A, T = +25°C - 40 Vcc/2 +40 mV Electrical Offset Voltage (Magnetic error not included) V OE I = 0A, Over Temperat ure - 50 Vcc/2 +50 mV Magnetic Offset Error V OM I = 0A, after excursion of 100A +/ - 0.3 +/ - 0.65 A
  • 531. ACS754 Family Power Temp Part Number Leads Current Range ACS754 S/L CB -050 -PFF formed 50A S = -20 - 85C L = -40 - 150C ACS754 S/L CB -100 -PFF formed 100A S = -20 - 85C L = -40 - 150C ACS754 L CB -130 -PFF formed 130A L = -40 - 150C -PSF straight ACS754 S/K CB -150 -PSF straight 150A S = -20 - 85C K = -40 - 125C ACS754 S CB -200 -PSF straight 200A S = -20 - 85C -PFF version -PSF version 35kHz bandwidth Introduced Nov 2004 custom ‘CB’ package externally identical to ‘CA’ package internally, lower resistance CA: 130  ohms CB: 100  ohms
  • 532. ACS75x Comparison
  • 533. Applications Categories
    • Motor control
    • Power distribution systems
    • Battery driven applications
    • Motor, board, box, and connector protection
    • White goods (appliances)
    • Automotive electronics
    • Electric golf carts, forklifts, & scooters
    • UPS and emergency lighting
    • Industrial heaters & welders
    • Spa controllers & exercise equipment
  • 534. ACS706 Surface-Mount Current Sensor Family
  • 535.
    • A higher isolation voltage version of the ACS704.
    • Small form factor precise current sense.
    • Bi-directional device suitable to measure either AC or DC currents.
    • Extremely low resistance lead frame.
    • Conduction path electrically isolated from the sensor signal leads.
      • No additional isolation components required.
    What is the product?
  • 536. Block Diagram
  • 537.
        • Small size  Less board space, closer spacing of boards
        • Single voltage supply  Fewer dc regulators in system  No level shifting of output required
        • 1600 V RMS isolation  No optoisolator required
        • Monolithic Hall IC  No magnetic design required
        • High reliability  No manual thread-thru of conductor required
        • Low, 1.5 m  resistance  Less voltage drop and power dissipation
    Features and Benefits
  • 538. Competitive Advantages
    • The ACS706 is the smallest high voltage, 1.6 kV isolation voltage rated, integrated current-sensing solution available.
    • Competing LEM sensors are much larger and most require dual voltage supplies.
      • More than double the cost of the ACS706.
    • Sentron’s Trace Straddler sensor is less sensitive and has limited isolation abilities.
      • Measurement accuracy in system impossible to guarantee in production.
  • 539. Competitive Advantages
    • Current transformers
      • Cannot measure DC currents.
      • Current transformers cannot be used in variable frequency systems.
      • Require precision Op-amps to increase the gain and to filter.
    • Sense/shunt resistor solutions
      • Can consume more power.
        • Power loss is I 2 R
      • Additional isolation circuitry if voltage isolation is required.
  • 540. FIBER OPTIC SENSOR LECTURE 16
  • 541. F IBER O PTIC S ENSORS
    • Myoungsu Shin
    Department of Civil Engineering University of Illinois at Urbana-Champaign LECTURE 16
  • 542. C ONTENTS
    • Definition of Fiber Optic Sensors
    • Appearance of Fiber Optic Sensors
    • Application (Usage) areas
    • Advantages over Electrical Sensors
    • Supporting Technology
    • Types of Fiber Optic Sensors
    • Introducing Several Products
  • 543. F IBER O PTIC S ENSORS?
    • Dictionary: any device in which variations in the transmitted power or the rate of transmission of light in optical fiber are the means of measurement or control
    • To measure physical parameters such as strain, temperature, pressure, velocity, and acceleration
    • Optical fibers : strands of glass that transmit light over long distances (wire in electrical systems)
    • Light : transmitted by continuous internal reflections in optical fibers (electron in electrical systems)
  • 544. What Does F.O.S. Look Like?
    • Strain Gage
    • Embeddable Strain Gage
    • Pressure Transducer
    • Displacement Transducer
    • Temperature Transducer
  • 545. What Does F.O.S. Look Like? (Cont’d)
    • Fiber Optic Sensor vs. Electrical Sensor
    Various Fiber Optic Censors Fiber Optic Shape Tape
  • 546. A DVANTAGES
    • Immunity to electromagnetic interference (EMI) and radio frequency interference (RFI)
    • All- passive dielectric characteristic: elimination of conductive paths in high-voltage environments
    • Inherent safety and suitability for extreme vibration and explosive environments
    • Tolerant of high temperatures (>1450 C) and corrosive environments
    • Light weight, and small size
    • High sensitivity
  • 547. S UPPORTING T ECHNOLOGY
    • Kapron (1970) demonstrated that the attenuation of light in fused silica fiber was low enough that long transmission links were possible
    • Procedure in Fiber optic sensor systems :
      • Transmit light from a light source along an optical fiber to a sensor , which sense only the change of a desired environmental parameter .
      • The sensor modulates the characteristics (intensity, wave length, amplitude, phase) of the light.
      • The modulated light is transmitted from the sensor to the signal processor and converted into a signal that is processed in the control system.
      • The properties of light involved in fiber optic censors: reflection, refraction, interference and grating
  • 548. Displacement Transducer
    • Involved technology: Thin Film Fizeau Interferometer (TFFI)
    • Linear Stroke: 25 mm
    • Resolution: 0.002 mm (no averaging)
    • 0.0002 mm (averaging with signal condition)
    • Operating temperature: -150 C to 350 C (cable dependent)
    • Transducer dimensions: Length 103 mm, O.D. 13 mm
    • Fiber optic cable: Length 1.5 m, Custom length up to 5 km
  • 549. Pressure Transducer
    • Involved technology: Fabry-Perot interferometer
    • Pressure range: From 0-0.3 bar (5 psi) up to 0-700 bar (1000 psi)
    • Resolution: 0.01% of FS
    • Precision: 0.1% of FS
    • Operating temperature: -20 to 350 C (650 F)
    • Thermal sensitivity: 0.01% of reading/ 1 C
    • Gauge dimensions: O.D. 19 mm, length 51 to 102 mm
    • depending on pressure range
    • Fiber optic cable: Length 10 m, Custom length up to 5 km
  • 550. Temperature Transducer
    • Involved technology: Fabry-Perot interferometer
    • Temperature Range: FOT-L: -40 to +250 C, FOT-H: -40 to +350 C
    • Resolution: 0.1 C
    • Accuracy: 1 C or 1% of FS (whichever is greater)
    • Response time: Less than 1.5 second
    • Gauge dimensions: Sensitive zone length 10 mm, Probe O.D. 1.45 mm
    • Fiber optic cable: Length 1.5 m, Custom up to 5 km
  • 551. Mikrokontroler AVR LECTURE 17
  • 552. Sekilas Tentang AVR
    • AVR = Alf and Vegard RISC
    • AVR = Advanced Virtual RISC
    • RISC = Reduced Instruction Set Computer
    • Arsitektur mikrokontroler jenis AVR dikembangkan  1996  2 orang mahasiswa Norwegian Institute of Technology  Alf Egil Bogen & Vegard Wollan
  • 553. Sekilas Tentang AVR
    • Mikrokontroler AVR  Atmel.
    • Seri pertama AVR mikrokontroler 8 bit AT90S8515.
    • Konfigurasi pin yang sama dengan mikrokontroler 8051, termasuk address dan data bus yang termultipleksi.
  • 554. Sekilas Tentang AVR
    • Mikrokontroler AVR  teknologi RISC
    • Set instruksinya dikurangi dari segi ukurannya dan kompleksitas mode pengalamatannya.
    • Pada awal era industri komputer, bahasa pemrograman  kode mesin & bahasa assembly.
    • Para desainer komputer  mengembangkan bahasa pemrograman tingkat tinggi yang mudah dipahami manusia.
    • Akibatnya, instruksi yang ada menjadi semakin komplek dan butuh lebih banyak memori.
    • Siklus eksekusi instruksinya  semakin lama.
  • 555. Sekilas Tentang AVR
    • Dalam AVR  arsitektur RISC 8 bit
    • Semua instruksi berukuran 16 bit
    • Sebagian besar dieksekusi dalam 1 siklus clock.
    • Berbeda dengan mikrokontroler MCS-51 yang instruksinya bervariasi antara 8 bit sampai 32 bit dan dieksekusi selama 1 sampai 4 siklus mesin, dimana 1 siklus mesin membutuhkan 12 periode clock.
  • 556. Sekilas Tentang AVR
    • Dalam perkembangannya, AVR dibagi menjadi beberapa varian yaitu AT90Sxx, ATMega, AT86RFxx dan ATTiny.
    • Pada dasarnya yang membedakan masing-masing varian adalah kapasitas memori dan beberapa fitur tambahan saja.
  • 557. Fitur ATMega8535
    • Fitur yang tersedia pada ATMega 8535 adalah :
    • Frekuensi clock maksimum 16 MHz
    • Jalur I/O 32 buah, yang terbagi dalam PortA, PortB, PortC dan PortD
    • Analog to Digital Converter 10 bit sebanyak 8 input
    • Timer/Counter sebanyak 3 buah
    • CPU 8 bit yang terdiri dari 32 register
    • Watchdog Timer dengan osilator internal
  • 558. Fitur ATMega8535
    • SRAM sebesar 512 byte
    • Memori Flash 8 Kbyte dengan kemampuan read while write
    • Interrupt internal maupun eksternal
    • Port komunikasi SPI
    • EEPROM sebesar 512 byte yang dapat diprogram saat operasi
    • Analog Comparator
    • Komunikasi serial standar USART dengan kecepatan maksimal 2,5 Mbps
  • 559. MCU ARCHITECTURE
  • 560. Konfigurasi Pin ATMega8535
  • 561. Peta Memori ATMega8535
    • ATMega8535 memiliki dua jenis memori yaitu Data Memory dan Program Memory ditambah satu fitur tambahan yaitu EEPROM Memory untuk penyimpan data.
    • Program Memory
    • ATMega8535 memiliki On-Chip In-System Reprogrammable Flash Memory untuk menyimpan program.
    • Untuk alasan keamanan, program memory dibagi menjadi dua bagian yaitu Boot Flash Section dan Application Flash Section.
  • 562. Peta Memori ATMega8535
    • Boot Flash Section digunakan untuk menyimpan program Boot Loader, yaitu program yang harus dijalankan pada saat AVR reset atau pertamakali diaktifkan.
    • Application Flash Section digunakan untuk menyimpan program aplikasi yang dibuat user.
    • AVR tidak dapat menjalankan program aplikasi ini sebelum menjalankan program Boot Loader.
    • Besarnya memori Boot Flash Section dapat diprogram dari 128 word sampai 1024 word tergantung setting pada konfigurasi bit di register BOOTSZ.
    • Jika Boot Loader diproteksi, maka program pada Application Flash Section juga sudah aman.
  • 563. Gambar Peta Memori Memori Program yang terletak di Flash PEROM tersusun dalam 2 byte  tiap instruksi memiliki lebar 16bit atau 32bit. Flash PEROM : 4Kbytex16bit Addr: $000  $FFF PC : 12bit EEPROM 8 bit  512 byte Addr: $000  $1FFF
  • 564.  
  • 565. SREG (Status Register)
    • Status yang dihasilkan setiap operasi setelah suatu instruksi dieksekusi  CPU core
    • Bit 7 : I (Global Interrupt Enable)
      • ‘ 1’  interrupt enable  instuksi SEI (Set Enable Interrupt)
      • ‘ 0’  clear jika terjadi interupsi yang dipicu oleh hardware atau dengan CLI, diset kembali dengan SEI
  • 566. SREG (Status Register)
    • Status yang dihasilkan setiap operasi setelah suatu instruksi dieksekusi  CPU core
    • Bit 6 : T (Bit Copy Storage)
      • Instruksi BLD dan BST menggunakan bit T sebagai sumber atau tujuan dalam operasi bit.
      • Suatu bit dalam sebuah GPR (General Purpose Register) / register file dpt dicopi ke bit T menggunakan BST, sebaliknya dengan BLD
  • 567. SREG (Status Register)
    • Status yang dihasilkan setiap operasi setelah suatu instruksi dieksekusi  CPU core
    • Bit 5 : H (Bit Copy Storage)
      • Menunjukkan adanya half carry dalam operasi aritmatika dalam BCD operation
  • 568. SREG (Status Register)
    • Status yang dihasilkan setiap operasi setelah suatu instruksi dieksekusi  CPU core
    • Bit 4 : S (Sign Bit)
      • exlusive or dari Negative Flag N dan Two’s Complement Overflow Flag V
  • 569. SREG (Status Register)
    • Status yang dihasilkan setiap operasi setelah suatu instruksi dieksekusi  CPU core
    • Bit 3 : V (Two’s Complement Overflow Flag)
      • Mendukung operasi aritmatika komplemen 2
  • 570. SREG (Status Register)
    • Status yang dihasilkan setiap operasi setelah suatu instruksi dieksekusi  CPU core
    • Bit 2 : N (Negative Flag)
      • Apabila suatu operasi menghasilkan bilangan negatif maka flag N akan diset.
  • 571. SREG (Status Register)
    • Status yang dihasilkan setiap operasi setelah suatu instruksi dieksekusi  CPU core
    • Bit 1 : Z (Zero Flag)
      • Apabila suatu operasi menghasilkan nol maka flag Z akan diset.
  • 572. SREG (Status Register)
    • Status yang dihasilkan setiap operasi setelah suatu instruksi dieksekusi  CPU core
    • Bit 0 : C (Carry Flag)
      • Apabila suatu operasi menghasilkan carry maka flag C akan diset.
  • 573. Pengarah Assembler
    • .cseg (code segment)  penunjuk bahwa kode dibawahnya terletak pada memori program.
    • .db (data byte) : meletakkan konstanta, serial number, look-up table di memori program pada alamat tertentu.
    • .dw (data word) : sama dengan db, ukuran word.
    • .org : mengeset PC pada awal vektor reset .org 0x0000 atau vektor interupsi misal .org 0x0002
  • 574. Pengarah Assembler
    • .byte : inisialisasi besar byte yang digunakan pada SRAM untuk label tertentu.
    • .dseg (data segmen) : penunjuk bahwa kode dibawahnya berfungsi untuk melakukan setting SRAM.
    • .def (define) : mendefinisikan suatu register misal .def temp=r16
    • .equ : memberi nama konstanta yang tidak dapata berubah misal .equ max = 9600
  • 575. Pengarah Assembler
    • .set : sama dengan .equ tetapi konstantanya dapat diubah, misal .set baud=2400
      • .set baud = 9600
    • .endm (end macro) : mengakhiri macro
    • .include : memisahkan kode dalam 2 atau lebih file terpisah
      • Misal : .include “C:m8535def.inc”
  • 576. Pengarah Assembler
    • .device : penunjuk jenis AVR yang digunakan
    • .exit : penunjuk agar berhenti melakukan assembly pada file
    • .list : membangkitkan file list
    • .listmac : agar penambahan macro ditampilkan pada file list yang dibangkitkan
    • .nolist : agar suatu runtun instruksi tidak dimasukkan dalam file list yang dibangkitkan
  • 577. Bahasa Assembly AVR
    • Bahasa yang dipakai untuk memprogram mikrokontroler AVR adalah bahasa assembly AVR atau bahasa C (dalam praktikum 2 kali assembly dan selanjutnya AVR GCC atau Code Vision).
  • 578. Bahasa Assembly AVR
  • 579. Bahasa Assembly AVR
    • Sebuah program harus terdiri dari dua bagian, yaitu inisialisasi program dan program utama.
    • Inisialisasi program harus disertakan agar program utama dapat berjalan. Berikut adalah urutan langkah inisialisasi program :
  • 580. Bahasa Assembly AVR
    • 1. Menentukan jenis mikrokontroler yang digunakan dengan cara memasukkan file definisi device (m8535def.inc) ke dalam program utama.
    • .include “m8535def.inc”
  • 581. Bahasa Assembly AVR
    • 2.Menuliskan original address program, yaitu 0x0000. Kemudian dilanjutkan dengan instruksi rjmp / relative jump ke label main.
    • Hal ini dimaksudkan agar program memory tidak tumpang tindih dengan data memory.
    • .org 0x0000
    • rjmp main
  • 582. Bahasa Assembly AVR
    • 3.Menentukan isi Stack Pointer dengan address terakhir RAM (RAMEND). Untuk ATMega8535 yaitu 0x025F.
    • Ini dimaksudkan agar program utama mulai ditulis setelah address terakhir RAM.
    • main:
    • ldi r16,low(RAMEND) ; low byte address RAM = 5F
    • out SPL,r16
    • ldi r16,high(RAMEND) ; high byte address RAM = 02
    • out SPH,r16
  • 583. Operasi Port Input Output
    • Register I/O Setiap port ATMega8535 terdiri dari 3 register I/O yaitu DDRx, Portx dan PINx.
    • DDRx (Data Direction Register)
    • Register DDRx digunakan untuk memilih arah pin. Jika DDRx = 1 maka Pxn sebagai pin output Jika DDRx = 0 m aka Pxn sebagai input.
  • 584. Operasi Port Input Output
    • Register I/O Portx (Port Data Register)
    • Register Portx digunakan untuk 2 keperluan yaitu untuk jalur output atau untuk mengaktifkan resistor pullup.
    • 1. Portx berfungsi sebagai output jika DDRx = 1 maka :
      • Portxn = 1 maka pin Pxn akan berlogika high.
      • Portxn = 0 maka pin Pxn akan berlogika low.
    • 2. Portx berfungsi untuk mengaktifkan resistor pullup jika DDRx = 0 maka :
      • Portxn = 1 maka pin Pxn sebagai pin input dengan resistor pull up.
      • Portxn = 0 maka pin Pxn sebagai output tanpa resistor pull up.
  • 585. Operasi Port Input Output
  • 586. Operasi Port Input Output
    • Instruksi I/O
    • in : membaca data I/O port ke dalam register
    • contoh : in r16,PinA
    • out : menulis data register ke I/O port
    • contoh : out PortA,r16
    • ldi : (load immediate) : menulis konstanta ke register sebelum konstanta tersebut dikeluarkan ke I/O port
    • contoh : ldi r16,0xff
  • 587. Operasi Port Input Output
    • Instruksi I/O
    • sbi : (set bit in I/O) : membuat logika high pada sebuah bit I/O port
    • contoh : sbi PortB,7
    • cbi : (clear bit in I/O) : membuat logika low pada sebuah bit I/O port
    • contoh : cbi PortB,5
    • sbic : (skip if bit in I/O is clear) : lompati satu instruksi jika bit I/O port dalam kondisi clear/low
    • contoh : sbic PortA,3
    • sbis : (skip if bit in I/O is set) : lompati satu instruksi jika bit I/O port dalam kondisi set/high
    • contoh : sbis PortB,3
  • 588.  
  • 589.  
  • 590.  
  • 591. Jawaban no 1. .include &quot;C:Program FilesAtmelAVR ToolsAvrAssembler2Appnotesm8535def.inc&quot; .org 0x00 rjmp main main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ldi r16,0x00 out ddrc,r16 ;port c sebagai input ldi r16,0xff out ddra,r16 ;port a sebagai output ulang: in r16,PortC out PortA,r16 rjmp ulang
  • 592. Jawaban no 2. .include &quot;C:Program FilesAtmelAVR ToolsAvrAssembler2Appnotesm8535def.inc&quot; .org 0x00 rjmp main main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ldi r16,0xff out ddra,r16 ;port a sebagai output ldi r16,0x00 out ddrb,r16 ;port b sebagai input ulang: ldi r16,0x00 out PortA,r16 sbic PortB,1 rjmp ulang ldi r16,0x20 out PortA,r16 rjmp ulang
  • 593.  
  • 594. LECTURE 18
  • 595. Operasi Aritmatika
    • add : Menambahkan isi dua register.
      • Contoh : add r15,r14 ; r15=r15+r14
    • adc : Menambahkan isi dua register dan isi carry flag
      • Contoh : adc r15,r14 ; r15=r15+r14+C
  • 596. Operasi Aritmatika
      • sub : Mengurangi isi dua register Contoh : sub r19,r14 ; r19=r19-r14
    • mul : Mengalikan dua register. Perkalian 8 bit dengan 8 bit menghasilkan bilangan 16 bit yang disimpan di r0 untuk byte rendah dan di r1 untuk byte tinggi. Untuk memindahkan bilangan 16 bit antar register digunakan instruksi movw (copy register word)
      • Contoh : mul r21,r20
  • 597. Operasi Aritmatika
    • • Penjumlahan
    • .include &quot;C:Program FilesAtmelAVR ToolsAvrAssembler2Appnotesm8535def.inc&quot;
    • .org 0x00
    • rjmp main
    • main:
    • ldi r16,low(RAMEND)
    • out SPL,r16
    • ldi r16,high(RAMEND)
    • out SPH,r16
    • ldi r16,0x80
    • ldi r17,0x80
    • add r16,r17
    • ldi r18,0x02
    • adc r16,r18
    • here: rjmp here
  • 598. Operasi Aritmatika
    • • Pengurangan
    • .include &quot;C:Program FilesAtmelAVR ToolsAvrAssembler2Appnotesm8535def.inc&quot;
    • .org 0x00
    • rjmp main
    • main:
    • ldi r16,low(RAMEND)
    • out SPL,r16
    • ldi r16,high(RAMEND)
    • out SPH,r16
    • ldi r16,0x09
    • ldi r17,0x06
    • sub r16,r17
    • ldi r17,0x03
    • sub r16,r17
    • ldi r17,0x06
    • sub r16,r17
    • here: rjmp here
  • 599. Operasi Aritmatika
    • • Perkalian
    • .include &quot;C:Program FilesAtmelAVR ToolsAvrAssembler2Appnotesm8535def.inc&quot;
    • .org 0x00
    • rjmp main
    • main:
    • ldi r16,low(RAMEND)
    • out SPL,r16
    • ldi r16,high(RAMEND)
    • out SPH,r16
    • ldi r16,5
    • ldi r17,100
    • mul r16,r17
    • movw r17:r16,r1:r0 ; Copy r1:r0 to r17:r16
    • here: rjmp here
  • 600. Operasi Aritmatika
    • • Pembagian
    • .include &quot;C:Program FilesAtmelAVR ToolsAvrAssembler2Appnotesm8535def.inc&quot;
    • .org 0x00
    • .def drem8u =r15 ;remainder/sisa
    • .def dres8u =r16 ;result/hasil
    • .def dd8u =r16 ;dividend/yang dibagi
    • .def dv8u =r17 ;divisor/pembagi
    • .def dcnt8u =r18 ;loop counter
    • rjmp main
  • 601. Operasi Aritmatika
    • • Perkalian
    • .include &quot;C:Program FilesAtmelAVR ToolsAvrAssembler2Appnotesm8535def.inc&quot;
    • .org 0x00
    • .def drem8u =r15 ;remainder/sisa
    • .def dres8u =r16 ;result/hasil
    • .def dd8u =r16 ;dividend/yang dibagi
    • .def dv8u =r17 ;divisor/pembagi
    • .def dcnt8u =r18 ;loop counter
    • rjmp main
  • 602. Operasi Aritmatika
  • 603. Operasi Logika
  • 604. Operasi Logika
  • 605. Operasi Logika
  • 606. Operasi Logika .include &quot;C:Program FilesAtmelAVR ToolsAvrAssembler2Appnotesm8535def.inc&quot; .org 0x00 rjmp main main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 in r16,PinA in r17,PinB and r16,r17 ori r16,0xf0 out PortC,r16 here: rjmp here
  • 607. Operasi Logika
  • 608. Operasi Logika
  • 609. Operasi Logika
  • 610. Operasi Logika
  • 611. Operasi Percabangan sbic (skip if bit in I/O is cleared) :Skip jika bit I/O yang diuji clear sbis (skip if bit in I/O is set) :Skip jika bit I/O yang diuji set sbrc (skip if bit in register is clear) : Skip jika bit dalam register yang diuji clear cp (compare) : Membandingkan isi dua register mov (move) : Meng-copy isi dua register
  • 612. Operasi Percabangan cpi (compare with immediate) : Membandingkan isi register dengan konstanta tertentu. breq (branch if equal) : Lompat ke label tertentu jika suatu hasil perbandingan adalah sama. brne (branch if not equal) : Lompat ke label tertentu jika suatu hasil perbandingan adalah tidak sama. rjmp (relative jump) : Lompat ke label tertentu. rcall (relative call) : Memanggil subrutin. ret (return) : Keluar dari sub rutin.
  • 613. Operasi Percabangan
  • 614. Operasi Percabangan
  • 615. .include &quot;C:Program FilesAtmelAVR ToolsAvrAssembler2Appnotesm8535def.inc&quot; .org 0x00 rjmp main main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ldi r17,0x05 Isi_ulang: ldi r16,0x0a kurang: dec r16 cpi r16,0x00 brne kurang dec r17 cpi r17,0x00 brne isi_ulang here: rjmp here
  • 616. LECTURE 19 INTERUPSI
  • 617. INTERUPSI
    • Interupsi adalah kondisi yang memaksa mikrokontroler menghentikan sementara eksekusi program utama untuk mengeksekusi rutin interrupt tertentu / Interrupt Service Routine (ISR)
    • Setelah melaksanakan ISR secara lengkap, maka mikrokontroler akan kembali melanjutkan eksekusi program utama yang tadi ditinggalkan.
  • 618. INTERUPSI
  • 619. SUMBER INTERUPSI
  • 620. REGISTER MCUCR
  • 621. REGISTER MCUCR
  • 622. REGISTER MCUCR
  • 623. REGISTER GICR
  • 624. REGISTER GICR
  • 625. SIMPLE PROGRAM EXAMPLE
    • .include &quot;C:Program FilesAtmelAVR ToolsAvrAssembler2Appnotesm8535def.inc&quot;
    • .org 0x0000
    • rjmp main
    • .org 0x0001
    • rjmp ex_int0
    • main:
    • ldi r16,low(RAMEND)
    • out SPL,r16
    • ldi r16,high(RAMEND)
    • out SPH,r16
    • ldi r16,0xff
    • out ddrd,r16
    • out PortD,r16
    • set_int:
    • ldi r17,0b01000000
    • out GICR,r17
    • ldi r17,0b00000000
    • out MCUCR,r17
    • sei
    • Loop: rjmp loop
    • ex_int0:
    • push r16
    • in r16,SREG
    • push r16
    • ldi r17,0xff
    • out ddra,r17
    • out PortA,r17
    • pop r16
    • out SREG,r16
    • pop r16
    • reti
  • 626. LECTURE 20 TIMER / COUNTER
  • 627. TIMER
    • 1. Prescaler
    • Timer pada dasarnya  menghitung pulsa clock.
    • Frekuensi pulsa clock yang dihitung bisa sama dengan frekuensi crystal yang dipasang atau dapat diperlambat menggunakan prescaler dengan faktor 8, 64, 256 atau 1024.
  • 628. TIMER
    • Berikut penjelasannya :
    • Sebuah AVR menggunakan crystal dengan frekuensi 8 MHz dan timer yang digunakan adalah timer 16 bit, maka maksimum waktu timer yang bisa dihasilkan adalah :
    • TMAX = 1/fCLK x (FFFFh+1)
    • = 0.125uS x 65536
    • = 0.008192 sekon = 8,192 milisekon
  • 629. TIMER
    • Ketika presacaler digunakan, waktu timer dapat diperpanjang namun tingkat ketelitiannya menjadi turun.
    • Misalnya dengan prescaler 1024 nilai timer akan bertambah 1 setiap kelipatan 1024 pulsa dan membutuhkan waktu 1/fCLK x 1024 = 0.125uS x 1024 = 128 uS
    • bandingkan tingkat resolusi ini jika tanpa precsaler (0.125uS).
  • 630. TIMER
    • 2. Timer 16 Bit Normal Mode
    • Pada mode normal, TCNT1 akan menghitung naik dan membangkitkan interrupt Timer/Counter 1 ketika nilainya berubah dari 0xFFFF ke 0x0000.
    • Seringkali kita menganggap untuk menggunakan timer cukup dengan memasukkan nilai yang diinginkan ke TCNT1 dan menunggu sampai terjadi interrupt.
  • 631. TIMER
    • Ini menjadi benar pada timer yang menghitung mundur, tetapi untuk timer yang menghitung maju, maka anda harus memasukkan nilai 65536-(timer value) ke dalam TCNT1.
  • 632. TIMER
    • Ini menjadi benar pada timer yang menghitung mundur, tetapi untuk timer yang menghitung maju, maka anda harus memasukkan nilai 65536-(timer value) ke dalam TCNT1.
  • 633. TIMER
    • 3. Register Timer 16 Bit
    • • TCNT1 (Timer/Counter1 Register) digunakan untuk menyimpan nilai timer yang diinginkan.
    • TCNT1 dibagi menjadi 2 register 8 bit yaitu TCNT1H dan TCNT1L.
  • 634. TIMER
    • TIMSK & TIFR
    • Timer Interrupt Mask Register (TIMSK) dan Timer Interrupt Flag Register (TIFR) digunakan untuk mengendalikan interrupt mana yang diaktifkan dengan cara melakukan setting pada TIMSK dan untuk mengetahui interrupt mana yang sedang terjadi.
  • 635. TIMER
  • 636. TIMER 1
  • 637. TIMER
  • 638. TIMER
  • 639. TIMER
  • 640. TIMER
  • 641. TIMER
  • 642. TIMER
  • 643. TIMER
  • 644. TIMER .include &quot;m8535def.inc&quot; .equ timer_value = 0xD5D0 .org 0x0000 rjmp mulai mulai: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ulang: ldi r16,0xff out ddra,r16 out PortA,r16 rcall timer1d ldi r16,0x00 out PortA,r16 rcall timer1d rjmp ulang timer1d: ldi r16,0b00000100 ;aktifkan enable ;interupt out TIMSK,r16 ldi r16,high(timer_value) ;masukkan nilai ;timer out TCNT1H,r16 ldi r16,low(timer_value) out TCNT1L,r16 ldi r16,0b00000101 ;masukkan ;prescaler 1024 out TCCR1B,r16 looptimer: in r17,TIFR sbrs r17,TOV1 ;tunggu sampai timer1 ;overflow set rjmp looptimer ldi r16,0b00000100 ;TOV1 dinolkan ;dgn memberi logika 1 out TIFR,r16 ret
  • 645. NOTE R27-R31
  • 646. NOTE R27-R31
  • 647. INTERUPSI
  • 648. SUMBER INTERUPSI
  • 649. REGISTER MCUCR
  • 650. REGISTER MCUCR
  • 651. REGISTER MCUCR
  • 652. REGISTER GICR
  • 653. REGISTER GICR 0
  • 654. SIMPLE PROGRAM EXAMPLE
    • .include &quot;C:Program FilesAtmelAVR ToolsAvrAssembler2Appnotesm8535def.inc&quot;
    • .org 0x0000
    • rjmp main
    • .org 0x0001
    • rjmp ex_int0
    • main:
    • ldi r16,low(RAMEND)
    • out SPL,r16
    • ldi r16,high(RAMEND)
    • out SPH,r16
    • ldi r16,0xff
    • out ddrd,r16
    • out PortD,r16
    • set_int:
    • ldi r17,0b01000000
    • out GICR,r17
    • ldi r17,0b00000000
    • out MCUCR,r17
    • sei
    • Loop: rjmp loop
    • ex_int0:
    • push r16
    • in r16,SREG
    • push r16
    • ldi r17,0xff
    • out ddra,r17
    • out PortA,r17
    • pop r16
    • out SREG,r16
    • pop r16
    • reti
  • 655. LECTURE 21 Analog To Digital Converter Internal
  • 656. ADC INTERNAL
  • 657. ADC INTERNAL
  • 658. ADC LAYOUT
  • 659. REGISTER ADMUX
    • Inisialisasi ADC meliputi proses penentuan clock, tegangan referensi, format output data, mode pembacaan.
  • 660. REGISTER ADMUX
    • Bit REFS1 dan REFS0 (Reference Seection Bit)
  • 661. REGISTER ADMUX
    • Bit ADLAR (ADC Left Adjust Result)-pemilih mode data keluaran ADC melibatkan register ADCH dan ADCL
  • 662. REGISTER ADMUX
    • Bit ADLAR (ADC Left Adjust Result)-pemilih mode data keluaran ADC melibatkan register ADCH dan ADCL
  • 663. REGISTER ADMUX
    • Bit MUX4..0 (Analog Channel and Gain Selection Bit)
  • 664. REGISTER ADMUX
    • Bit MUX4..0 (Analog Channel and Gain Selection Bit)
  • 665. REGISTER ADMUX
    • Bit MUX4..0 (Analog Channel and Gain Selection Bit)
  • 666. REGISTER ADCSRA
    • Manajemen dan Sinyal Kontrol dan Status ADC (ADC Control and Status Register A)
    • ADEN (ADC Enable)  ‘1’ ADC enable, ‘)’ turn off.
    • Jika selama konversi bit ini di’0’ maka konversi akan dihentikan
  • 667. REGISTER ADCSRA
    • ADSC (ADC Start Conversion)  bit penanda mulainya konversi.
    • Pada mode single conversion  setiap mau konversi bit ini diset
    • Pada mode free running  hanya saat konversi pertama kali bit ini diaktifkan
    • ADSC akan dapat dibaca ‘0’ selama konversi dalam proses, pemberia logika ‘0’ tidak akan berefek
  • 668. REGISTER ADCSRA
    • ADATE (ADC Auto Trigger Enable)  bit pengatur aktivasi picu otomatis.
    • Bernilai awal 0, Jika bernilai ‘1’ maka operasi konversi ADC akan dimulai pada saat transisi positif dari sinyal picu yang dipilih
    • Pemilihan sinyal picu menggunakan bit ADTS pada SFIOR
  • 669. REGISTER ADCSRA
    • ADIF (ADC Interrupt Flag)  bit penanda akhir suatu konversi ADC. Bernilai awal ‘0’, jika bernilai ‘1’ maka konversi telah selesai dan data siap diakses
  • 670. REGISTER ADCSRA
    • ADIE (ADC Interrupt Enable)  bit pengatur aktivasi interupsi yang berhubungan dengan akhir konversi ADC
    • Bernilai awal ‘0’. Jika bernilai ‘1’ dan sebuah konversi telah selesai, sebuah interupsi akan dieksekusi
  • 671. REGISTER ADCSRA
    • ADPS[2..0] (ADC Prescaler Select Bit)  bit pengatur clock ADC. (reference fosc)
  • 672. SFIOR (Special Function IO Register)
    • ADTS[7..5] (ADC Auto Trigger Source)  bit pengatur sumber picu eksternal ADC. Befungsi jika ADATE pada ADCSRA bernilai 1
    • Bernilai awal 000 sehingga ADC pada free running dan tidak ada interupsi
  • 673. SFIOR (Special Function IO Register)
  • 674. SFIOR (Special Function IO Register)
  • 675. Simple Program – Linetracking Robots
  • 676. Simple Program – Linetracking Robots
  • 677. Simple Program – Linetracking Robots
  • 678. Simple Program – Linetracking Robots #include <mega8535.h> #include <delay.h> #define ADC_VREF_TYPE 0xE0 // Read the 8 most significant bits // of the AD conversion result unsigned char read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCH; } // Declare your global variables here /*prosedur kontrol motor*/ void maju(void) { PORTC.2=1; //robot maju PORTC.3=1; } void kanan(void) { PORTC.2=0; //robot kanan PORTC.3=1; } void kiri(void) { PORTC.2=1; //robot kiri PORTC.3=0; } void henti(void) { PORTC.2=0; //robot henti PORTC.3=0; }
  • 679. Simple Program – Linetracking Robots void main(void) { unsigned char data_adc1,data_adc2,data_adc3; // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTC=0x00; DDRC=0xFF;
  • 680. Simple Program – Linetracking Robots // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;
  • 681. Simple Program – Linetracking Robots // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00;
  • 682. Simple Program – Linetracking Robots // ADC initialization // ADC Clock frequency: 691,200 kHz // ADC Voltage Reference: Int., cap. on AREF // ADC High Speed Mode: Off // ADC Auto Trigger Source: None // Only the 8 most significant bits of // the AD conversion result are used ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x84; SFIOR&=0xEF; //adlar='1' ;adch adc9-adc2 while (1) { // jika ADC<5=gelap > abu2 tua ke cerah data_adc1=read_adc(0); data_adc2=read_adc(1); data_adc3=read_adc(2); if((data_adc1>5)&&(data_adc2>5)&&(data_adc3>5)) //sensor detek putih semua { henti(); }; if((data_adc1>5)&&(data_adc2<5)&&(data_adc3>5)) //putih-hitam-putih { maju(); }; if((data_adc1>5)&&(data_adc2>5)&&(data_adc3<5)) //putih-putih-hitam { kiri(); }; if((data_adc1<5)&&(data_adc2>5)&&(data_adc3>5)) //hitam-putih-putih { kanan(); }; }
  • 683. LECTURE 22 Analog Comparator
  • 684. Analog Komparator
    • Berguna untuk membandingkan dua buah input analog
    • Misal membandingkan output level dari suatu sensor dengan tegangan referensi tertentu
    • Biasanya setelah dibandingkan akan dibuat aksi lain untuk menjalankan suatu aktuator
  • 685. Analog Komparator
  • 686. Analog Komparator
    • Punya 2 masukan yaitu AIN0 dan AIN1
    • Jika AIN0 > AIN1 output komparator akan menuju saturasi positif atau ‘1’
    • Jika AIN0 < AIN1 output komparator akan menuju saturasi negatif atau ‘0’
  • 687. Analog Komparator
    • Dari output komparator analog tersebut menuju ke logika Flag Interupsi (ACI Analog Comparator Interrupt Flag) dan Flag Output Komparator Analog (ACO Analog Comparator Output Flag)
  • 688. Analog Komparator
    • AIN0 dan AIN1 terletak di Port B maka pada pin tersebut harus dibuat sebagai input dengan membuat logika rendah pada DDRB,2 dan DDRB,3
    • Logika rendah pada PortB 2 dan 3 untuk menonaktifkan resistor pullup internal
  • 689. Analog Komparator
    • ACD – (Analog Comparator Disable) jika ingin menonaktifkan komparator analog (menghemat daya) diberikan logika tinggi ke bit ACD. Sebelum mematikan komparator analog , interupsi komparator analog juga sebaiknya dimatikan untuk menghindari timbulnya interupsi.
  • 690. Analog Komparator
    • ACBG – (Analog Comparator Bandgap Select) jika diberikan logika rendah maka pin non inverting komparator terhubung ke pin AIN0, jika diberikan logika tinggi maka masukan non inverting terhubung ke fixed bandgap reference voltage.
  • 691. Analog Komparator
    • ACO – (Analog Comparator Output) output dari komparator analog yang dapat dibaca untuk kita ketahui flagnya
  • 692. Analog Komparator
    • ACI – (Analog Comparator Interrupt Flag) bit bernilai tinggi apabila output komparator mentrigger salah satu mode interupsi yang didefinisikan oleh bit ACIS. Demikian juga saat Global Interrupt dan interupsi komparator analog aktif
  • 693. Analog Komparator
    • ACIE – (Analog Comparator Interrupt Enable) jika bit bernilai ‘1’ dan bit global interrupt juga aktif, maka interupsi komparator analog juga aktif. Jika ‘0’ maka tak aktif
  • 694. Analog Komparator
    • ACIC – (Analog Comparator Capture Enable) menghubungkan output dari komparator analog dengan input Capture Timer/Counter1.
    • Memungkinkan menghitung waktu yang diperlukan antara 2 kejadian yang terjadi pada komparator analog dengan mengeset ‘1’, TIMSK juga harus diset.
  • 695. Analog Komparator
    • ACIS – (Analog Comparator Interrupt Mode Select) dapat diatur mode logika yang menyebabkan trigger pada bit ACI.
    • Ada tiga kemungkinan yaitu saat komparator analog berubah dari 0 ke 1, 1 ke 0 dan saat terjadi perubahan logika. Jika mau mengubah kondisi interupsinya dimatikan dahulu
  • 696. Analog Komparator
    • Memungkinkan untuk memilih pada pin pada AD0…7 untuk menggantikan inverting input komparator analog
    • Mux ADC digunakan sebgai input, sehingga fungsinya sebagai ADC dimatikan
    • Jika ACME diset (ACME pada SFIOR) dan ADC dimatikan (ADEN pada ADCSRA dberikan logika ‘0’) dan MUX2..0 pada ADMUX diseting seperti pada tabel diatas maka analog comparator negative input akan diberikan pada jalur ADC0..7
    • Jika ACME diclear atau ADEN diset, AIN1 dikembalikan lagi ke asalnya
  • 697. Contoh Program
    • #include <mega8535.h>
    • void main(void)
    • {
    • PORTA=0x00;
    • DDRA=0x00;
    • PORTB=0x00;
    • DDRB=0x00;
    • PORTC=0x00;
    • DDRC=0xFF;
    • PORTD=0x00;
    • DDRD=0x00;
    • TCCR0=0x00;
    • TCNT0=0x00;
    • OCR0=0x00;
    • TCCR1A=0x00;
    • TCCR1B=0x00;
    • TCNT1H=0x00;
    • TCNT1L=0x00;
    • OCR1AH=0x00;
    • OCR1AL=0x00;
    • OCR1BH=0x00;
    • OCR1BL=0x00;
    • ASSR=0x00;
    • TCCR2=0x00;
    • TCNT2=0x00;
    • OCR2=0x00;
    • MCUCR=0x00;
    • MCUCSR=0x00;
    • // Analog Comparator initialization
    • // Analog Comparator: On
    • // Analog Comparator Input Capture by Timer/Counter 1: Off
    • // Analog Comparator Output: On
    • ACSR=0x20;
    • SFIOR=0x00;
    • // Global enable interrupts
    • #asm(&quot;sei&quot;)
    • while (1)
    • {
    • if (ACSR.5==0) {PORTC=0;}
    • else
    • {PORTC=0xff;}
    • };
    • }
  • 698. LECTURE 23 EEPROM
  • 699. EEPROM
    • Electrically Erasable Programmable Read Only Memory
    • 512 byte, 100 ribu kali baca atau tulis
    • Non volatile (tidak menguap)
    • Dapat menyimpan data saat catu daya diambil dan dapat diubah saat program berjalan
    • Berguna menyimpan nilai yang tidak boleh hilang seperti nilai kalibrasi, nomor ID, password, dll
  • 700. EEPROM
    • Proses penulisan membutuhkan waktu antara 2,5ms sampai dengan 4 ms.
    • Jadi program yang dibuat mengecek juga apakah sudah selesai jika ingin menulisi dengan data baru.
    • Register yang mengatur kerja EEPROM adalah EECR, EEAR, EEDR
  • 701. EECR
    • Eeprom Control Register
    • Mengontrol operasi dari EEPROM
  • 702. EECR
    • Bit 7..4 reserved dan selalu ‘0’ jika dibaca
    • Bit 3 EERIE (Eeprom Ready Interrupt Enable) – memberi logika ‘1’ akan mengenabel Eeprom Ready Interrupt jika bit I dalam SREG diset. ‘0’ akan mendisable interupsi, akan menimbulkan interupsi yang konstan ketika EEWE (Eeprom Write Enable) diclear
  • 703. EECR
    • Bit 2 EEMWE (Eeprom Master Write Enable) – mengeset ‘1’ bit ini akan EEPROM dapat ditulisi.
    • Ketika EEMWE diset, pengesetan EEWE selama 4 siklus clock akan menulis data ke alamat yang dipilih pada EEPROM, jika EEMWE ‘0’ maka pengesetan EEWE tidak berefek.
    • Jika EEMWE diset oleh software, hardware akan mengclear setalah 4 siklus clock
  • 704. EECR
    • Bit 1 EEWE (Eeprom Write Enable) – sinyal EEWE adalah strobe penulisan ke EEPROM
    • Jika alamat dan data telah diset dengan benar, EEWE diset untuk menulis nilai ke dalam EEPROM
    • EEMWE harus diset sebelum EEWE diset, jika tidak proses tidak berjalan
  • 705. EECR
    • Bit 0 EERE (Eeprom Read Enable) – sinyal EEWE adalah strobe pembacaan ke EEPROM
    • Jika alamat dan data telah diset dengan benar pada EEAR (Eeprom Address Register), EEWE diset agar memicu pembacaan EEPROM
    • Saat EEPROM dibaca, CPU halted selama 4 siklus clock sebelum instruksi berikutnya dieksekusi.
    • Jangan ada perubahan register selama pembacaan
  • 706. EEAR
  • 707. EEAR
  • 708. CODE
  • 709. CODE
  • 710. CODE // Declare your global variables here char buf[33]; eeprom int alfa; // pemesanan tempat untuk variabel alfa di EEPROM void main(void) { // Declare your local variables here int i;
  • 711. CODE // LCD module initialization lcd_init(16); lcd_gotoxy(0,0); lcd_putsf(&quot;Data EEPROM alfa&quot;); lcd_gotoxy(0,1); sprintf(buf,&quot;%x &quot;,alfa); lcd_puts(buf); alfa=0x55; lcd_gotoxy(6,1); sprintf(buf,&quot;%x &quot;,alfa); lcd_puts(buf); i=alfa; lcd_gotoxy(12,1); sprintf(buf,&quot;%x &quot;,i); lcd_puts(buf);
  • 712. CODE eeprom int alfa=1; // meletakkan nilai 1 ke EEPROM dengan nama var alfa dengan tipe data integer Eeprom char beta //memesan tempat di eeprom utk var beta tipe data char Eeprom longarray[5] //memesan tempat di eeprom untuk array sebanyak 5 tipe data long Eeprom char string[ ]=“Hello” //meletakkan string hello di eeprom Penulisan ke eeprom saat program berjalan … Void main(void) Int I; .. Alfa=0x55; //tulis lgs ke eeprom di var alfa yg telah dipesan diawal
  • 713. CODE Pembacaan dari eeprom saat program berjalan … Void main(void) Int I; .. i=alfa; //baca lgs dari eeprom di var alfa yg telah dipesan diawal
  • 714. LECTURE 24 USART
  • 715. USART
    • Sistem USART ATMEGA8535 memiliki bebrapa keuntungan dibandng sistem UART
    • 1. Operasi full duplex
    • 2. Mode Asinkron dan Sinkron
    • 3.Mendukung komunikasi multiprosesor
    • 4.Mode kecepatan transmisi berorde Mbps
  • 716. USART
  • 717. USART
    • Inisialisasi USART
    • Berikut register yang perlu disetting untuk mengatur komunikasi serial USART :
    • UBRR (USART Baud Rate Register)
    • UCSRB (USART Control and Status Register B)
    • UCSRC (USART Control and Status Register C)
  • 718. USART
    • UBRR (Usart Baud Rate Register)
    • Besar 16 bit terdiri dari UBRRH dan UBRRL bit 11..0
    • URSEL [bit 15] - bit pemilih antara akses UBRR dan UCSRC, disebabkan krn UBRRH dan UCSRC menempati lokasi yang sam, untuk akses UBRR bit bernilai 0.
    • UBRR [11..0] – bit penyimpan konstanta kecepatan komunikasi serial
  • 719. USART
    • UBRR (Usart Baud Rate Register) operation mode
  • 720. USART
    • UCSRA (USART Control and Status Register A)
    • RXC (Usart Receive Complete) – bernilai 1 jika ada data atau yang belum terbaca, bernilai 0 jika tidak ada data
    • TXC (Usart Transmit Complete) – benilai 1 jika keseluruhan data sudah terkirim
  • 721. USART
    • UDRE (Usart Data Register Empty) – interupsi yg akan aktif jika UDRIE (Usart Data Register Empty Interrupt) pada UCSRB diset 1. UDRE bernilai 1 setelah kondisi resetnya untuk mengindikasikan transmiter sudah siap.
  • 722. USART
    • FE (Framming Error) – bernilai 1 jika ada error pada proses penerimaan data
    • DOR (Data OverRun) – bernilai 1 jika register penerimaan penuh dan terdapat data baru yang menunggu
    • PE (Parity Error) – bernilai 1 jika ada kesalahan pada parity
  • 723. USART
    • U2X (Double the USART Transmission Speed) -
  • 724. USART
    • MPCM (Multiprocessor Communication Mode) – pada proses multiposesor – jika diset ‘1’ maka penerimaan USART yang tdk ada informasi alamat akan diabaikan.
  • 725. USART
    • RXCIE – RX Complete Interrupt Enable – mengatur aktivasi interupsi penerimaan data serial. Initial value ‘0’, penerimaan data berdasar sistem pooling.
    • Jika bernilai ‘1’ dan jika bit RXC pada UCSRA bernilai ‘1’ maka interupsi penerimaan data serial akan dieksekusi.
  • 726. USART
    • TXCIE – TX Complete Interrupt Enable - mengatur aktivasi interupsi penerimaan data serial. Initial value ‘0’.
    • Jika bernilai ‘1’ dan jika bit TXC pada UCSRA bernilai ‘1’ maka interupsi pengiriman data serial akan dieksekusi.
  • 727. USART
    • UDRIE – Usart Data Register Empty Interrupt Enable - mengatur aktivasi interupsi yang berhubungan dengan kondisi bit UDRE pada UCSRA. Initial value ‘0’
    • Jika bernilai ‘1’ maka interupsi akan terjadi hanya jika bit UDRE bernilai ‘1’.
  • 728. USART
    • RXEN – Receiver Enable – merupakan bit aktivasi penerima data serial. Initial value ‘0’
    • Jika bernilai ‘1’ maka penerima data serial diaktifkan.
  • 729. USART
    • TXEN – Transmitter Enable – merupakan bit aktivasi pengirim data serial. Initial value ‘0’
    • Jika bernilai ‘1’ maka pengirim data serial diaktifkan.
  • 730. USART
    • UCSZ2 – Character Size – bersama bit UCZ1 dan UCZ0 di reg UCSRC menentukan ukuran karakter serial yang dikirimkan.
    • Pada saat awal, ukuran karakter diset 8 bit.
  • 731. USART
    • RXB8 – Receive Data Bit 8 – jika dioperasikan dalam format 9 bit maka bit ini adalah bit ke 9.
    • Harus dibaca sebelum membaca bit terkecil dari UDR (Usart Data I/O Register)
  • 732. USART
    • TXB8 – Transmitter Data Bit 8 – jika dioperasikan dalam format 9 bit maka bit ini adalah bit ke 9 yang akan dikirimkan.
    • Harus ditulis sebelum menulis bit terkecil dari UDR (Usart Data I/O Register)
  • 733. USART
    • URSEL – Register Select – bit pemilih akses antara UCSRC dan UBRR. Initial value ‘1’ sehingga secara normal akan selalu mengakses register UCSRC.
  • 734. USART
    • UMSEL – USART Mode Select – bit pemilih mode komunikasi serial antara sinkron dan asinkron. Initial value ‘0’ dengan mode asinkron
  • 735. USART
    • UPM[1..0] – USART Parity Mode – bit pengatur paritas
  • 736. USART
    • USBS – USART Stop Bit Select
  • 737. USART
    • UCSZ[1..0] – Character Size
  • 738. USART
    • UCPOL – Usart Clock Polarity – bit pengatur hub antara perubahan data keluaran dan data masukan serial dgn clock sinkronisasi. Berlaku mode sinkron
  • 739. USART CODE
    • .include&quot;m8535def.inc&quot;
    • .def temp =r16
    • .def txbyte =r17
    • .def rxbyte =r18
    • .equ fclock =11059200
    • .equ baud_rate =19200
    • .equ ubbr_value =(fclock / (16*baud_rate)) - 1
    • .org 0x0000
    • rjmp main
    • main: ldi temp,low(ramend)
    • out spl,temp
    • ldi temp,high(ramend)
    • out sph,temp
    • rcall init_usart
    • loop: ldi zl,low(2*msg)
    • ldi zh,high(2*msg)
    • load: lpm
    • mov txbyte,r0
    • cpi txbyte,0
    • breq done
    • rcall usart_tx
    • inc zl
    • rjmp load
    • done: rjmp done
    • init_usart:
    • ldi temp,high(ubbr_value)
    • out UBRRH,temp
    • ldi temp,low(ubbr_value)
    • out UBRRL,temp
    • ldi temp,(1<<RXEN)|(1<<TXEN)|(1<<RXCIE)
    • out UCSRB,temp
    • ldi temp,(1<<URSEL)|(3<<UCSZ0)
    • out UCSRC,temp
    • ret
    • usart_tx:
    • sbis UCSRA,UDRE
    • rjmp usart_tx
    • out UDR,txbyte
    • ret
    • usart_rx:
    • sbis UCSRA,RXC
    • rjmp usart_rx
    • in rxbyte,UDR
    • ret
    • msg:
    • .db &quot;****** Belajar AVR asyik! ******&quot;,13,10,0
  • 740. USART CODE
    • /****Communication Parameters: 8 Data, 2 Stop, No Parity
    • USART Receiver: On
    • USART Transmitter: On
    • USART Mode: Asynchronous
    • USART Baud rate: 19200
    • #include <mega8535.h>
    • #include <stdio.h>
    • // Alphanumeric LCD Module functions
    • #asm
    • .equ __lcd_port=0x15 ;PORTC
    • #endasm
    • #include <lcd.h>
    • #define fosc 11059200
    • #define baud 19200
    • #define ubrr_val (fosc/(16*baud))-1
    • #define RXEN 4
    • #define TXEN 3
    • #define USBS 3
    • #define UCSZ0 1
    • #define USEL 7
    • #define RXC 7
    • void usart_init(unsigned int baudr) {
    • //set baud rate
    • UBRRH=((unsigned char) (baudr>>8)) & (0x7f);
    • UBRRL=(unsigned char) (baudr);
    • //---------
    • UCSRA=0x00;
    • //aktifkan tx
    • UCSRB=((1<<RXEN) | (1<<TXEN));
    • //set frame format: 8 bit, 2 stop bit
    • UCSRC=(1<<USBS) | (3<<UCSZ0) | (1<<USEL);
    • }
  • 741. USART CODE
    • // Declare your global variables here
    • unsigned char lcd_buffer[33];
    • unsigned char usart_rx(void) {
    • while (!(UCSRA & (1<<RXC)));
    • return UDR;
    • }
    • void main(void)
    • {
    • // Declare your local variables here
    • PORTA=0x00;
    • DDRA=0x00;
    • PORTB=0x00;
    • DDRB=0x00;
    • PORTC=0x00;
    • DDRC=0x00;
    • PORTD=0x00;
    • DDRD=0x00;
    • TCCR0=0x00;
    • TCNT0=0x00;
    • OCR0=0x00;
    • TCCR1A=0x00;
    • TCCR1B=0x00;
    • TCNT1H=0x00;
    • TCNT1L=0x00;
    • ICR1H=0x00;
    • ICR1L=0x00;
    • OCR1AH=0x00;
    • OCR1AL=0x00;
    • OCR1BH=0x00;
    • OCR1BL=0x00;
    • ASSR=0x00;
    • TCCR2=0x00;
    • TCNT2=0x00;
    • OCR2=0x00;
    • MCUCR=0x00;
    • MCUCSR=0x00;
    • TIMSK=0x00;
    • ACSR=0x80;
    • SFIOR=0x00;
  • 742. USART CODE
    • usart_init(ubrr_val);
    • // LCD module initialization
    • lcd_init(16);
    • lcd_gotoxy(0,0);
    • lcd_putsf(&quot;RX - TX USART&quot;);
    • while (1)
    • {
    • // Place your code here
    • lcd_buffer[0]=usart_rx();
    • lcd_gotoxy(0,1); lcd_puts(lcd_buffer);
    • printf(&quot;%c&quot;,lcd_buffer[0]);
    • };
    • }
  • 743. LECTURE 25 SECURITY AND FUSE BITS
  • 744. FUSE BITS
    • Bit yang sangat penting untuk mengatur konfigurasi dasar AVR.
    • Bisa terjadi penggunaan timer, counter, USART tidak akan memenuhi spesifikasi.
    • Dalam contoh ini akan diberi contoh menu window dari CodeVision C AVR 2.
  • 745. LECTURE 26 FILE PUSTAKA YANG DISEDIAKAN OLEH CODEVISION AVR 2
  • 746. FILE PUSTAKA
    • FILE PUSTAKA YANG DISEDIAKAN OLEH CODEVISION AVR 2
    • Syntaks:
    • #include <nama file pustaka>
    • #include <lcd.h>
  • 747. FILE PUSTAKA
    • Tipe karakter (ctype.h)
    • Standar I/O (stdio.h)
    • Matematika (math.h)
    • String (string.h)
    • Konversi BCD (bcd.h)
    • Konversi akses memori (mem.h)
    • Tunda (delay.h)
    • LCD (lcd.h)
    • I2C (i2c.h)
    • SPI (spi.h)
    • RTC (ds1302.h, ds1302.h)
    • Suhu (lm75.h, ds1621.h)
  • 748. FUSE BITS
    • Bit yang sangat penting untuk mengatur konfigurasi dasar AVR.
    • Bisa terjadi penggunaan timer, counter, USART tidak akan memenuhi spesifikasi.
    • Dalam contoh ini akan diberi contoh menu window dari CodeVision C AVR 2.
  • 749. FUSE BITS
    • ATMEGA8535 memiliki dua tipe fuse bits yaitu Fuse High Byte dan Fuse Low Byte
  • 750. FUSE BITS
    • ATMEGA8535 memiliki dua tipe fuse bits yaitu Fuse High Byte dan Fuse Low Byte
  • 751. FUSE BITS
  • 752. FUSE BITS
    • 1. BOOTRST – bit pemilih vektor reset. Nilai awal 1 artinya alamat vektor reset di 0x0000h. Jika diset 0 maka alamat reset sesuai bit BOOTSZ1 dan BOOTSZ2.
    • 2. BOOTSZ1 dan BOOTSZ2 – bit pemilih ukuran boot sector. Bernilai awal 00 sehingga memberikan ukuran boot sector sebesar 1024 word dgn alamat boot sector pada 0x0C00h
  • 753. FUSE BITS
    • 3. EESAVE – bit pengatur aktivasi penyimpanan data EEPROM secara permanen. Bernilai awal 1 sehingga opsi ini tidak dilakukan.
    • 4. CKOPT – bit pemrograman sumber clock. Bernilai awal 1 sehingga sumber clock dari internal sebesar 1MHz. Jika bernilai 0 maka sumber clock berasal dari luar.
    • 5. SPIEN – bit aktivasi pemrograman melalui SPI. Tidak bisa diprogram melalui software.
  • 754. FUSE BITS
    • 6. WDTON – bit pengatur aktivasi Watch Dog Timer. Bernilai awal 1 sehingga aktivasi WDT dikendalikan register WDTCTR. Jika bernilai 0 maka WDT selalu aktif.
    • 7. S8535C – mode kerja, bernilai awal 1, maka beberapa fitur yang tidak didukung AT90S8535 dimatikan
  • 755. FUSE LOW BYTE
    • 1. CKSEL [3…0] seperti pada tabel
  • 756. FUSE LOW BYTE
    • 2. SUT1 SUT0 pemilih waktu start up
  • 757. FUSE LOW BYTE
    • 2. SUT1 SUT0 pemilih waktu start up
  • 758. FUSE LOW BYTE
    • 2. SUT1 SUT0 pemilih waktu start up
  • 759. FUSE LOW BYTE
    • 2. BODEN (Brown Out Detection Enable) – bit pengatur aktivasi deteksi tegangan gagal. Bernilai awal 1 sehingga fitur tidak diaktifkan. Jika bernilai 0 dan jika tegangan catu mikro melebihi atau kurang dari level tegangan yang diizinkan maka secara otomatis mikro akan direset.
    • 3. BODLEVEL – level tegangan gagal. Awal 1 diset pada 4V, 0 diset pada 2,7V. Aktif jika BODEN diaktifkan.