MODUL PRAKTEKUM
MIKPROCESSOR DAN MIKROKONTROLER
TAUFIK HIDAYAT
UNIVERSITAS WIRALODRA
i
KATA PENGANTAR
Alhamdulillah, segala puji dan syukur kepada Allah SWT atas segala rahmat, taufik dan hidayah hingga penulis dapat merampungkan penyusunan modul praktekum “microprocessor dan mikrokontroler” ini dapat diselesaikan.
Penulisan modul praktekum ini dilakukan dalam rangka memenuhi perkuliahan microprosesor dan mikrokontroler di lingkungan fakultas teknik komputer, Universitas Wiralodra. Penulis sangat menyadari bahwa penyusunan modul praktekum ini terlaksana dengan adanya motivasi, bimbingan, dan saran dari berbagai pihak. Semoga dengan kehadiran modul praktekum ini dapat memberikan kontribusi bagi mahasiswa yang mengambil mata kuliah microprocessor dan mikrokontroler. Kritikan dan saran yang membantu membangun dapat menghubungi penulis melalui email.
Jakarta, 16 November 2019 Penulis,
1
PENGANTAR MIKROKONTROLER
Dasar Mikrokontroler
Mikrokontroler kalau diartikan berarti pengendali yang berukutan mikro. Sekilas mikrokontroler ini hampir sama dengan mikroposesor. Tetapi mikrokontroler ini memiliki banyak komponen yang saling integrasi didalamnya, seperti counter/timer. Sedangkan mikroprosesor komponennya tidak terintegrasi. Mikroprosesor banyak ditemukan pada komputer yang bertugas untuk memproses berbagai macam data input maupun input dari berbagai sumber. Sedangkan mikrokontroler lebih sesuai dengan tugas yang lebih spesifikasi.
(a) Mikrokontroler (b) Mikroprosesor
Gambar 1. Perbedaan Mikrokontroler dan Mikroprosesor
Arsitektur Mikrokontroler
Arsitektur mikrokontroler dibagi menjadi CISC dan RISC
Complex Intruction Set Computer (CISC) , merupakan jenis mikrokontroler yang mempunyai jumlah instruksi yang sangat komplek dan lengkap. Misalnya : 80C51 (MCS51) dan 68HCI.
CPU Memory
Port I/O
2
Reduce Intruction Set Computer (RISC), merupakan jenis mikrokontroler yang memiliki jumlah intruksi yang sangat sedikit. Pada arsitektur RISC memiliki intruksi sangat sedikit tetapi memiliki banyak register dibandingkan CISC. Selain itu pada arsitektur RISC pada umumnya instruksinta mengeksekusi hanya satu clock cycle dan mode addressing memory. Misalnya ATMELAVR dan National Semiconductor COP8.
Pada program assembly dengan prosesor RISC menjadi sangat komplek dibandingkan dengan program asembly CISC. Karena disebabkan oleh instruksi prosesor RISC merupakan instruksi dasar, instruksi ini pada umumnya hanya memerlukan satu siklus mesin untuk menjalankanya. Namun arsitektur RISC tidak memerlukan hardware yang komplek, prosesor yang tidak rumit. Aristektur mikrokontroler dapat digambarkan sebagai berikut.
3
Perbandingan Mikroprosesor dan Mikrokontroler
Perbedaan antara mikroprosesor dam mikrokontroler sangat signifikan, kalua mikroprosesor merupakan suati chip yang berfungsi pemroses data pada system digital sedangkan mikrokontroler banyak ditemukan pada computer dengan kebutuhan khusus yang berfungsi memproses data dan mengkordinasikan kerja pada suatu computer. Secara fisik mikroprosesor tidak bekerja sendiri tanda adanya dukungan oleh perangkat tambahan seperti RAM, ROM datau I/O. Pada table 1 ini merupakan perbedaan mikroprosesor dan mikrokontroler berdasarkan arsitektur masing-masing.
Tabel 1. Perbedaan Mikroposesor dan Mikrokontroler
Uraian Mikroprosesor Mikrokontroler
Arsitektur Mikroprosesor hanya single unit CPU
Mikrokontroler : ROM, RAM, EPROM, interrupt controller, analog to digital converter, serial interface, parallel interface, timer/counter Memory Mikroprosesor miliki
kapasitas memory ROM kecil, namun didukung memory RAM yang besar untuk system komputer
Memiliki ROM yang besar namun memiliki RAM yang kecil
Software Pada computer, mikroprosesor
mendukung software yang besar
Mikrokontroler yang dapat deprogram dengan program dengan pekerjaan tertentu Aplikasi Sebagai CPU yang
menjadi otaknya suatu komputer
Mikrokontroler hanya dapat bertugas dengan orentasi kendali-kendali
Tipe Mikrokontroler Mikrokontroler ATMEL
Mikrokontroler Atmel ini merupakan keluarga MCS-51 dari Intel Crop. Untuk saat ini mikrokontroler Atmel paling banyak digunakan karena harga yang beredar relative murah dan mudah untuk didapat.
4
Mikrokontroler Atmel ini dapat deprogram dugengan menggunkan port paralel maupun serial. Mikrokontroler tidak hanya beroperasi pada satu chip melainkan beberapa komponen dasar lainnya.
Tabel 2. Tipe Mikrokontroler ATMEL
Tipe Flas Memory RAM EEPROM
AT89C51/AT89S51 4 Kbyte 8 x 128 byte - AT89C52/AT89S52 8 Kbyte 8 x 256 byte - AT89S8252 8 Kbyte 8 x 256 byte 2 Kbyte AT89C53 12-byte 8 x 256 byte - AT89C55 20 Kbyte 8 x 256 byte -
Mikrokontroler PIC
Mikrokontroler jenis peripheral Interface Controller (PIC) merupakan keluarga mikrokontroler tipe RISC diproduksi oleh perusahaan Microchip. Mikrokontroler PIC pertama kalinya dibuat sekitar 1975 demi untuk meningkatkan kinerja pada system I/O. Semua jenis mikrokontroler mempunyai ciri khas hanya yang membedakan adalah jenis memory yang digunakan ada yang menggunakan EEPROM, ada juga yang menggunakan Flash memori, bahkan ada juga yang menggunakan one Time Programmbel (OTP) atau hanya sekali program.
Tabel 3. Tipe Mikrokontroler PIC
Tipe Memori Program Fiture
PIC 16F84 1024 x 14 Flash, 18 pin,
Timer/Counter, WDT
PIC 16C54C 512 x 12 12 I/O, 40 MHz max
WDT
PIC 1400 4096 x 14 ADC, Internal Osc, 12C
PIC 12C5084 512 x 12 8 pin, WDT, Internal Osc ,OTP
5
Mikrokontroler Renesas
Mikrokontroler Renesas merupakan mikrokontroler produsen semikonduktor gabungan antara Hitachi dengan Mitsubishi. Salah satu produknya yang dikenal R8C/Tiny Series merupakan keluarga M16C serinya antara lain R8C/12, R8C/10 yang membedakan hanya kapasitas flash ROM dan sejumlah pin I/O.
Mikrokontroler Maxim
Mikrokontroler Maxim merupakan jenis mikrokontroler yang diproduksi oleh perusahaan Maxim corp. Produk dari mikrokontroler seperti chip mikrokontroler, komponen radio frekuensi serta akuisisi data. Maxim merupakan produsen yang sangat invotatif dalam menghasilan produk yang berteknologi tinggi, seperti mikrokontroler 80C400 yang mendukung jaringan computer.
6
DASAR MIKROKONTROLER
Struktur Mikrokontroler
Blok struktur dari mikrokontroler secara umum terdiri dari beberapa bagian yang saling berhubungan dalam internal bus. Tetapi diagram blok tidaklah sama untuk setiap jenis mikrokontrole tergantung dari fitur yang tersedia pada masing-masing mikrokontroler itu sendiri.
Gambar 3. Diagram blok struktur Mikrokontroler
Pada gambar 3 merupakan struktur dari blok mikrokontroler yang terdiri: 1. Arithmetic and Logic Unit (ALU)
7
2. Accumulator Register
Accumulator Register merupakan register serbaguna yang berfungsi juga sebagai penyimpanan hasil operasi aritmatika dan logika. 3. Internal RAM ( Random Access Memory)
Memori penyimpanan data yang isinya dapat diubah maupun dihapus. RAM sendiri biasanya berisi data variable dan register. 4. Internal ROM
Internal ROM, memori penyimpanan intruksi/program yang isinya tidak dapat diubah maupun dihapus. Program yang tersimpan di ROM biasanya dalam format biner.
5. Port I/O
Port I/O merupakan bagian untuk komunikasi dengan dunia luar, mikrokontroler memanfaatkan terminal I/O untuk komunikasinya. Port tersebut dapat sebagai masukan maupun sebagai keluaran. Salah satu contoh port mikrokontroler sebagai masukan jika peralatan sensor atau switch dihubungkan dengan mikrokontroler dan sebagai keluaran jika perangkay output LED, relay maupun motor dihubungjan dengan mikrokontroler.
8
6. Program Counter
Register khusus yang berfungsi untuk perhitungan atau pencacah eksekusi pada program mikrokontroler.
7. Stack Pointer
Bagian RAM ini mempunyai penyimpanan serta pengambilan baagian dari RAM dara dengan cara khusus. Data yang disimpan dan dibaca tidak dapat dilakukan dengan random. Data yang masuk ke stack pada urutan terakhir merupakan data yang pertama yang akan dibaca kembali.
8. Timer/Counter
Timer dapat digunakan untuk melakukan tiga fungsi yaitu perhitungan suatu interval, perhitungan banyak kejadian dan pembangkit baud rate untuk komunikasi serial.
9. Interrupt Circuit
Rangkaian interupsi merupakan rangkaian yang memiliki fungsi untuk mengendalikan sinyal interupsi baik internal maupin ekternal. Sinyal interupsi akan berhenti eksekusi normal program mikrokontroler untuk melanjutkan sub program dari interupsi.
10. Clock Unit
Mikrokontroler merupakan rangkain logika sekuensial, dimana proses kerjanya melalui sinkronisasi clok maka diperlukan rangkain clock yang menyediakan clok pada seluruh bagian system mikrokontroler.
Prinsip kerja dari Mikrokontroler
Mikrokontroler pada dasarnya bekerja tergantung pada urutan intruksi yang dijalankanya, yaitu intruksi yang ditulis di ROM prinsip kerjanya sebagai berikut:
1. Mikrokontroler akan mengambil data pada ROM di address yang ada pada program counter, selanjutnya program timer/counter ditambah nilainya satu.
9
2. Intruksi yang dijalankan tergantung dari jenis intruksinya seperti membaca, mengedi nilai register, mengaktifkan port, etc.
3. Mikrokontroler akan terus mengulang langkah 1 dan 2 sampai power pada mikrokontroler dimatikan.
Untuk dapat membuat mikrokontroler bekerja maka ada beberapa yang harus dikerjakan:
1. Membuat program sesuai kebutuhan, karena mikrokontroler memiliki bahasa pemrograman sendiri.
2. Membuat program menggunakan teks editor dimana setelah program selesai di coding lalu dikomplier. Tujuan dari komplier untuk mengubah program yang ditulis.
3. Setelah program dikomplier dalam bentuk .hex selanjut file tersebut ditanam pada IC mikrokontroler dengan bantuan perangkat tambahan downloader yang sesuai jenis mikrokontrolernya.
10
MIKROKONTROLER ATMega8535
Pengantar Mikrokontroler ATmega8535
Mikrokontroler AVR pertama kali masuk dipasaran sekitar tahun 1997 oleh perusahaan yang bernama ATMEL. Produsen yang terkenal dengan produk mikrokontroler pada seriAT89S51/52 yang sampai dengan sekarang. Mikrokontroler seri AT89S51/52 masih konsisten mempertahankan arsitektur dan set intruksi dasar 8031 dari perusahaan INTEL. Mikrokontroler AVR mengklain bahwa memiliki set instruksi dan arsitektur yang baru dengan membedakan arsitektur sebelumnya.
Beberapa produsen yang membuat mikrokontroler seperti intel, Microchip, Winbond, Philip, Atmel, Xemics etc. Dari beberapa vendor yang paling popular digunakan mikrokontroler buatan Atmel. Mikrokontroler AVR mempunyai arsitektur RISC 8 bit, dimana semua intruksinya dibungkus dalam kode 16 bit dan secara garis besar intruksi dieksekusi dalam satu siklus clock, berbeda dengan intruksi MCS-51 membutuhkan setidaknya 12 siklus clock. Hal ini terjadi karena kedia jenis mikrokontroler memiliki arsitektur yang berbeda. Sedangkan AVR mempunyai teknologi RISC sedangkan MCS-51 berteknologi CISC. Mikrokontroler AVR memiliki jenis program Flash yang dapat dichip berulang-ulang.
Tabel 4. Seri Mikrokontroler AVR
Tipe AVR Program Memory
RAM EPROM PIN I/O
Kemasan Catatan
ATtiny2 1 - - 6 8DIP,8SOIC Int.Osc
ATtiny3 1 - 64 6 8DIP,8SOIC Int.Osc
ATtiny15L 1 - 64 6 8DIP,8SOIC Comparator,
PWM,ADC, Int Osc
ATtiny28 2 - - 20 28DIP,32TQFP Int.Osc
AT90S300 1 - 38 15 20DIP,20SOIC,20SS0P Int.Osc
11
UART, PWM
AT90S2323 2 38 38 3 8DIP,8SOIC -
AT90S2343 2 38 256 4 8DIP,8SOIC Int.Osc
AT90S4433 4 38 53 20 28DIP,32TQFP Comparator,
UART, SPI,PWM,ADC
AT90S8515 8 53 53 32 40DIP,44PLCC,44TQFP Comparator,
UART, SPI,PWM
AT90S8535 8 53 53 32 40DIP,44PLCC,44TQFP Comparator,
UART,
SPI,PWM,ADC
ATmega8 8 1K 53 23 28DIP, 32MDIP,32TQFP Comparator,Int.
Osc, UART, SPI,PWM,ADC
ATmega161 16 1K 53 35 40DIP,44TQFP Comparator,Int.
Osc, UART, SPI,PWM
ATmega163 16 1K 53 32 40DIP,44TQFP Comparator,Int.
Osc, UART, SPI,PWM,ADC
ATmega323 32 4K 4K 32 40DIP,44TQFP Comparator,
UART, SPI,PWM,ADC,I n.Osc ATmega13 38 4K 4K 48 64TQFP Comparator, UART, SPI,PWM,ADC ATmega38 38 4K 4K 48 64TQFP Comparator, UART, SPI,PWM,ADC,I n.Osc
Mikrokontroler AVR dikelompokan menjadi 4 kelas : keluarga ATtiny, AT90Sxx, ATmega dan AT86RFxx. Pada prinsipnya yang membedakan dari masing-masing kelas AVR adalah memori, peripheral dan fungsinya sedangkan dari sisi arsitektur dan intruksinya hamper sama. Blok diagram mikrokontroler ATmega8535 terdapat pada Gambar 1. Mikrokontroler ATmega8535 mempunyai teknologi RISC dengan kecepatan maksimal 16 MHz yang membuat ATmega8535 lebih cepat dari MCS 51. Bagian yang dimiliki mikrokontroler ATmega8535:
12
1. Memiliki I/O : 32 PIN yang terdiri Port A, B, C, dan D 2. Memiliki ADC 10 bit : 8 saluran
3. Tiga Timer/Counter 4. CPU terdiri 32 register 5. Watchdoh timer
6. Memilik SRAM 53 byte
7. Memory Flash 8 Kb mempunyai kemampuan Reas While Write 8. Unit Interupsi ekternal dan internal
9. Port antarmuka SPI 10. EEPROM 53 byte
11. Antarmuka komparator analog 12. Port USART untuk komunikasi serial
Konfigurasi PIN Mikrokontroler ATmega8535
13
Fungsi dari Pin Mikrokontroler pada Gambar 5 sebagai berikut: 1. VCC, pin yang berfungsi sumber daya
2. GND, pin untuk inputan ground
3. Port A (PA0…PA7) , pin I/O dua arah dan pin inputan ADC
4. Port B (PB0..PB7), pin I/O dua arah dan pin berfungsi khusus, seperti Timer/Counter, komparator analog, dan SPI
5. Port C (PC0…PC7), pin I/O dua arah dan pin berfungsi khusus, seperti TWI, komparator analog dan Timer Oscillator
6. Port D (PD0…PD7), pin I/O dua arah dan pin berfungsi khusus, seperti komparator analog, interupsi eksternal dan komunikasi serial 7. RESET, pin untuk mereset mikrokontroler
8. XTAL1 dan XTAL2 merupakan pin inputan clock ekstenal 9. AVCC merupakan pin inputan tegangan ADC
14
ORGANISASI MEMORY DAN INTRUKSI
MIKROKONTROLER ATmega8535
Organsasi Memori Mikrokontroler ATmega8535
Progam dan data yang ada pada computer maupun mikrokontroler disimpan dalam memori. Memori yang diakses prosesor ini terdiri ROM dan RAM, perbedaan ROM dan RAM ini adalah kalua ROM hanya bisa dibaca sedangkan RAM bisa ditulis maupun dibaca. RAM ini bersifat volatile yang artinya data yang tersimpan dalam memori akan hilang jika sumber daya terputus, sedangkan ROM bersifat non-volatile yang artinya data yang tersimpan dalam memori dan tidak akan hilang walapun tegangan sumber daya terputus.
Mikrokontroler ATmega mempunya ruang pengalamatan memori data dan memori program yang terpisah. Memori data dibagi menjadi tiga bagian yaitu 32 register umum, 64 register I/O dan 53 byte SRAM internal. General Purpose Register (GPR) menempati space data pada alamat paling bawah yaitu $00 - $1F. Sedangkan register khusus untuk penanganan I/O dan control terhadap mikrokontroler seperti control register, fungsi I/O, timer/counter menempati 64 alamat sebagai berikut dari $20 - $5F. Alamat memori unti SRAM 53 byte, pada lokasi $60 -$25F. Pada gambar 6 merupakan konfigurasi memori data pada Mikrokontroler ATmega8535.
15
Gambar 6. Konfigurasi memori Mikrokontroler ATmega8535
Memori program terletak pada Flash PEROM yang tersusun dalam word / 2 byte dikarenakan setiap intruksi memiliki lebar 16 bit / 32 but. Mikrokontroler ATmega8535 memiliki 4 Kbyte x 16 bit Flash PEROM dengan alamat mulai dari $000 - $FFF. Mikrokontroler ATmega8535 memiliki 3 bit program counter sehingga mampu mengalamati isi Flash. Pada gambar 7 merupakan memori program ATmega8535.
16
1. General Purpose Register (GPR)
Register file pad gambar 8 optimal AVR yang dikembangkan dengan arsitektur RISC instruksi set. Untuk mencapai performance serta fleksibiltas yang diperlukan, yang mengikuti I/O direncanakan mendukung register file:
Satu 8 bit output operasi , satu 8 bit hasil input Dua 8 bit output operasi, satu 8 bit hasil input Satu 16 bit output operasi, satu 16 bit hasil input Satu 16 bit output operasi, satu 16 bit hasil input
Gambar 8. CPU General Purpose Working Register
2. Register I/O
Semua I/O serta peripheral ATmega terletak didalam ruang I/O. Lokasi I/O diakses dengan IN dan OUT instruksi. Transfer data antara 32 GPR dan ruang I/O. Register I/O mempunyai alamat antara 0x00 – 0x1F. bit langsung diakses menggunakan SBI dan CBI intruksi. Diregister ini nilai single bit dapat dicek dengan menggunakan SBIS dan SBIC intruksi. Bila menggunakan intruksi IN dan OUT maka alamat I/O
17
yang digunakan mempunyao rentang $00 sampai $3F sedangkan pengaksesan dilakukan menggunakan SRAM, nilai $20 dan harus ditambahkan pada alamat ini.
3. SRAM
Mikrokontroler ATmega8535 memiliki memori yang beruapa SRAM yang mempunyai kapasitas 53 byte. Lokasi memori SRAM dalam peta memori ATmega ditunjukan pada memoru data yang terdiri dari 32 untuk alamat Register File, 64 I/O Register, dan 53 SRAM. Pengalamatan memori data ini mencakup 5 mode pengalamatan : mode langsung, mode tidak langsung, mode langsung dengan pergeseran, mode tidak langsung predecrement dan mode tidak langsung post-increment.
Set Instruksi pada ATmega8535
Mikrokontroler Atmel mempunyai 28 macam instruksi asembler utama yang harus dipelajari, namun terdapat beberapa instruksi yang bila dieksekusi menghasilkan kode yang sama. Sehingga instruksi assembler yang sebenarnya hanya 79 macam instruksi. Ada Beberapa jenis AVR yang memiliki tambahan instruksi yang tidak terdapat pada jenis AVR seperti:
Instruksi PUSH, POP tidak dikenal oleh keluarga AVR tipe ATtiny Instruksi FMUL, MULS, MUL atau EIJMP lebih dikenal ATmega
AVR memiliki register keperluan umum (GPR, General Purpose Register) sebanyak 32 register. Operasi aritmatika dan logika dilakukan pada GPR. Memori daya tersedia di AVR bisa mencapai 64KB dan bisa dialamati baik secara langsung maupun tidak langsung dengan menggunakan instruksi load/store. Pada pengalamatan yang tidak langsung, bagian lain GPR bisa digunakan sebagai pointer (penunjuk)
18
pengalamatan tidak langsung. Register I/O adan GPR juga dipetakan pada bagian bawah memori data dan dapat diakses menggunakan instruksi-instruksi Load/Store.
1. Intruksi Set
Instruksi AVR dapat dibagi menurut jenisnya menjadi lima kelompok: Instruksi transfer data
Instruksi aritmatika Instruksi logika Instruksi Boolean Instruksi Percabangan
2. Assembler Directive
Assembler directive merupakan istruksi-instruksi yang berguna untuk mengubah penunjuk kode assembly, contoh kita dapat mengubah lokasi kode .asm pada memori program, memberi label pada SRAM atau mendefinisikan suatu konstanta menggunakan sintaks pengarah assembler. Berikut ini beberapa sintaks pengarah assembler pada mikrokontroler ATMega8535 :
.org digunakan untuk menset program counter pada alamat tertentu .byte digunakan untuk inisialisasi besar byte yang digunakan paa
SRAM untuk label tertentu
.def (define) pengarah ini memungkinkan suatu register dapat didefinisikan
.equ berguna untuk memberi nama suatu konstanta yang nilainya tidak berubah dan beberapa instruksi Assembler Directive lainnya
19
3. Analog to Digital Converter (ADC)
Mikrokontroler ATMega8535 merupakan tipe AVR yang dilengkapi oleh 8 saluran ADC internal dengan ketepatan 1 bit. Dalam mode operasinya ADC internal ATMega8535 dapat dikonfigurasikan baik secara single ended input maupun differential input. Selain itu, ADC memiliki konfigurasi pewaktuan, tegangan referensi, mode operasi dan kemampuan filter derau yang amat fleksibel sehingga dapat dengan mudah disesuaikan dengan kebutuhan ADC. Dalam Apenggunaan ADC perlu dilakukan inisialisasi.
Proses inisialisasi ADC meliputi proses penentuan clock, tegangan referensi, format output data dan metode pembacaan. Register yang perlu diset nilainya adalah register ADMUX (ADC Multiplexer Selection Register), ADCSRA (ADC Control and Status RegisterA) dan SFIOR (Special Function IO Register. ADMUX merupakan register 8 bit yang berfungsi menentukan tegangan referensi ADC, format output dan saluran ADC yang digunakan.
4. Register ADMUX
Gambar 9. Register ADMUX
.
Bit 6 dan bit 7 REFS[1..] adalah bit pengatur tegangan referensi ADC ATMega8535, memiliki nilai awal 00 sehingga referensi tegangan berasal dari pin AREF.
20
5. Pemilihan Mode Tegangan Referensi ADC
Tabel 5. Pemilihan Tegangan Referensi ADC
ADLR yaitu bit pemilih mode keluaran ADC. Bernilai awal 0 hingga 2 bit tertinggi data hasil konversinya berada di register ADCH dan 8 bit sisanya berada di register ADCL
ADLAR bernilai = 1
Gambar 10. ADLAR bernilai = 1
ADLAR bernilai = 0
Gambar 11. ADLAR bernilai = 0
Masih terdapat satu register yang perlu diinisialisasi untuk aktifasi ADC internal, yaitu ADCSRA yaitu register 8 bit yang berfungsi melakukan managemen sinyal control dan status dari ADC. Bit penyusunannya terdiri dari ADEN yang berfungsi
21
pengatur aktivasi ADC. ADCS yaitu bit penanda mulainya konversi ADC terhadap tegangan input.
Gambar 12. Register ADCSRA
Register yang sangat penting dalam penggunaan ADC. Pada table 6 Berikut merupakan suatu kondisi register ADMUX, pada bit ke empat sampai bit ke nol berfungsi pemilih saluran pembacaan. MUX [4.0], bernilai awal 00000 untuk mode single ended input. MUX [4.0] bernilai dari 00000-0021.
22
SERIAL PERIPERAL INTERFACING
Serial Peripheral Interfacing
Komunikasi SPI mempunyai sinkron yang berkecepatan tinggi antar mikrokontroler dengan device lain yang mendukung SPI. SPI juga bisa membuat aplikasi multiprosesor, fitur dari SPI Atmega8535:
1. Full Duplex, data transfrer tidak sinkron menggunakan tiga kabel 2. Operasi slave/master
3. Data transfer pertama LSB atau MSB 4. 7 bit rate yang bisa deprogram
5. Flag interupsi, apabilan transfer datanya terakhir 6. Flag proteksi, jika terjadi kegagalan penulisan 7. Wake up dari idle mode
8. Mempunyai dua kali kecepatan mode SPI master
Interface tersebut merupakan peralatan yang berhak mengendalikan komunikasi perangkat lain yang menerima dan mengirimkan data akan kembali ke master disebut slave. Pada gambar 13 merupakan blok diagram dari SPI.
23
Gambar 13. Diagram SPI
Pada intinya komunikasi SPI merupakan register geser 8 bit pada kedua peranti master dan slave, srta sinyal clock yang akan dibangkitkan oleh master. Seperti master ingin mengirimkan data A ke slave dalam waktu bersamaan master menerima data dari salve. Sebelum terjadi komunikasi SPI, master akan meletakkan data A ke shift registernya dan B juga akan meletakan data B dishift register. Selanjutnya master akan membangkitkan 8 pulsa clock sehingga data pada shift register master ditransfer ke shift register slave begitu sebaliknya.Pulsa clock master menerima data B dan slave B sudah menerima data A. Oleh karena itu data diterima pada saat sama maka SPU termasuk pada komunikasi full duplex.
24
Komunikasi SPI mempunyai empat jalur sinyal yaitu:
1. Serial Clock (SCK), sinyal clock untuk mengeser bit yang akan ditulis
2. Master Out Slave In (MOSI), yaitu sinya bit data serial yang ditulis dari master menuju slave
3. Master In Slave Out (MISO), yaitu sinta bit data serial yang hendak dibaca dari slave menuju master
4. Slave Select (SS), sinta untuk memilih dan mengaktifkan slave
SPI dapat berkomunikasi dengan beberapa slave dengan satu master. Cara master memilih slave yang akan diinginkan untuk komunikasi menggunakan pin SS. Jika pin SS disetting dengan logika high maka pin SPI slave berfungsi normal input dan tidak mau menerima data SPI yang masuk.
25
PEMROGRAMAN BASIC AVR
Pada gambar 14 merupakan interface dari bahasa pemrograman basic avr
Gambar 14. Interface Pemrograman Basic AVR
Tipe data
Tipe data merupakan bagian dari program yang paling penting karena tipe data mempengaruhi tipe data yang tepat akan membuat suatu operasi dat menjadi lebih efektif dan efesien.
Tabel 7. Tipe data
No Tipe Jangkauan 1 Bit 0 atau 1 2 Byte 0 - 255 3 Interger -32.768 – 32.767 4 Word 0 - 65535 5 Long -2147483648 -2147483647 6 Single 1.0 x 10−45 - 3.4 x 1038 7 Double 5.0 x 10−324 to 1.7 x 10308 8 String >254 Byte
26
Konstanta
Konstanta merupakan suatu nilai yang tidak dapat diubah selama proses program berlangsung. Konstanta nilai selalu tetap. Konstanta harus didenifikan terlebih dahulu diawal program. Konstanta dapat bernilai interger, pecahan, karakter dan string.
Contohnya : A = 7
C = 1.1
Variable
Variable merupakan suatu pengenal yang digunakan untuk mewakili suatu nilai tertentu didalam proses program. Nama lain dari variable dapat ditentukan sendiri oleh pemprogram dengan aturan sbb:
Terdiri dari gabungan huruf dan anga Tidak boleh mengandung spasi
Tidak boleh mengandung symbol khusus antara lain : $, ?, %, #, !, &, *, (,), -, + , = dsb
Panjang hanya 32 karakter
Deklarasi
Deklarasi diperlukan bila kita akan menggunakan pengenal dalam program. Pengenal dapat berupa variable, konstanta dan fungsi
Deklarasi Variable
Bentuk umum mendeklerasikan suatua variable sebagai berikut: Dim Nama_variable AS Nama_tipe;
Contoh :
Dim x AS Integer ‘Deklarasi x bertipe interger Dim a AS long ‘Deklaraso a bertipe long
27
Deklarasi Konstanta
Dalam Bahasa basic konstanta dideklarasikan langsung Contoh :
L = 12345678 ‘Assign long S = “Halo Teknik Komputer” ‘Assign string
Deklarasi Fungsi
Fungsi merupakan bagian yang tidak terpisahkan dalam program dan dapat diaktifkan atau dipanggil dimanapun didalam program. Fungsi dalam Bahasa Basic sudah disediakan sebagai fungsi pustakan seperti Print, input, data dan untuk menggunakan tidak perlu dideklarasikan.
Fungsi yang dideklarasikan oleh seorang programmer. Bentuk umum deklarasi sebuah fungsi:
TEST [(BYREF/BYVAL] var as type)] As type Contoh:
Declare Function Myfunction (byval | As Interger, S As String) As Interger
Operator
Operator Aritmatika
Bahasa Basic menyediakan lima operator aritmatika : * = Perkalian
/ = Pembagian
% = untuk sisa pembagian + = pejumlahan
- = pengurangan
Operator Perbandingan
Operator perbandingan digunakan untuk membandingkan hubungan antara dua operator / nilai / variable
28 Operator perbandingan : = Sama dengan X = Y <> Tidak sama X<> Y < Kurang dari X < Y > Lebih dari X > Y <= Kurang dari/sama dengan X <= Y >= Lebih dari/sama dengan X >= Y
Operator Bitwise
Operator bitwise yang digunakan untuk memanipulasi bit dari data yang ada didalam memori.
Operator bitwise pada Bahasa Basic: Shift A, Left , 2 : Pergeseran bit ke kiri Shift A, RIGTH, 2 :Pergeseran bit ke kanan Rotate A, left, 2 : Putar bit ke kiri
Rotate A, RIGTH, 2 : Putar bit ke kanan Contoh Operator Bitwise:
Geser bit ke kiri Geser bit kanan Putar bit ke kanan Putar bit ke kiri
Dim B as Byte B = 1 Do Print B Shift B, Left, 1 Waitms 100 Loop End Dim B as Byte B= 128 Do Print B Shift B, Rigth, 1 Waitms 100 Loop End Dim B as Byte B = 128 Do Print B Rotate B, Rigth, 1 Waitms 100 Loop End Dim B as Byte B = 1 Do Print B Rotate AB Left, 1 Waitms 100 Loop End
29
Penyelesaian Kondisi
Penyelesaian kondisi digunakan untuk mengarahkan perjalan suatu proses. Penyelesaian kondisi seperti kran yang mengatur jalanya air.Bila kran terbuka maka air akan mengalir dan sebaliknya. Fungsi penyeleksi kondisi penting artinya dalam penyusunan Bahasa Basic, terutama program yang sangat komplek.
Struktur Kondisi “IF….
Struktur if dibentuk dari beberapan penyataan if dan sangat sering digunakan untuk menyeleksi suatu kondisi tunggal.
Bila suatu proses diseleksi sudah terpenuhi / bernilai benar maka pernyataan yang ada dalam blok if diproses dan akan dikerjakan . Bentuk umum struktur kondisi if sebagai berikut:
If (kondisi) then penyataan; Contoh:
If data1 = 1 Then Call Lestroright(1) Struktur Kondisi “IF….ELSE
Dalam struktur kondisi if…..else minimal terdapat dua pernyataan. Jika suatu kondisi yang akan diperiksa bernilai benar maka pernyataan kedua akan dilaksanakan. Bentuk umum nya sebagai berikut:
If (kondisi) pernyataan 1 Else penyataan 2 Contoh: if A > 10 Then Print “A > 10” Else
Print “ A not Greater than 10” End if
30
Struktur Kondisi “CASE”
Struktur kondisi switch….case default yang digunakan untuk menyelesaikan kondisi dengan kemungkinan yang terjadi cukup banyak. Struktur ini akan melaksanakan salah satu dari beberapa pernyataa ‘case’ tergantung nilai kondisi yang ada didalam switch. Selanjutnya proses diterukan hingga ditemukan pernyataan ‘break’.
Bentuk umum strukturnya: Select Case (kondisi)
{ Case 1 : Penyataan 1; break; Case 2 : Pernyataan 2; break; Case n : Pernyataan n; break; Default : Pernyataan m } Contoh:
Select Case Ultra
Case &B0100001 : Call Maju (6)
Case &B1001000 : Call Turnigthl110 () Case &B0100000 : Call Turnrigth () Case &B0000001 : Call Majukiri (4) Case &B0100101 : Call Balikkanan (50) Case Else : Call Maju (2)
31
MODUL PRAKTEKUM MIKROKONTROLER
ATMEGA8535
1. Percobaan Output Flip Flop
32
Souce code Bascom AVR
$regfile = "m8535.dat" $crystal = 8000000 Config Porta = Output Dim X As Integer Porta = 0 Do 'Skenario1' Porta = &B01010101 Waitms 75 'Skenario2' Porta = &B00110011 Waitms 75 'Skenario3' Porta = &B11110000 Waitms 75 'Skenario4' Porta = &B00001111 Waitms 75
33
2. Percobaan Seven Segment menghitung mundur 100 - 0
Gambar Rangkaian
Source Code Bascom AVR $regfile = "m8535def.dat" $crystal = 12000000
Config PortA.0 = Output Config PortA.1 = Output Config PortA.2 = Output Config PortA.3 = Output Datas Alias PortA.0 Strobe Alias PortA.2
34
Clock Alias PortA.1 Oe Alias PortA.3 Dim T As Integer Dim Temp As Integer Dim Hitung As Integer
Dim Rat As Integer Dim Pul As Integer Dim Sat As Integer
Dim Byterat As Byte Dim Bytepul As Byte Dim Bytesat As Byte Strobe = 1 Oe = 0 Mulai: Hitung = 100 Do Temp = Hitung Rat = Temp / 100 Temp = Temp Mod 100 Pul = Temp / 10
Sat = Temp Mod 10 For T = 1 To 10 Oe = 1
Bytesat = Lookup(sat , Data7seg) Shiftout Datas , Clock , Bytesatuan , 1
Bytepul = Lookup(pul , Data7seg) Shiftout Datas , Clock , Bytepuluhan , 1
35
Byterat = Lookup(rat , Data7seg) Shiftout Datas , Clock , Byteratusan , 1 Next T
Wait 1 Decr Hitung
Loop Until Hitung < 0 Data7seg: Data &B11000000 '0 Data &B11111001 '1 Data &B10100100 '2 Data &B10110000 '3 Data &B10011001 '4 Data &B10010010 '5 Data &B10000010 '6 Data &B11111000 '7 Data &B10000000 '8 Data &B10010000 '9
36
3. Percobaan Trafic Ligth
Gambar Rangkaian
Souce code
$regfile= "8535def.dat" $crystal = 12000000 Config Porta = Output Config Portc = Output Config Portd = Output Config Pinb.0 = Input
37
Program:
'stanby red traffic' Portc = &B00100100 Porta = &B00100100 'traffic light'
Portc = &B00100001 'hijau' 'seven segmen' Portd = &B10010000 '9 Waitms 70 Portd = &B10000000 '8 Waitms 70 Portd = &B11111000 '7 Waitms 70 Portd = &B10000010 '6 Waitms 70 Portd = &B10010010 '5 Waitms 70 Portd = &B10011001 '4 Waitms 70 Portd = &B10110000 '3 Waitms 70 Portd = &B10100100 '2 Waitms 70 Portd = &B11111001 '1 Waitms 70 Portd = &B01000000 '0 Waitms 100
38
Portc = &B00100010 Waitms 125
Portc = &B00100100 Waitms 100
Portc = &B00001100 'hijau' 'seven segmen' Portd = &B10010000 '9 Waitms 70 Portd = &B10000000 '8 Waitms 70 Portd = &B11111000 '7 Waitms 70 Portd = &B10000010 '6 Waitms 70 Portd = &B10010010 '5 Waitms 70 Portd = &B10011001 '4 Waitms 70 Portd = &B10110000 '3 Waitms 70 Portd = &B10100100 '2 Waitms 70 Portd = &B11111001 '1 Waitms 70 Portd = &B01000000 '0 Waitms 100
Portc = &B00010100 'kuning' Waitms 125
39
Portc = &B00100100 'merah' Waitms 100
Porta = &B00001100 'hijau' 'seven segmen' Portd = &B10010000 '9 Waitms 70 Portd = &B10000000 '8 Waitms 70 Portd = &B11111000 '7 Waitms 70 Portd = &B10000010 '6 Waitms 70 Portd = &B10010010 '5 Waitms 70 Portd = &B10011001 '4 Waitms 70 Portd = &B10110000 '3 Waitms 70 Portd = &B10100100 '2 Waitms 70 Portd = &B11111001 '1 Waitms 70 Portd = &B01000000 '0 Waitms 100
Porta = &B00010100 'kuning' Waitms 125
Porta = &B00100100 'merah' Waitms 100
40
Porta = &B00100001 'hijau' 'seven segmen' Portd = &B10010000 '9 Waitms 70 Portd = &B10000000 '8 Waitms 70 Portd = &B11111000 '7 Waitms 70 Portd = &B10000010 '6 Waitms 70 Portd = &B10010010 '5 Waitms 70 Portd = &B10011001 '4 Waitms 70 Portd = &B10110000 '3 Waitms 70 Portd = &B10100100 '2 Waitms 70 Portd = &B11111001 '1 Waitms 70 Portd = &B01000000 '0 Waitms 100
Porta = &B00100010 'kuning' Waitms 125
Porta = &B00100100 'merah' Waitms 100
41
4. Sistem Loket Antrian
Gambar Rakaian
Souce code
$regfile= "8535def.dat" $crystal = 12000000
Config Portb = Output Config Porta = Output Config Portd = Input Portd = &HFF
Dim I As Byte , J As Byte , Tem1 As Integer , Tem2 As Integer Dim Ribuan As Integer , Ratusan As Integer , Puluhan As Integer , Satuan As Integer
Dim tunggu As Word , Loket As Byte , Puluhan_loket As Integer , Satuan_loket As Integer
42 Loket = 0 Tunggu = 0 Do If Pind.0 = 0 Then Loket = 1 Incr Tunggu Waitms 100
Elseif Pind.1 = 0 Then Loket = 2
Incr Tunggu Waitms 100
Elseif Pind.2 = 0 Then Loket = 3
Incr Tunggu Waitms 100 End If
Ribuan = Tunggu / 1000 Tem1 = Tunggu Mod 1000 Rat = Tunggu / 100
Tem2 = Tunggu Mod 100 Pul = Tunggu / 10
Sat = Tunggu Mod 10 Puluhan_loket = Loket / 10 Satuan_loket = Loket Mod 10 Portb = &B000001
Porta = Lookup(puluhan_loket , Angka) Waitms 5
Portb = &B000010
Porta = Lookup(satuan_loket , Angka) Waitms 5
43
Portb = &B000100
Porta = Lookup(ribuan , Angka) Waitms 5
Portb = &B001000
Porta = Lookup(ratusan , Angka) Waitms 5
Portb = &B010000
Porta = Lookup(pul , Angka) Waitms 5
Portb = &B100000
Porta = Lookup(satuan , Angka) Waitms 5
Loop End Angka:
Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90