Page 1
1
MODUL AJAR
MIKROKONTROLER DAN INTERFACING
Modul ajar ini dibiayai dari dana DIPA Nomor : 0622/023-04.2.01/15/2012 tanggal 9 Desember 2011
Politeknik Negeri Malang
Oleh : Ir. Azam Muzakhim Imammuddin, MT
NIP. 196705041994031004
POLITEKNIK NEGERI MALANG
2012
Page 2
2
HALAMAN PENGESAHAN MODUL AJAR
1. Judul Modul Ajar : Mikrokontroler dan Interfacing Digunakan Pada Mata Kuliah
Semester : :
Mikrokontroler dan Interfacing (2) dua
2. Penulis Utama 1. Nama Lengkap 2. NIP 3. Pangkat/golongan 4. Jabatan 5. Program Studi 6. Jurusan
: : : : : : :
Ir. Azam Muzakhim Imammuddin, MT 196705041994031004 IV/a Staf Pengajar Teknik Telekomunikasi Teknik Elektro
3. Jumlah AnggotaTim Penulis a. Nama Anggota 1 b. Nama Anggota 2
: : :
- orang ………………………………..... ……………………………….....
4. Bidang Ilmu : Mikroprosesor 5. Sumber Dana : Modul ajar ini dibiayai dengan dana
DIPA Nomor : 0622/023-04.2.01/15/2012 tanggal 9 Desember 2011 Politeknik Negeri Malang
Malang, 10 Juli 2012 Menyetujui, Ketua Jurusan Teknik Elektro Penulis Utama, Supriatna Adhisuwignjo. S.T., M.T. Ir. Azam Muzakhim I., M.T. NIP. 19710108 199903 1 001 NIP. 19670405 199403 1 004 Mengetahui,
Direktur Politeknik Negeri Malang
Ir. Tundung Subali Patma, M.T. NIP. 19590424 1988031 002
Page 3
3
SURAT PERNYATAAN Yang bertanda tangan di bawah ini:
Nama Lengkap : Ir. Azam Muzakhim Imammuddin, MTnuri, ST. NIP : 196705041994031004 Bidang Ilmu : Mikroprosesor Pangkat/Golongan : IV/aI Jabatan Fungsional : Lektor Kepala Jurusan/Program Studi : Teknik Elektro/Teknik Telekomunikasi Perguruan Tinggi : Politeknik Negeri Malang
Dengan ini menyatakan bahwa:
1. Naskah modul ajar bidang ilmu “Mikroprosesor” dengan judul:
”MIKROKONTROLER DAN INTERFACING”
Belum pernah diterbitkan dan bebas dari plagiarisme.
2. Bersedia menuntaskan naskah modul ajar sesuai waktu yang ditentukan. Demikian surat pernyataan ini dibuat dengan sebenarnya.
Malang, 10 Juli 2012
Disahkan oleh, Yang membuat, Ketua Jurusan Teknik Elektro Supriatna Adhisuwignjo. S.T., M.T. Ir. Azam Muzakhim I., M.T. NIP. 19710108 199903 1 001 NIP. 19670405 199403 1 004
Mengetahui:
Direktur
Ir. Tundung Subali Patma, M.T. NIP 19590424 198803 1 002
Page 4
4
KATA PENGANTAR
Segala puji dan syukur bagi Allah SWT, atas segala berkat rahmat dan
nikmat –Nya dengan terselesaikannya modul ajar bidang ilmu “Mikroprosesor”
dengan judul “MIKROKONTROLER DAN INTERFACING” di Jurusan
Teknik Elektro program Studi Telekomunikasi.
Dan pada kesempatan ini tak lupa kami sampaikan terima kasih kepada:
Direktur Politeknik Negeri Malang
Ketua Jurusan Teknik Elektro
Ketua Program Studi Teknik Telekomunikasi
Dan rekan-rekan pengajar jurusan Teknik Elektro terutama Program Studi
Telekomunikasi Politeknik Negeri Malang
Dan semoga hal ini dapat bermanfaat bagi kita semua
Malang, 10 Juli 2012
Penulis
Page 5
5
DAFTAR ISI
halaman
KATA PENGANTAR i
DAFTAR ISI ii
DAFTAR TABEL iii
DAFTAR GAMBAR iv
BAB I DASAR MIKROKONTROLER 1
1.1. PENDAHULUAN 1
1.2. MIKROKONTROLER ATMEGA 16 2
1.3. BAHASA C 8
1.3.1. STRUKTUR BAHASA C 8
1.3.2. INDENTIFIERS 9
1.3.3. KONSTANTA 9
1.3.4. TIPE DATA 10
1.3.5. OPERATOR 10
1.3.6. KONTROL ALIRAN PROGRAM 12
BAB II INPUT-OUTPUT 17
2.1. TEORI DASAR INPUT-OUTPUT 17
2.2. CARA KERJA SAKLAR DAN FOTOTRANSISTOR 23
2.3. TAMPILAN SEVEN SEGMEN 29
BAB III ANALOG TO DIGITAL CONVERTER (ADC) 34
3.1. ADC DALAM ATMEGA 16 34
3.2. LANGKAH-LANGKAH PENGGUNAAN ADC 39
3.3. LM35 40
BAB IV UNIVERSAL SYNCHRONOUS AND ASYNCHRONOUS
SERIAL RECEIVER TRANSMITTER (USART) 50
4.1. USART DALAM AT MEGA 16 52
4.2. APLIKASI USART 61
DAFTAR PUSTAKA 70
Page 6
6
DAFTAR TABEL
Halaman
Tabel 1.1. Fungsi Alternatif Pin-Pin Port B 5
Tabel 1.2. Fungsi Alternatif Pin-Pin Port C 6
Tabel 1.3. Fungsi Alternatif Pin-Pin Port D 6
Tabel 1.4. Tipe Data dalam Bahasa C 10
Tabel 1.5. Daftar Operator Kondisi 11
Tabel 1.6. Daftar Operator Aritmatika 11
Tabel 1.7. Daftar Operator Logika 11
Tabel 1.8. Daftar Operator Bitwise 11
Tabel 1.9. Daftar Operator Assignment 12
Tabel 2.1. Ketentuan Posisi Sensor-Sensor Robot Line Follower 26
Tabel 2.2. Hubungan antara Sensor dan Port A 26
Tabel 2.3. Hubungan antara Pengedalian Motor dan Port C 27
Tabel 2.4. Hubungan antara Port A dan Port C 27
Tabel 2.5. Nilai Port C untuk menampilkan angka 0 sampai 9 31
Tabel 3.1. Pilihan Tegangan Referensi ADC 36
Tabel 3.2. Kanal Input ADC untuk jenis Single Ended Input 37
Tabel 3.3. Frekuensi clock ADC 38
Tabel 4.1.Pengaturan bit-bit UPM 56
Tabel 4.2. Kombinasi UCSZ2 sampai UCSZ0 untuk Pengaturan
Ukuran Karakter 57
Tabel 4.3. Pengaturan Bit UCPOL 57
Tabel 4.4. Perhitungan Baud Rate dan nilai Register UBRR 58
Page 7
7
DAFTAR GAMBAR
Halaman
Gambar 1.1. Blok Diagram ATMega 16 1
Gambar 1.2. Konfigurasi Pin ATMega 16 4
Gambar1.3. Peta Memori Program ATMega 16 7
Gambar 1.4. Peta Memori Data 7
Gambar 1.5. Flowcart Perintah if 12
Gambar 1.6. Flowcart Perintah if – else 13
Gambar 1.7. Flowcart Perintah while 14
Gambar 1.8. Flowcart Perintah do – while 14
Gambar 1.9. Flowcart Perintah for 15
Gambar 2.1. Register-Register PORTA 18
Gambar 2.2. Port A sebagai Input dan Port C Sebagai Output 19
Gambar 2.3. Flowcart Soal 1 20
Gambar 2.4. Flowcart Soal 2 21
Gambar 2.5. Flowcart Latihan 1 22 Gambar 2.6. Rangkaian Saklar Saat Terbuka dan Tertutup 23
Gambar 2.7. Rangkaian Fototransistor dan LED 23
Gambar 2.8. Rangkaian Mikrokontroler Penghitung Mobil 24
Gambar 2.9. Blok Diagram Robot Line Follower 25
Gambar 2.10. Flowcart Robot Line Follower 28
Gambar 2.11. Tampilan Seven Segmen 30
Gambar 2.12. Blok Diagram Hubungan antara Port C dengan
Seven Segmen 30
Gambar 2.12. Flowcart Contoh Soal 2 32
Gambar 3.1. Blok Diagram ADC ATMega 16 34
Gambar 3.2. Bit-bit dalam Register ADMUX 36
Gambar 3.3. Format Hasil Konversi Bila DLAR sama dengan 0 36
Gambar 3.4. Format Hasil Konversi Bila DLAR sama dengan 1 37
Gambar 3.5. Bit-bit dalam register ADCSRA 37
Gambar 3.6. Rangkaian Sensor Suhu dalam Celcius 41
Gambar 3.7. Salah Satu Bentuk Fisik LM35 41
Page 8
8
Halaman
Gambar 3.8. Pengendalian Suhu Tangki dengan ATMega 16 42
Gambar 3.9. Flowcart Pengendali Suhu Tangki 43
Gambar 3.10. Tampilan Indikator Tekanan dengan ATMega 16 45
Gambar 3.11. Flowcart Indicator Tekanan dengan ATMega 16 47
Gambar 4.1. Blok Diagram USART pada ATMega 16 51
Gambar 4.2. Register UDR 52
Gambar 4.3. Bit-Bit Register UCSRA 52
Gambar 4.4. Bit-bit Register UCSRB 54
Gambar 4.5. Bit-bit Register UCSRC 55
Gambar 4.6. Bit-bit Register UBRRH dan UBRRL 57
Gambar 4.7. Telemetri Suhu antara dua MCU ATMega16 62
Gambar 4.8. Flowcart MCU Master 62
Gambar 4.9. Flowcart MCU Slave 62
Gambar 4.10. Skema Konverter TTL ke RS-232 64
Gambar 4.11. Blok Diagram Telekontrol PC ke MCU ATMega16 65
Gambar 4.12. Flowcart untuk MCU ATMega16 Slave 67
Page 9
9
BAB I DASAR MIKROKONTROLER
Capaian Pembelajaran:
Setelah membaca dan mengkaji bab ini, pembaca akan mampu:
Menjelaskan tentang Mikrokontroler ATMega16 dan fasilitas-fasilitas yang
dimiliknya;
Menjelaskan stuktur dasar bahasa pemrograman C untuk pemrograman
ATMega16
1.1. PENDAHULUAN
Mikrokontroler adalah merupakan suatu chip tunggal yang berisi
mikroprosesor dan memori program yang biasanya bersifat Read Only Memory
(ROM), memori serbaguna atau biasa disebut Random Access Memory (RAM),
Unit Input-Output, Unit Timer/Counter dan beberapa fasilitas yang lain seperti
Analog to Digital Converter (ADC), Electrical Eresable Programmable ROM
(EEPROM) dan lain-lain. Mikrokontroler dapat juga dianggap mikrokomputer,
hal ini karena hanya dengan satu chip/Integrated Circuit(IC) sudah memiliki unit-
unit yang setara dengan semua komputer.
Salah satu perusahaan yang mengembangkan mikrokontroler adalah Atmel
dengan jenis mikrokontroler AVR (Alf and Vegard’s Risc prosesor) yang
dibangun dengan arsitektur Reduced Intruction Set Computing (RISC) 8 bit yang
mengemas semua instruksi dalam kode 16-bit dengan sebagian besar instruksi
dikerjakan/dieksekusi dalam 1 (satu) siklus clock. Dan bila dibandingkan dengan
MCS’51 untuk mengerjakan satu instruksi membutuhkan 12 siklus clock. Hal ini
terjadi karena kedua jenis mikrokontroler tersebut memiliki arsitektur yang
berbeda. AVR berteknologi RISC (Reduced Instruction Set Computing),
sedangkan seri MCS 51 berteknologi CISC (Complex Instruction Set Computing).
Atmel mengelompokkan AVR menjadi 4 keluarga yaitu keluarga ATtiny,
keluarga AT90Sxx, keluarga ATMega dan AT86RFxx. Yang membedakan antara
kelompok adalah kapasitas memori, kemampuan peripheral, dan fungsinya.
Sedangkan dari segi arsitektur dan instruksi yang digunakan hampir sama. Dan
Page 10
10
yang memiliki fasilitas yang lengkap adalah keluarga ATMega. Salah satu yang
termasuk dalam keluarga ATMega adalah ATMega 16.
1.2. MIKROKONTROLER ATMEGA 16
ATMega 16 adalah sebuah mikrokontroler CMOS 8 bit yang berdaya
rendah yang berbasiskan arsitektur pengembangan RISC dengan satu instruksi
dikerjakan dalam satu clock dengan mencapai kecepatan throughputs mendekati 1
MIPS per MHz yang dapat membuat perancangan system yang lebih
mengoptimalkan konsumsi daya dibandingkan dengan kecepatan proses.
ATMega 16 merupakan prosessor AVR yang menggabungkan instruksi set
yang banyak dengan 32 register umum. Yang ke semua 32 register secara
langsung dihubungkan dengan Aritmatika Logika Unit (ALU), yang
memungkinkan dua buah register yang independen untuk diakses dalam satu
instruksi dieksekusi dalam satu siklus clock. Yang dihasilkan dari arsitektur AVR
adalah kode yang lebih efisien dengan capaian throughputs hingga sepuluh kali
lebih cepat dari konvensional CISC mikrokontroler.
ATmega16 ini menyediakan beberapa fitur sebagai berikut: 16 Kbyte In-
System Programmable Flash, Memori program dengan kemampuan Baca-Tulis-
Sementara, 512 byte EEPROM, 1 Kbyte SRAM, 32 jalur I/O, 32 register kerja,
antarmuka JTAG untuk Boundaryscan, dukungan dan pemrograman On-chip
Debugging, tiga Timer / Counter fleksibel dengan mode perbandingan, Interupsi
Internal dan Eksternal, sebuah programmable serial USART, Dua-kawat Serial
Interface berorientasi byte, serial USART (Universal Synchronous and
Asynchronous serial Receiver and Transmitter) yang dapat diprogram,8 kanal 10-
bit ADC, 4 saluran PWM (Pulse Width Modulation), Master Slave (SPI) Serial
Interface dan Watchdog Timer yang dapat diprogram dengan osilator internal,
port serial SPI, dan enam pilihan mode daya rendah.
Mikrokontroler ini diproduksi dengan menggunakan teknologi nonvolatile
memori Atmel yang canggih. Dilengkapi dengan OnChip ISP (In System
Programming) Flash memori program yang memungkinkan untuk sistem
diprogram ulang melalui interface SPI serial oleh seorang programmer atau
dengan program Boot On-chip yang berjalan pada inti AVR. Atau melalui
Page 11
11
program boot yang dapat menggunakan interface untuk men-download aplikasi
program di Flash memori Aplikasi. Software di bagian flash Boot akan terus
berjalan sedangkan bagian flash Aplikasi diperbarui, sehingga menyediakan
proses Baca - Tulis saat mikrokontroler beroperasi.
Oleh karena menggabungkan sebuah CPU RISC 8-bit dengan In-System
Self Programmable Flash pada sebuah chip monolitik, sehingga Atmel
ATmega16 adalah mikrokontroler kuat yang sangat fleksibel, hemat biaya dan
solusi untuk banyak aplikasi control.
Gambar 1.1 menunjukkan Blok Diagram dari ATMega 16. Sedangkan
untuk konfigurasi Pin ATMega 16 ditunjukkan dalam Gambar 1.2.
Gambar 1.1. Blok Diagram ATMega 16 (ATMega,20120;3)
Page 12
12
Gambar 1.2. Konfigurasi Pin ATMega 16(ATMega16,2010;2)
Dengan Penjelasan Pin Gambar 1.2. sebagai berikut:
- VCC Sumber Catu Daya Digital
- GND Ground
- Port A (PA7 -
PA0)
Port A berfungsi sebagai input-input analog untuk A/D
Converter.
Port A juga berfungsi sebagai 8-bit bidirectional port I / O,
jika A/D Converter tidak digunakan. pin port juga
menyediakan internal pull-up resistor yang dipilih untuk
setiap bitnya.
- Port B (PB7 –
PB0)
Port B adalah 8-bit bidirectional I /O port dengan internal
pull-up resistor (dipilih untuk setiap bit).
Page 13
13
Masing-masing Pin Port B juga berfungsi seperti yang
ditunjukkan dalam Tabel 1.1
- Port C (PC7 -
PC0)
Port C adalah 8-bit bidirectional I / O port dengan internal
pull-up resistor (dipilih untuk setiap bit).
Masing-masing Pin Port C juga berfungsi seperti yang
ditunjukkan dalam Tabel 1.2
- Port D (PD7 -
PD0)
Port D adalah 8-bit bidirectional I / O port dengan internal
pull-up resistor (dipilih untuk setiap bit).
Masing-masing Pin Port D juga berfungsi seperti yang
ditunjukkan dalam Tabel 1.3
- RESET Input Reset. Reset akan terjadi saat logika 0 diberikan
selama lebih dari lebar pulsa minimum. Aktif Rendah
- XTAL1 Input Rangkaian Osilator Clock Internal
- XTAL2 Input Rangkaian Osilator Clock Internal
- AVCC AVCC adalah tegangan suplai pin untuk Port A dan A / D
Konverter. Pin Ini harus secara eksternal terhubung ke
VCC, meskipun ADC tidak digunakan. Jika ADC
digunakan, harus dihubungkan ke VCC melalui filter low-
pass.
- AREF Pin Analog Referensi untuk A/D Konverter
Tabel 1.1. Fungsi Alternatif Pin-Pin Port B (ATMega,2010;58)
Pin Fungsi Alternatif PB7 SCK (SPI Bus Serial Clock) PB6 MISO (SPI Bus Master Input/Slave Output) PB5 MOSI (SPI Bus Master Output/Slave Input) PB4 SS (SPI Slave Select Input) PB3 AIN1 (Analog Comparator Negative Input)
OC0 (Timer/Counter0 Output Compare Match Output) PB2 AIN0 (Analog Comparator Positive Input)
INT2 (Input Eksternal Interupsi 2) PB1 T1 (Timer/Counter1 External Counter Input) PB0 T0 (Timer/Counter0 External Counter Input)
XCK (USART External Clock Input/Output)
Page 14
14
Tabel 1.2. Fungsi Alternatif Pin-Pin Port C (ATMega16, 2010:61)
Pin Fungsi Alternatif PC7 TOSC2 (Timer Oscillator Pin 2) PC6 TOSC1 (Timer Oscillator Pin 1) PC5 TDI (JTAG Test Data In) PC4 TDO (JTAG Test Data Out) PC3 TMS (JTAG Test Mode Select) PC2 TCK (JTAG Test Clock) PC1 SDA (Two-wire Serial Bus Data Input/Output Line) PC0 SCL (Two-wire Serial Bus Clock Line)
Tabel 1.3. Fungsi Alternatif Pin-Pin Port D (ATMega16, 2010;63)
Pin Fungsi Alternatif
PD7 OC2 (Timer/Counter2 Output Compare Match Output)
PD6 ICP1 (Timer/Counter1 Input Capture Pin)
PD5 OC1A (Timer/Counter1 Output Compare A Match
Output)
PD4 OC1B (Timer/Counter1 Output Compare B Match
Output)
PD3 INT1 (External Interrupt 1 Input)
PD2 INT0 (External Interrupt 0 Input)
PD1 TXD (USART Output Pin)
PD0 RXD (USART Input Pin)
ATMega 16 memiliki dua memori utama yaitu Memori Program dan
Memori Data dengan tambahan juga memiliki memori EEPROM untuk tempat
penyimpanan data.
ATMega 16 memiliki 16 Kbyte Flash memori untuk penyimpanan
program yang dibagi menjadi dua bagian yaitu bagian Boot program dan bagian
aplikasi program. Flash memori program memiliki daya tahan sedikitnya 10.000
proses tulis atau hapus. Dan untuk menjangkau Flash memori program ATMega
16 memiliki Register Program Counter (PC) selebar 13 bit. Yang menjangkau 8K
lokasi memori program. Sedangkan pada bagiah Boot program dilengkapi dengan
Page 15
15
Boot lock bits yang digunakan untuk melindungi software yang telah ada di dalam
ATMega 16. Gambar 1.3 menunjukkan peta memori program dalam ATMega 16.
Gambar1.3. Peta Memori Program ATMega 16(ATMega16,2010;16)
ATMega 16 Memiliki Memori Data yang terdiri dari 1120 lokasi alamat
dari Register File, I/O Memori dan data SRAM internal. 96 lokasi alamat pertama
digunakan oleh Regiter File dan I/O Memori dan 1024 lokasi alamat digunakan
untuk data SRAM Internal. Dan 96 lokasi alamat Register File dan I/O Memori
terdiri dari 32 register umum untuk kerja dan 64 Register yang digunakan untuk
I/O. Dan gambar 1.4. menunjukkan Peta Memori Data. Dan sebagai tambahan
terdapat 512data memori EEPROM di dalam ATMega 16 byte. Yang diorganisasi
secara terpisah, yang setiap byte dapat dibaca dan ditulis. EEPROM memiliki
ketahanan sedikitnya 100.000 siklus tulis atau menghapus.
Gambar 1.4. Peta Memori Data(ATMega16,2010;17)
Page 16
16
1.3. BAHASA C
Pada saat ini sudah dikembangkan bahwa untuk membuat pemrograman
mikrokontroler menggunakan bahasa level tinggi bukan menggunakan bahasa
assembly maupun bahasa mesin. Salah satu bahasa level tinggi yang banyak
digunakan adalah bahasa C. Ada beberapa software pemrograman mikrokontroler
yang menggunakan bahasa C sebagai bahasa pemrogramannya seperti Codevision
AVR dan WinAVR.
1.3.1. STRUKTUR BAHASA C
Untuk dapat memahami bagaimana suatu program ditulis, maka struktur
dari program harus dimengerti terlebih dahulu, atau sebagai pedoman penulis
program (programmer) bagaimana seharusnya program tersebut ditulis.
Dalam penulisan program dengan menggunakan bahasa C maka harus
mengetahui struktur dari program dengan menggunakan bahasa C. Program dalam
bahasa C dapat dilihat sebagai sekumpulan dari sebuah atau lebih fungsi. Dan
fungsi pertama yang harus ada di pemrogram bahasa C adalah fungsi main().
Sedangkan untuk fungsi-fungsi yang lain dapat dituliskan setelah atau
sebelum fungsi main () dengan menuliskan deskripsi prototype fungsi pada bagian
awal program. Dan dapat juga fungsi-fungsi yang lain dituliskan di file lain,
apabila diinginkan untuk digunakan maka tinggal menuliskan header file dari
fungsi-fungsi tersebut dengan preprocessor directive #include. Seperti contoh bila
kita menggunakan mikrokontroler ATMega16, maka kita harus mengambil
fungsi-fungsi untuk ATMega16 dengan perintah sebagai berikut:
#include<mega16.h>
Sebagai Contoh penulisan program untuk menyalakan LED di PORTB
// deklarasi fungsi-fungsi ekternal
#include <mega16.h> // mengambil fungsi-fungsi untuk ATMega16
#include <delay.h> // mengambil fungsi-fungsi untuk proses tunda
// deklarasi variable global
unsigned char dataout; // deklarasi dataout dalam byte
Page 17
17
// penulisan program utama
void main(void)
{
// Port B initialization Port B sebagai output
PORTB=0x00;
DDRB=0xFF;
dataout=00;
// Penulisan program ada di dalam while (1)
while(1)
{
PORTB=dataout; // PB = dataout
delay_ms(100); // tunda selama 100 ms
dataout=dataout+1; // dataout ditambah 1;
}
}
1.3.2. INDENTIFIERS
Dalam pemrogramaman bahasa C sangat perlu sekali untuk diketahui
dalam pemberiah nama atau Identifier yang diberikan pada variabel, fungsi, label
atau objek lain. Dalam pemberian nama dapat mengandung huruf yaitu besar A
sampai Z dan huruf kecil a sampai z dan angka 0 sampai 9 dan karakter ( _ ).
Nama yang digunakan bersifat Case sensitive yaitu membedakan antara huruf
besar dan huruf kecil. Dan untuk nama dapat mencapai maksimal 32 karakter.
1.3.3. KONSTANTA
Dalam pemrogramam bahasa C ada beberapa cara dalam penulisan
konstanta yaitu sebagai berikut: Penulisan untuk Integer dan long integer ditulis
dalam bentuk decimal (123), bila ditulis dalam bentuk biner maka harus didahului
0b seperti 0b10101001, dan jika ditulis dalam bentuk hexadecimal maka harus
didahului 0x seperti 0xA9, sedangkan untuk konstanta karakter harus dilingkungi
oleh tanda kutip seperti ‘a’.
Page 18
18
1.3.4. TIPE DATA
Untuk tipe tipe data yang dimiliki oleh pemrograman bahasa C
ditunjukkan dalam Tabel 1.4 berikut ini.
Tabel 1.4. Tipe Data dalam Bahasa C (Andrianto,2008;21)
Tipe Ukuran (Bit) Range
Bit 1
0,1 (Tipe data bit hanya dapat
digunakan untuk variable
global.)
Char 8 -128 to 127
Unsigned char 8 0 to 255
Signed char 8 -128 to 127
Int 16 -32768 to 32767
Short int 16 -32768 to 32767
Unsigned int 16 0 to 65535
Signed int 16 -32768 to 32767
Long int 32 -2147483648 to 214783647
Unsigned long int 32 0 to 4294967295
Signed long int 32 -2147483648 to 214783647
Float 32 ±1.175e-38 to ±3.402e38
Double 32 ±1.175e-38 to ±3.402e38
1.3.5. OPERATOR
Dalam pemrograman operator merupakan intruksi khusus yang digunakan
untuk variable. Adab beberapa yang sering digunakan yaitu operator kondisi atau
pembanding seperti yang ditunjukan dalam Tabel 1.5, operator atirmatika
ditunjukkan dalam Tabel 1.6, operator logika ditunjukkan dalam Tabel 1.7,
operator bitwise ditunjukkan dalam Tabel 1.8, operator Assignment ditunjukkan
dalam Tabel 1.9.
Page 19
19
Tabel 1.5. Daftar Operator Kondisi (Andrianto,2008;22)
Operator Kondisi Keterangan
< Lebih kecil
< = Lebih kecil atau sama dengan
> Lebih besar
> = Lebih besar atau sama dengan
= = Sama dengan
! = Tidak sama dengan
Tabel 1.6. Daftar Operator Aritmatika(Andrianto,2008;22)
Operator Aritmatika Keterangan
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian
% Sisa Bagi (modulus)
Tabel 1.7. Daftar Operator Logika(Andrianto,2008;22)
Operator Logika Keterangan ! Boolean NOT && Boolean AND | | Boolean OR
Tabel 1.8. Daftar Operator Bitwise(Andrianto,2008;22)
Operator Bitwise Keterangan
Komplemen Bitwise
& Bitwise NOT
| Bitwise OR
^ Bitwise Exclusive OR
>> Right Shift
<< Left Shift
Page 20
20
A>30
PB=0xFF
Y
T
Tabel 1.9. Daftar Operator Assignment(Andrianto,2008;23)
Opereator Assignment Keterangan
= Untuk memasukkan nilai
+ = Untuk menambah nilai dari keadaan semula
- = Untuk mengurangi nilai dari keadaan semula
* = Untuk mengalikan nilai dari keadaan semula
/ = Untuk melakukan pembagian terhadap bilangan
semula
% = Untuk memasukkan nilai sisa bagi dari pembagian
bilangan semula
<< = Untuk memasukkan shift left
>> = Untuk memasukkan shift right
& = Untuk memasukkan bitwise AND
^ = Untuk memasukkan bitwise XOR
\ = Untuk memasukkan bitwise OR
1.3.6. KONTROL ALIRAN PROGRAM
Dalam pemrograman ada beberapa perintah yang dapat digunakan untuk
mengendalikan aliran program antara lain:
a. Perintah percabangan if (…){…} digunakan untuk mengecek satu kondisi
untuk satu blok jawaban dengan flowcart ditunjukkan dalam Gambar 1.5.
Gambar 1.5. Flowcart Perintah if
Page 21
21
A >30
PB =0xF F
Y
T
PB =0x00
Dan dengan cara penulisannya sebagai berikut:
if(_uji_benar_atau_salah_)
{_eksekusi_blok_ini_jika_benar_; } ;
seperti contoh:
if (A>30) // jika A lebih besar 30 maka PB = 0xff;
{ PORTB = 0xff;}
b. Perintah percabangan if(…){…} else {…} digunakan untuk mengecek satu
kondisi untuk dua blok jawaban dengan flowcart ditunjukkan dalam Gambar
1.6.
Gambar 1.6. Flowcart Perintah if – else
Dan cara penulisannya sebagai berikut:
if(_uji_benar_atau_salah_)
{_eksekusi_blok_ini_jika_benar_; }
else {_eksekusi_blok_ini_jika_salah_; } ;
seperti contoh:
if (A > 30) // Jika A lebih besar 30
{PORTB=0xff} // maka PB = 0xff;
else {PORTB=0x00;} // jika tidak PB=0x00
c. Perintah while ( … ) { … } digunakan untuk perulangan jika kondisi yang
diuji bernilai benar dengan flowcart ditunjukkan dalam Gambar 1.7
Page 22
22
A > 3 0 P B = 0 x F FA = P A
Y
T
A > 3 0
Y
T
P B = 0 x f fA = P A
Gambar 1.7. Flowcart Perintah while
d. dan cara penulisannya sebagai berikut:
while (_eksekusi_blok_ini_jika_benar_atau_salah)
{_selama_benar_blok_ini_akan_selalu_dieksekusi_;};
Seperti contoh:
while (A > 30) // Ulangi selama A lebih besar dari 30,
{ PORTB = 0xff; // PB =0xff;
A = PINA; } // A=PA;
e. Perintah do {…} while (…) digunakan untuk perulangan jika kondisi yang
diuji bernilai benar. Pada perintah ini blok {…} dikerjakan dahulu baru
kemudian diuji, jika benar maka blok {…} diulangi lagi. Dengan flowcart
ditunjukkan dalam Gambar 1.8.
Gambar 1.8. Flowcart Perintah do – while
Page 23
23
I< 1 0
Y
T
I= 1
P B = d a ta o u tD a ta o u t+ +
i+ +
Dan cara penulisannya sebagai berikut:
do
{_selama_benar_blok_ini_akan_selalu_dieksekusi_;}
while (_uji_benar_atau_salah_);
Seperti contoh:
do
{ PORTB = 0xff; // PB = 0xff
A = PINA;} // A= PORTA
while (A > 30); // selama A > 30 kerjakan blok diatasnya
f. Perintah for (…. ; …. ; ….) {…} digunakan untuk perulangan dengan kondisi
dan syarat yang telah ditentukan. Biasanya digunakan perulangan dengan
jumlah tertentu dengan flowcart ditunjukkan dalam Gambar 1.9.
Gambar 1.9. Flowcart Perintah for
Dan cara penulisannya sebagai berikut :
for (_kondisi _awal ; _uji_kondisi_ ; _aksi_jika_benar)
{_eksekusi_blok_ini_jika_benar_ ;} ;
Seperti contoh:
for (i=1;i<10;i++) // mengulangi blok dibawah ini sebanyak 9 kali
{ PORTB=dataout; // PB = dataout
dataout=dataout+1;} // dataout=dataout+1
Contoh Soal:
Page 24
24
1. Ada berapa jenis memori yang dimiliki ATMega16? Sebutkan.
Jawab:
Ada 3 yaitu: RAM, EEPROM dan Flash Memori Program
2. Ada berapa port yang dimiliki oleh ATMega16?
Jawab:
Ada 4 port yaitu Port A, Port B, Port C dan Port D
Latihan:
1. Buat flowcart dan program untuk menghitung 1 sampai 10 dengan
menggunakan instruksi :
a. while
b. for
Page 25
25
BAB II INPUT – OUTPUT
Capaian Pembelajaran:
Setelah membaca dan mengkaji bab ini, pembaca akan mampu:
Menyusun algoritma, flowcart dan program dengan memanfaatkan unit
input-output ATMega16.
2.1. TEORI DASAR INPUT-OUTPUT
Semua port AVR memiliki fungsi Baca-Tulis yang dapat dimodifikasi
ketika digunakan sebagai I/O port digital. Yang berarti setiap saat salah satu arah
pin port dapat diubah fungsi. Setiap output buffer memiliki karakteristik arus
simetris yang bagus dengan arus sink yang tinggi dan kemampuan sumber arus.
Sehingga dari pin cukup kuat untuk menjalankan LED display secara langsung.
Semua pin port memiliki individual pull-up resistor. Dan semua pin I/O memiliki
dioda pelindung untuk VCC dan Ground.
Sebagai referensi semua register dan bit ditulis dalam bentuk umum yaitu
sebuah huruf kecil "x" untuk pengganti nama port, dan sebuah huruf kecil "n"
mewakili nomor bit seperti PORTxn.
Ada tiga alamat memori I/O yang dialokasikan untuk setiap port I/O yaitu
Data Register (PORTx), Data Direction Register (DDRx) dan Port Input Pin
(PINx). Data Register (PORTx) digunakan untuk menyimpan data yang akan
ditulis/dikeluarkan ke port I/O pada saat port dikonfigurasi sebagai output
sedangkan Port Input Pin (PINx) digunakan untuk menyimpan data yang terbaca
dari port I/O pada saat port dikonfigurasi sebagai input sedangkan Data Direction
Register (DDRx) digunakan untuk menginisialisasi port sebagai input atau output.
Oleh karena itu, setiap pin port memiliki 3 bit register yaitu: DDxn, PORTxn dan
PINxn. Bit-bit DDxn beralamat di DDRx, bit-bit PORTxn beralamat di PORTx
I/O dan bit-bit PINxn juga beralamat di PORTx I/O.
Bit DDxn yang ada di dalam register DDRx menentukan arah dari pin ini.
Bila DDxn ditulis logika satu “1”, maka Pxn dikonfigurasi sebagai input dan bila
DDxn ditulis logic nol “0” maka Pxn dikonfigurasi sebagai output. Jika PORTxn
ditulis logika satu saat pin dikonfigurasi sebagai pin input, maka pull-up resistor
Page 26
26
aktif dan untuk menonatifkan resistor pull-up, PORTxn harus ditulis logika nol
atau pin harus dikonfigurasi sebagai pin output. Pin port adalah tri stated ketika
kondisi reset dan bahkan jika tidak ada clock yang bekerja.
Gambar 2.1 menunjukkan register-register PORTA dan untuk register-
register PORT yang lain sama saja hanya dengan mengganti huruf A menjadi
huruf B, C dan D karena memiliki model konfigurasi yang sama dengan PORTA
tetapi memiliki alamat yang berbeda.
Gambar 2.1. Register-Register PORTA(ATMega16,2010;66)
Dalam bahasa C yang digunakan untuk pemrogramam ATMega16 nama
PORTx, DDRx dan PINx sudah dikenal dan dikemas dalam file mega16.h untuk
mikrokontroler ATMega 16 sehingga tinggal dipanggil saja file tersebut dengan
perintah #include <mega16.h>.
Sedangkan perintah-perintah yang berhubungan dengan Port adalah sebagai
berikut:
- PORTx, merupakan perintah yang digunakan untuk mengeluarkan data ke
Port x, x untuk A, B, C dan D
contoh:
PORTC = 0xff; // perintah untuk mengeluarkan data 0xff ke Port C
- PINx, merupakan perintah yang digunakan untuk membaca data dari Port
x, untuk x A, B, C dan D.
Contoh:
Page 27
27
Datain = PINA; // perintah untuk membaca data dari Port A dan hasilnya
disimpan di variable Datain.
- DDRx, merupakan perintah untuk menginisialisasi atau mengisi register
DDRx dengan data sesuai untuk inisialisasi input atau output. Bila diisi 1
untuk inisialisasi Output, bila diisi 0 untuk inisialisasi input
Contoh:
DDRA = 00000000(2) = 0x00(hex)
PortA0 – PortA7 berfungsi sebagai Input
DDRB = 11111111(2) = 0xFF(hex)
PortB0 – PortB7 berfungsi sebagai Output
DDRC = 00001111(2) = 0x0F(hex)
PortC0 – PortC7 berfungsi sebagai Output dan PortC5 – PortC7
berfungsi sebagai Input.
Jika port digunakan sebagai input, maka resistor pullup diaktifkan dengan
memberikan logika 1 pada PORTx. Kemudian baru baca dapat data dari
register PINx dan jika port digunakan sebagai output, langsung dapat
digunakan sebagai saluran untuk keluar ke PORTx.
- Mikrokontroler ATMega16 memiliki juga instruksi bit yaitu PORTx.n
untuk dan PINx.n
Contoh Soal 1.
Buat Algoritma, flowcart dan program untuk membaca Port A dan hasilnya
ditampilkan di Port C seperti pada Gambar 2.2
Gambar 2.2. Port A sebagai Input dan Port C Sebagai Output
Page 28
28
Jawab:
Algoritma:
1. Karena Port A dihubungkan dengan saklar maka Port A diinisialisasi
sebagai Input sehingga DDRA = 00000000B atau 0x00, sedangkan port B
dihubungkan dengan rangkaian LED maka Port C diinisialisasi sebagai
Output sehingga DDRC = 11111111B atau 0xff;
2. Baca data dari Port A dan kirim ke Port B
3. Dan ulangi ke 2
Flowcart:
Gambar 2.3. Flowcart Soal 1
Program:
#include<mega16.h> // ambil fungsi-fungsi untuk ATMega16
unsigned char datain ; //datain =>byte (deklarasi global)
void main (void)
{
DDRA = 0x00 ; //PA = Input
DDRC = 0xff ; //PC = Output
while (1) //selalu benar
{
datain = PINA ;
PORTC = datain ;
}
}
Page 29
29
Contoh Soal 2.
Dari Gambar 2.2, buat flowcart dan program bila nilai dari Port A kurang dari 80
maka Port C = 0x00 dan lebih maka Port C = 0xff.
Jawab:
Flowcart:
Gambar 2.4. Flowcart Soal 2
Program:
#include <mega16.h>
unsigned char datain;
void main (void)
{
DDRA = 0X00;
DDRC = 0XFF;
While (1)
{
datain = PIN A;
if (datain<80) }
{ PORTC = 0XFF;}
Else { PORTC = 0X00;}
} }
Page 30
30
Latihan 1.
Dari Gambar 2.2, buat flowcart dan program dengan ketentuan-ketentuan sebagai
berikut:
1. Bila nilai 0 < Port A < 40 maka Port C = 0000 0000B = 0x00
2. Bila nilai 40 <= Port A < 80 maka Port C = 0000 1111B = 0x0f
3. Bila nilai 80 <= Port A < 100 maka Port C = 1111 0000B = 0xf0
4. Bila nilai Port A >= 100 maka Port C = 1111 1111B = 0xff
Flowchart :
Gambar 2.5. Flowcart Latihan 1
Pertanyaannya: benarkah flowcart Gambar 2.5 ? Buat Programnya.
Buat juga flowcart dan program model yang lain
Page 31
31
2.2 . CARA KERJA SAKLAR DAN FOTOTRANSISTOR
Saklar merupakan salah satu jenis masukan yang sering digunakan dalam
rangkaian mikrokontroler. Salah satu rangkaian saklar ditunjukkan dalam Gambar
2.6a dan Gambar 2.6b. Gambar 2.6a merupakan gambar rangkaian saklar dalam
keadaan terbuka, karena dicatu tegangan 5 volt maka besar tegangan di Saklar
sama dengan 5 Volt yang diukur pakai voltmeter, sehingga memiliki logika ‘1’,
sedangkan untuk rangkaian dalam Gambar 2.6b merupakan gambar rangkaian
saklar tertutup, karena Saat saklar tertutup kedua kutup saklar hubung singkat
dengan groung sehingga besar tegangan saklar sama dengan 0 volt bila diukur
dengan voltmeter sehingga memiliki logika ‘0’.
(a) (b)
Gambar 2.6. Rangkaian Saklar Saat Terbuka dan Tertutup
Gambar 2.7. Rangkaian Fototransistor dan LED
Untuk cara kerja dari rangkaian fototransistor dan LED atau optocoupler
dalam Gambar 2.7. hampir sama dengan cara kerja rangkaian saklar dalam
Gambar 2.6. Saat cahaya LED menyinari basis dari fototransistor maka
fototransistor akan ON, keadaan ON seperti saklar ditutup atau Va
Page 32
32
dihubungsingkat dengan ground sehingga besar tegangan Va = 0 volt atau
memiliki logika ‘0’, dan jika cahaya LED terhalangi oleh sesuatu sehingga tidak
sampai menyinari basis dari fototransistor maka fototransistor akan OFF, keadaan
OFF seperti saklar dibuka atau Va dan ground tidak ada hubungan sehingga
tegangan Va = 5 Volt atau memiliki logika ‘1’.
Latihan 1.
Buat algoritma, flowcart dan program untuk menghitung jumlah mobil yang
parkir yang telah disediakan seperti dalam Gambar 2.8. Di pintu masuk (IN)
dipasang sensor fototransistor yang dihubungkan dengan Port A bit 0 atau PA0
dan di pintu keluar (OUT) dipasang sensor fototransistor yang dihubungkan
dengan Port A bit 1 atau PA1. Setiap ada mobil masuk maka sensor IN akan
terhalang dan jumlah mobil akan bertambah, dan setiap ada mobil keluar maka
sensor OUT akan terhalang dan jumlah mobil akan berkurang. Bila jumlah mobil
> 10 maka LED1 ON, bila jumlah mobil > 20 LED2 ON, bila jumlah mobil > 30
LED3 ON dan bila jumlah mobil > LED4 ON.
Gambar 2.8. Rangkaian Mikrokontroler Penghitung Mobil
Page 33
33
Fototransistor juga digunakan sebagai sensor untuk mengetahui warna
hitam atau putih, oleh karena itu fototransistor dapat digunakan untuk sensor
robot line follower, jika sensor berada diatas garis putih maka warna putih akan
memantulkan cahaya LED sehingga fototransistor menjadi ON, sedangkan jika
sensor berada di atas garis warna hitam atau gelap maka cahaya LED tidak akan
terpantulkan sehingga fototransistor menjadi OFF.
Latihan 2.
Buat flowcart dan program untuk robot line follower dengan 4 sensor
fototransistor seperti yang ditunjukkan dalam Gambar 2.9.
Gambar 2.9. Blok Diagram Robot Line Follower
Motor KIRI
Motor KANAN
Sensor 1
Sensor 2
Sensor 3
Sensor 4
PA0
PC0 PA1 PA2
PC1 PA3
Sensor 1/S1
Motor KIRI
Motor KANAN
Sensor 2/S2
Sensor 3/S3
Sensor 4/S4
Page 34
34
Dari Gambar 2.9 ada ketentuan seperti yang ditunjukkan dalam Tabel 2.1.
Tabel 2.1. Ketentuan Posisi Sensor-Sensor Robot Line Follower
S4 S3 S2 S1 ROBOT Motor
KANAN
Motor
KIRI
OFF ON ON OFF MAJU ON ON
ON ON OFF OFF BELOK
KANAN
OFF ON
ON OFF OFF OFF BELOK
KANAN
OFF ON
OFF OFF ON ON BELOK KIRI ON OFF
OFF OFF OFF ON BELOK KIRI ON OFF
OFF OFF OFF OFF BERHENTI OFF OFF
Karena rangkaian yang digunakan sebagai sensor seperti Gambar 2.7 maka
hubungan antara sensor S1, S2, S3 dan S4 dan PA0, PA1, PA2 dan PA3
ditunjukkan dalam Tabel 2.2. Sedangkan untuk hubungan pengendalian motor dan
PC0 dan PC1 ditunjukkan dalam Tabel 2.3. Sehingga hubungan antara Port A dan
Port C ditunjukkan dalam Tabel 2.4.
Tabel 2.2. Hubungan antara Sensor dan Port A
S4 S3 S2 S1 PA3 PA2 PA1 PA0 Nilai Hex
OFF ON ON OFF 1 0 0 1 0x09
ON ON OFF OFF 0 0 1 1 0x03
ON OFF OFF OFF 0 1 1 1 0x07
OFF OFF ON ON 1 1 0 0 0x0c
OFF OFF OFF ON 1 1 1 0 0x0e
OFF OFF OFF OFF 1 1 1 1 0x0f
Page 35
35
Tabel 2.3. Hubungan antara Pengedalian Motor dan Port C
ROBOT Motor KANAN Motor KIRI PC1 PC0
MAJU ON ON 1 1
BELOK KANAN OFF ON 1 0
BELOK KANAN OFF ON 1 0
BELOK KIRI ON OFF 0 1
BELOK KIRI ON OFF 0 1
BERHENTI OFF OFF 0 0
Tabel 2.4. Hubungan antara Port A dan Port C
PA3 PA2 PA1 PA0 Nilai Hex Desimal PC1 PC0
1 0 0 1 0x09 9 1 1
0 0 1 1 0x03 3 1 0
0 1 1 1 0x07 7 1 0
1 1 0 0 0x0c 12 0 1
1 1 1 0 0x0e 14 0 1
1 1 1 1 0x0f 15 0 0
Flowcart ditunjukkan dalam Gambat 2.10.
Page 36
36
Gambar 2.10. Flowcart Robot Line Follower
Program dari flowcart Gambar 2.10 sebagai berikut:
#include <mega16.h>
unsigned char Data_in;
void main (void)
{
DDRA = 0x00; // PA input
DDRC = 0xff; // PC output
while (1)
{
Data_in = PINA;
if(Data_in = 9)
{
PORTC.0 = 1;
PORTC.1 = 1;
Page 37
37
}
if(Data_in = 3)
{
PORTC.0 = 0;
PORTC.1 = 1;
}
if(Data_in = 12)
{
PORTC.0 = 1;
PORTC.1 = 0;
}
if(Data_in =15)
{
PORTC.0 = 0;
PORTC.1 = 0;
}
if(Data_in = 7)
{
PORTC.0 = 0;
PORTC.1 = 1;
}
if(Data_in = 14)
{
PORTC.0 = 1;
PORTC.1 = 0;
}
}}
2.3. TAMPILAN SEVEN SEGMEN
Tampilan seven segmen merupakan sebuah tampilan yang terdiri dari
tujuh segmen LED yang disusun untuk menampilkan angka 0 sampai 9 Seperti
yang ditunjukkan dalam Gambar 2.11. Dan untuk setiap segmen diberi kode
dengan huruf a, b, c, d, e, f, g dan d.p. Ada dua jenis seven segmen yaitu common
Page 38
38
anoda (CA) dan common katoda (CC). Untuk common anoda (CA), karena yang
dijadikan satu adalah anoda maka CA dihubungkan dengan Vcc, sehingga untuk
menyalakan segmen maka pin dari segemen tersebut diberi logika 0 atau 0 Volt,
sedang untuk common katode (CC), karena yang dijadikan satu adalah Ground
maka untuk menyalakan segmen pin dari segmen tersebut diberi logika 1 atau 5
Volt.
Gambar 2.11. Tampilan Seven Segmen(Seven Segment Display,2002;4) Contoh Soal 3.
Buat Flowcart dan program untuk menampilkan angka 0 sampai 9 di seven
segmen dihubung dengan Port C seperti gambar 2.12.
Gambar 2.12. Blok Diagram Hubungan antara Port C dengan Seven Segmen
Page 39
39
Jawab:
Tampilan seven segmen yang digunakan jenis Common Anoda maka untuk
membuat segmen menyala adalah dengan memberikan logika 0 dan untuk
mematikan segmen diberi logika 1, sehingga untuk menampilkan angka 0 sampai
9 dibutuhkan kombinasi logika 0 dan 1 dari setiap segmen yang dihubungkan
dengan Port C. Dan hasil dari kombinasi nilai Port C untuk menampilkan seven
segmen ditunjukkan dalam Tabel 2.5.
Tabel 2.5. Nilai Port C untuk menampilkan angka 0 sampai 9
PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 Nilai Hex
PC Tampilan dot g f e d c b a
1 1 0 0 0 0 0 0 0xC0
1 1 1 1 1 0 0 1 0xF9
1 0 1 0 0 1 0 0 0xA4
1 0 1 1 0 0 0 0 0xB0
1 0 0 1 1 0 0 1 0x99
1 0 0 1 0 0 1 0 0x92
1 0 0 0 0 0 1 0 0x82
1 1 1 1 1 0 0 0 0xF8
1 0 0 0 0 0 0 0 0x80
1 0 0 1 0 0 0 0 0x90
Jawab: Flowcart ditunjukkan dalam Gambar 2.12.
Page 40
40
Gambar 2.12. Flowcart Contoh Soal 2
Program:
# include <mega 16.h> // ambil fungsi untuk ATMega 16
# include <delay.h> // ambil fungsi untuk waktu tunda
void main (void)
{
DDRC = 0xff ; // Port C sebagai Output
while (1)
{
PORTC = 0xC0 ; // tampil angka 0
delay_ms (500) ; // tunda 500 ms
PORTC = 0xF9 ; // tampil angka 1
delay_ms (500) ;
PORTC = 0xA4 ; // tampil angka 2
delay_ms (500) ;
PORTC = 0xB0 ; // tampil angka 3
delay_ms (500) ;
PORTC = 0x99 ; // tampil angka 4
Page 41
41
delay_ms (500) ;
PORTC = 0x92 ; // tampil angka 5
delay_ms (500) ;
PORTC = 0x82 ; // tampil angka 6
delay_ms (500) ;
PORTC = 0xF8 ; // tampil angka 7
delay_ms (500) ;
PORTC = 0z80 ; // tampil angka 8
delay_ms (500) ;
PORTC = 0x90 ; // tampil angka 9
delay_ms (500) ;
}
}
Latihan 2.
Dengan menggunakan Gambar 2.11 buat flowcart dan program untuk
menampilkan NIM di tampilan seven segmen.
Page 42
42
BAB III ANALOG TO DIGITAL CONVERTER (ADC)
Capaian Pembelajaran:
Setelah membaca dan mengkaji bab ini, pembaca akan mampu:
Menyusun algoritma, flowcart dan program dengan memanfaatkan unit Analog
to Digital Convert dan unit input-output ATMega16.
3.1. ADC DALAM ATMEGA 16
ATMega memiliki ADC jenis successive approximation dengan data
output sebanyak 10 bit. Ada 8 kanal input ADC yang dimultiplekser dengan pin
Port A dengan acuan 0 Volt atau Ground. ADC juga dilengkapi dengan rangkaian
sample and hold yang menjamin tegangan masukan ADC berada dalam keadaan
konstan saat proses konversi dan Gambar 3.1 menunjukkan blok diagram dari
Skema ADC di mikrokontroler ATMega 16.
Gambar 3.1. Blok Diagram ADC ATMega 16 (ATMega16,2010;205)
Page 43
43
Dalam operasinya ADC mengubah tegangan masukan analog ke dalam 10
bit nilai digital dengan successive approximation. Gnd sebagai nilai minimal dan
nilai maksimal mewakili tegangan di pin AREF – 1 LSB, Biasanya AVCC atau
tegangan reverensi internal 1.56 Volt yang mungkin terhubung ke pin AREF
dengan mengatur bit REFSn di register ADMUX.
ADC diaktifkan dengan mengatur bit ADC Enable, ADEN di register
ADCSRA. Tegangan referensi dan saluran masukan ADC yang dipilih tidak akan
berlaku sampai ADEN di set ‘1’.
ADC menghasilkan nilai 10-bit yang disajikan dalam dua register data
ADC yaitu ADCH dan ADCL. Secara default, hasilnya disajikan right adjusted (2
bit di ADCH dan 8 bit di ADCL), tetapi secara opsional dapat disajikan left
adjusted (8 bit di ADCH dan 2 bit di ADCL) dengan mengatur bit ADLAR di
ADMUX. Jika yang dipilih left adjusted maka ADC digunakan dalam 8 bit saja
dengan cukup mengambil data di ADCH. Untuk right adjusted, ADCL dibaca
dahulu setelah itu ADCH agar data yang didapatkan tidak hilang atau rusak.
Sebuah konversi tunggal dimulai dengan menulis logika satu ke bit Start
Convertion ADC atau ADSC di register ADCSRA. Bit ini akan tetap tinggi
selama konversi sedang berlangsung dan akan dihapus oleh hardware bila
konversi selesai. Dan Jika selesai maka bit ADIF akan bernilai satu yang
memberikan tanda bahwa konversi sudah selesai sehingga data hasil konversi
dapat dibaca di ADCH dan ADCL.
Konversi dapat juga dipicu secara otomatis oleh berbagai sumber. Auto
Trigger diaktifkan dengan memberikan logika satu pada bit ADC Auto Trigger
atau ADATE di register ADCSRA. Sumber pemicu dapat dipilih dengan
mengatur bit ADC Trigger Select atau ADTs di register SFIOR.
Modul ADC berisi prescaler, yang menghasilkan frekuensi clock ADC
diterima dari frekuensi CPU. Prescaling diatur oleh bit ADPS di register
ADCSRA. Prescaler mulai bekerja mulai ADC diaktifkan dengan memberi logika
satu di bit ADEN di ADCSRA. Dan akan berhenti jika ADEN diberi logika nol
atau rendah.
Page 44
44
Ada beberapa register yang digunakan untuk ADC yaitu:
1. Register ADMUX atau register ADC Multiplexer, dinamakan demikian
karena di dalam register tersebut ada bit-bit yang digunakan untuk memilih
saluran dari input ADC, untuk bit-bit dari ADMUX ditunjukkan dalam
Gambar 3.2.
Gambar 3.2. Bit-bit dalam Register ADMUX(ATMega16,2010;217)
Keterangan dari fungsi bit-bit ADMUX Gambar 3.2 adalah sebagai berikut:
- REF0 dan REF1 (Reference) adalah bit-bit yang digunakan untuk memilih
tegangan referensi dari ADC dan table 3.1 menunjukkan beberapa
tegangan referensi yang dapat digunakan.
Tabel 3.1. Pilihan Tegangan Referensi ADC (ATMega16,2010;217)
REFS1 REFS0 Pilihan tegangan referensi
0 0 AREF (pin 32)
0 1 AVCC (pin 30)
1 0 Tidak digunakan
1 1 Vref internal 2,56V
- ADLAR (ADC Left Adjust Result) adalah bit yang digunakan untuk
menentukan format data hasil konversi ADC. Bila ADLAR = 0 maka hasil
konversi 10 bit disimpan dalam format: 2 bit disimpan di ADCH dan 8 bit
di ADCL seperti ditunjukkan dalam Gambar 3.3, sedangkan bila ADLAR
= 1 maka hasil konversi 10 bit disimpan dalam format: 8 bit disimpan di
ADCH dan 2 bit di ADCL seperti ditunjukkan dalam Gambar 3.4.
Gambar 3.3. Format Hasil Konversi Bila DLAR sama dengan 0 (ATMega16,2010;220)
Page 45
45
Gambar 3.4. Format Hasil Konversi Bila DLAR sama dengan 1(ATMega16,2010;220)
- MUX4, MUX3, MUX2, MUX1 dan MUX0, adalah bit-bit yang digunakan
untuk memilih input analog yang akan dikonversi oleh ADC. Kombinasi
MUX4 sampai MUX0 untuk jenis input ADC dengan acuan Ground
(single Ended Input) ditunjukan dalam table 3.2.
Tabel 3.2. Kanal Input ADC untuk jenis Single Ended Input
MUX4 MUX3 MUX2 MUX1 MUX0 Nilai Pilihan Input
ADC
0 0 0 0 0 0 ADC0 0 0 0 0 1 1 ADC1
0 0 0 1 0 2 ADC2
0 0 0 1 1 3 ADC3
0 0 1 0 0 4 ADC4
0 0 1 0 1 5 ADC5
0 0 1 1 0 6 ADC6
0 0 1 1 1 7 ADC7
2. Register ADCSRA atau ADC Control Status Register A, dinamakan demikian
karena register ini tempat untuk mengendalikan (Control) dan dan
mengetahui keadaan (Status) dari ADC, dan untuk bit-bitnya ditunjukkan
dalam Gambar 3.5.
Gambar 3.5. Bit-bit dalam register ADCSRA(ATMega16,2010;219)
Page 46
46
Keterangan dari fungsi bit-bit ADCSRA adalah sebagai berikut:
- ADEN atau ADC Enable, merupakan bit untuk mengaktifkan ADC, bila
ADEN = 1 maka ADC aktif dan Port A tidak aktif, bila ADEN = 0 maka
ADC tidak aktif dan Port A aktif.
- ADSC atau ADC Start Convertion, merupakan bit yang digunakan untuk
memberikan perintah mulai konversi, bila ADSC = 1, maka ADC mulai
bekerja untuk mengkonversi input analog dan akan berlogika 0 bila selesai
konversi.
- ADATE atau ADC Auto Trigger Enable, merupakan bit yang digunakan
untuk mengendalikan aktivasi picu otomatis. Jika ADATE = 1 maka
konversi ADC akan dimulai pada saat tepi positif pada sinyal trigger yang
digunakan.
- ADIF atau ADC Interrupt Flag, merupakan bit penanda akhir konversi
ADC. Jika ADIF = 1 maka konversi ADC pada suatu saluran telah selesai
dan siap diakses.
- ADIE atau ADC Interrupt Enabe, merupakan bit pengatur aktivasi
interupsi. Jika ADIE = 1 maka interupsi telah diaktifkan untuk melayani
proses konversi ADC.
- ADPS2, ADPS1 dan ADPS0 atau ADC Prescaler Select, merupakan bit-
bit yang digunakan untuk mengatur frukeunsi clock ADC dan Tabel 3.3
merupakan pemilihan frekuensi clok ADC dengan frekuansi osilator (fosc)
dari mikrokontroler ATMega 16 digunakan sebagai sumber clock dan nilai
ADPSn digunakan untuk memilih pembagi frekuansi.
Tabel 3.3. Frekuensi clock ADC(ATMega16,2010;220)
ADPS2 ADPS1 ADPS0 Clock ADC 0 0 0 fosc /2 0 0 1 fosc /2 0 1 0 fosc /4 0 1 1 fosc /8 1 0 0 fosc /16 1 0 1 fosc /32 1 1 0 fosc /64 1 1 1 fosc 128
Page 47
47
3.2. LANGKAH-LANGKAH PENGGUNAAN ADC
Dalam menggunakan ADC untuk mengkonversi tegangan analog menjadi
nilai digital ada beberapa langkah yang diperlukan agar mendapatkan hasil yang
diharapkan adalah sebagai berikut:
a. Memilih besar tegangan referensi atau VREF, di dalam ADC ATMega 16 ada
3 pilihan yaitu AVCC (5 Volt), 2,56 Volt dan dengan melalui pin AREF
(selain 5 Volt dan 2,56 Volt). Pemilihan VREF ini ditentukan oleh besar step
size atau besar sensivitas dari sensor yang digunakan sebagai tegangan input
analog.
Dengan rumus:
step size atau 12
nREFVss n = jumlah bit data digital
atau VREF = ss x (2n-1)
Step size digunakan oleh ADC untuk mendapatkan nilai data digital hasil
konversi dengan rumus:
ssVinDigitalData _
Vin = tegangan input ADC
Contoh .
- Sensor suhu LM35 memiliki sensivitas sensor 10mV/oC, berarti bahwa
saat temperature 25oC maka LM35 mengeluarkan tegangan sebesar:
25x10mV=250 mV, 25oC setara dengan 250 mV, berapa besar VREF
yang cocok untuk sensor LM35 bila jumlah data digitalnya sama dengan 8
bit?
Jawab:
Step size = 10 mV dan n = 8 maka
VREF = ss x (2n-1) = 10 mV x (28-1)
= 10 mV x 255 = 2550 mV = 2,55 Volt atau VREF = 2,56 Volt
- Bila temperature ruangan 27oC berapa data digital hasil konversi ADC?
Jawab:
Besar tegangan input ADC atau Vin = 27 x 10mV = 270 mV
Maka Data Digital = 270mV/10mV = 27 atau 0x1B
Page 48
48
b. Memilih saluran ADC yang akan digunakan sebagai input tegangan analog
c. Memilih jumlah bit data digital hasil konnversi
d. Mengaktifkan ADC dan Memilih frekuensi clock ADC
Langkah a, b, c dan d merupakan langkah-langkah untuk inisialisasi ADC.
Contoh:
Bila dipilih VREF = 2,56 Volt atau step size = 10 mV, saluran ADC yang
digunakan ADC0, hasil data digital 8 bit, ADC aktif dan frekuensi clock ADC =
fosc/8, berapa nilai register ADMUX dan ADCSRA?
Jawab:
Dengan table 3.1, 3.2 dan 3.3 digunakan sebagai acuan maka:
1 1 1 0 0 0 0 0 = 0xE0
Keterangan: untuk hasil data digital 8 bit maka DLAR = 1 dan disimpan di ADCH
1 0 0 0 0 0 1 1 = 0x83
Jadi untuk ADMUX = 0xE0 dan ADCSRA = 0x83
e. Setelah dilakukan inisialisasi maka ADC dapat digunakan, dan untuk memulai
maka bit ADSC register ADCSRA diberi nilai 1
f. Dan hasil baru dapat diambil bila ADIF = 1, untuk 8 bit hasil di register
ADCH sedangkan untuk 10 bit hasil di register ADCL dan ADCH.
3.3. LM35
LM35 merupakan IC sensor suhu yang presisi, dengan tegangan output
yang linear sebanding dengan suhu dalam Celcius. LM35 memiliki keuntungan
lebih linear dari sensor suhu yang dikalibrasi dalam o Kelvin sehingga LM35 tidak
memerlukan kalibrasi eksternal. LM35 memiliki impedansi keluaran rendah,
output yang linier, dan kalibrasi yang melekat membuat pembacaan antarmuka
dengan sirkuit kontrol sangat mudah. LM35 dapat digunakan dengan catu daya
tunggal, atau catu daya dengan plus dan minus. Salah satu rangkaian yang sering
digunakan dalam aplikasi ditunjukkan dalam Gambar 3.6. Sedangkan untuk salah
satu bentuk fisik tipe To-92 ditunjukkan dalam Gambar 3.7.
Page 49
49
Gambar 3.6. Rangkaian Sensor Suhu dalam Celcius (LM35,1994;1)
Gambar 3.7. Salah Satu Bentuk Fisik LM35 (LM35,1994;1)
Untuk fitur-fitur yang dimiliki oleh LM35 adalah sebagai berikut:
Dikalibrasi langsung dalam oCelcius (celcius)
sensivitasnya atau faktor skala yang Linear = 10,0 mV / oC
Akurasi 0,5 oC (pada 25 oC)
rentang suhu dari - 55 sampai +150 oC
Cocok untuk aplikasi remote
Murah
Beroperasi dari 4 sampai 30 Volt
Arus Drain kurang dari 60 mA
Impedansi Output rendah, 0,1 Ohm untuk 1 beban mA
Contoh Soal1.
Buat Algoritma, flowcart dan program untuk pengaturan suhu tangki pada
Gambar 3.8 pada suhu 45oC, dan besar suhu ditampilkan ke PB untuk nilai
puluhan dan PC untuk nilai satuan. IC LM35 digunakan sebagai sensor suhu.
Page 50
50
Gambar 3.8. Pengendalian Suhu Tangki dengan ATMega 16
Jawab:
Algoritma:
1. IC LM35 digunakan sebagai sensor suhu memiliki sensivitas 10 mV/oC
maka step size ADC juga 10 mV, data hasil digital dalam 8 bit maka:
VREF = ss (2n-1) = 10 (28-1) = 10 x 255 = 2550 mV = 2,55 Volt dipilih
2,56 Volt, untuk tegangan input analog dihubungkan dengan PA0 atau
ADC0 maka ADMUX sebagai berikut
1 1 1 0 0 0 0 0 = 0xE0
ADMUX = 0xE0
Sedangkan untuk frekuensi clock ADC dipilih fosc/16 maka:
1 0 0 0 0 1 0 0 = 0x84
ADCSRA = 0x84
Page 51
51
2. PB dan PD dihubungkan dengan seven segment sehingga PB dan PD
sebagai Output maka DDRB = 0xff dan DDRD = 0xff; demikian juga
untuk PC yang dihubungkan dengan rangkaian pengendali relay juga
sebagai output maka DDRC = 0xff.
3. Start Konversi ADC dengan memberikan logika 1 di bit ADSC register
ADCSRA
4. Tunggu apakah sudah selesai konversi dengan mengecek bit ADIF register
ADCSRA apakah sudah bernilai 1? Kalau belum tunggu sampai bernilai 1.
5. simpan data hasil konversi ADCH ke dataADC
6. Bandingkan dataADC dengan 45, bila lebih besar maka matikan pemanas
dengan memberi PC0 = 0, bila tidak maka hidupkan pemanas dengan
member PC0 =1
7. Pilah dataADC menjadi nilai Puluhan dan satuan
8. Ambil kode seven segmen dari puluhan dan tampilkan di PB dan ambil
kode seven segmen dari satuan dan tampilan di PD
9. Ulangi ke nomor 3
Dari algoritma 1 sampai 9 maka dibuat flowcart seperti yang ditunjukkan
dalam Gambar 3.9 sebagai berikut:
Gambar 3.9. Flowcart Pengendali Suhu Tangki
Page 52
52
Program dari Flowcart Gambar 3.9 sebagai berikut :
#include <mega16.h>
unsigned char dataADC, Pul, Sat ;
unsigned char sevensegmen [10] ={ 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82,
0xF8, 0x80, 0x90}
void main(void)
{
ADMUX=0xE0; // inisialisasi
ADCSRA=0x83;
DDRC=0xFF;
DDRB = 0xff;
DDRD = 0xff;
while(1)
{
ADCSRA= ADSCRA|0x40; // memberikan sinyal Start ADC ADSC =1
while (ADCSRA&0x10==0); // Cek ADIF = 0, tunggu sampai =1
dataADC=ADCH; // ambil data hasil konversi
ADCSRA=ADCSRA|0x10;
if (dataADC > 45) // bila > 45
{
PORTC.0=0; // off pemanas
}
else {
PORTC.0=1; // on pemanas
}
Pul = (dataADC %100)/10; // nilai puluhan di Pul
Sat = dataADC % 10; // nilai satuan di Sat
PORTB = sevensegmen[Pul]; // ambil kode dari array sevensegmen
PORTD = sevensegmen [Sat]; // ambil kode dari array sevensegmen
}
}
Page 53
53
Contoh Soal 2.
Pada Gambar 3.10 sebuah sensor tekanan memiliki sensivitas 20 mV/N
dihubungkan dengan PA7. Dan PC0 sampai PC5 digunakan sebagai indicator
besarnya tekanan sebagai berikut:
- bila tekanan > 40 N maka LED di PC0 menyala
- bila tekanan > 80 N maka LED di PC1 menyala
- bila tekanan > 120 N maka LED di PC2 menyala
- bila tekanan > 160 N maka LED di PC3 menyala
- bila tekanan > 200 N maka LED di PC4 menyala
- bila tekanan > 240 N maka LED di PC4 menyala
Gambar 3.10. Tampilan Indikator Tekanan dengan ATMega 16
Buat Algotirma, Flowcart dan Programnya:
Jawab:
Algotirma:
1. sensor tekanan memiliki sensivitas 20 mV/N maka step size ADC juga 20
mV, data hasil digital dalam 8 bit maka:
VREF = ss (2n-1) = 20 (28-1) = 20 x 255 = 5100 mV = 5,1 Volt dipilih 5
Volt atau AVCC, untuk tegangan input analog dihubungkan dengan PA7
atau ADC7 maka ADMUX sebagai berikut
Page 54
54
0 1 1 0 0 1 1 1 = 0x67
ADMUX = 0x67
Sedangkan untuk frekuensi clock ADC dipilih fosc/16 maka:
1 0 0 0 0 1 0 0 = 0x84
ADCSRA = 0x84
2. PC yang dihubungkan dengan LED indicator besarnya tekanan maka PC
sebagai output, DDRC = 0xff.
3. Start Konversi ADC dengan memberikan logika 1 di bit ADSC register
ADCSRA
4. Tunggu apakah sudah selesai konversi dengan mengecek bit ADIF register
ADCSRA apakah sudah bernilai 1? Kalau belum tunggu sampai bernilai 1.
5. simpan data hasil konversi ADCH ke dataADC
6. Bandingkan dataADC dengan 40, bila lebih besar maka PC0 = 1, bila
tidak PC0 =0
7. Bandingkan dataADC dengan 80, bila lebih besar maka PC1 = 1, bila
tidak PC1 =0
8. Bandingkan dataADC dengan 120, bila lebih besar maka PC2 = 1, bila
tidak PC2 =0
9. Bandingkan dataADC dengan 160, bila lebih besar maka PC3 = 1, bila
tidak PC3 =0
10. Bandingkan dataADC dengan 200, bila lebih besar maka PC4 = 1, bila
tidak PC4 =0
11. Bandingkan dataADC dengan 240, bila lebih besar maka PC5 = 1, bila
tidak PC5 =0
12. Ulangi ke nomor 3
Dari algoritma 1 sampai 12 maka dibuat flowcart seperti yang ditunjukkan
dalam Gambar 3.10 sebagai berikut:
Flowchart:
Flowcart dari algoritma 1 sampai 12 ditunjukkan dalam Gambar 3.11
Page 55
55
Gambar 3.11. Flowcart Indicator Tekanan dengan ATMega 16
Program dari flowcart Gambar 3.11 sebagai berikut:
#include<mega16.h>
unsigned char dataADC;
void main(void)
{
Page 56
56
ADMUX=0X67;
ADCSRA=0X83;
DDRC=0XFF;
while(1)
{
ADCSRA= ADSC|0X40;
while(ADCSRA&0X10=0);
dataADC=ADCH;
if (dataADC<250)
{
PORTC.0=1;
}
else {
PORTC.0=0;
}
if (dataADC<200)
{
PORTC.1=1;
}
Else {
PORTC.1=0;
}
if (dataADC<150)
{
PORTC.2=1;
}
else {
PORTC.2=0;
}
if (dataADC<100)
{
PORTC.3=1;
Page 57
57
}
else {
PORTC.3=0;
}
if (dataADC<20)
{
PORTC.4=1;
}
else {
PORTC.4=0;
}
ADCSRA.4=1;
}
}
Latihan 1:
Buat Blok Diagram, algoritma, Flowcart dan Program untuk membandingkan dua
buah sensor suhu LM35, sensor 1 (S1) dihubungkan dengan ADC0 dan sensor 2
(S2) dihubungkan dengan ADC7, bila suhu S1> S2 maka Led di Port C akan
menyala semua, bila S1<S2 maka led di Port C akan mati semua, dan bila S1=S2
maka led akan menyala separuh saja.
Page 58
58
BAB IV UNIVERSAL SYNCHRONOUS AND ASYNCHRONOUS
SERIAL RECEIVER TRANSMITTER (USART)
Capaian Pembelajaran:
Setelah membaca dan mengkaji bab ini, pembaca akan mampu:
Menyusun algoritma, flowcart dan program dengan memanfaatkan unit
USART, unit ADC dan unit input-output ATMega16 untuk proses telemetri
dan telekontrol.
4.1. USART DALAM AT MEGA 16
Universal Synchronous dan Asynchronous dan Transmitter (USART)
adalah perangkat komunikasi serial yang sangat fleksibel. Fitur-fitur utama adalah
sebagai berikut:
Operasi full duplex
Operasi asinkron atau sinkron
Master atau slave clock pada operasi sinkron
Generator baud rate resolusi tinggi
Mendukung frame serial dengan 5, 6, 7, 8, atau 9 bit data dan 1 atau 2 bit
stop
Paritas ganjil atau genap
Deteksi data over run
Deteksi kesalahan framing
Filter terhadap gangguan termasuk deteksi bit start palsu dan low pass
filter digital
Tiga Interrupsi terpisah di TX komplit, TX Data Register Empty, dan RX
komplit
Mode Komunikasi Multi-prosesor
Kecepatan ganda pada mode komunikasi asinkron
Blok diagram sederhana dari USART ditunjukkan pada Gambar 4.1 dan untuk
Register I/O dan pin I/O yang dapat diakses ditampilkan dengan huruf tebal
seperti Register UCSRA, UCSRB, UCSRC, UDR dan UBRR, serta pin RxD,
TxD dan XCK.
Page 59
59
Gambar 4.1. Blok Diagram USART pada ATMega 16 (ATMega16,2010;144)
Dalam Gambar 4.1, kotak-kotak yang putus-putus dalam blok diagram
memisahkan tiga bagian utama dari USART yaitu: Generator Clock, Transmitter
dan Receiver. Register Kontrol dibagi ke semua unit. Clock pembangkit logika
terdiri dari logika sinkronisasi untuk masukan clock eksternal yang digunakan
oleh operasi sinkron slave dan generator baud rate. Pin XCK (Clock Transfer)
hanya digunakan oleh mode Transfer Sinkron. Transmitter terdiri dari buffer
register tulis, serial Shift regiseter, generator paritas dan kontrol logika untuk
menangani berbagai format bingkai (frame) serial. Buffer register tulis
memungkinkan transfer data yang berkelanjutan tanpa ada penundaan antara
frame. Pada receiver merupakan bagian paling kompleks dari modul USART
karena clock dan unit pemulihan data. Unit-unit pemulihan digunakan untuk
penerimaan data asinkron. Tambahan fungsi untuk unit pemulihan berupa
Page 60
60
pemeriksa paritas penerima (receiver), logika kontrol, Shift Register dan dua
tingkat receive buffer (UDR). Receiver mendukung format frame yang sama
seperti transmitter, dan dapat mendeteksi kesalahan frame, overrun data dan
kesalahan paritas.
Untuk dapat menggunakan USART, perlu diketahui dari fungsi-fungsi
masing-masing register yang ada di dalam Blok diagram pada Gambar 4.1.
Register-register tersebut sebagai berikut:
1. UDR atau USART Data Register
Gambar 4.2. Register UDR (ATMega16,2010;163)
USART Transmit Data Buffer Register dan USART Receive Data Buffer
Register menggunakan alamat I/O yang sama yang disebut USART Data
Register atau UDR. Transmitter Data Buffer Register (TXB) akan menjadi
tujuan dari penulisan data ke lokasi register UDR sedangkan saat membaca
register UDR akan mendapatkan isi dari Receiver Data Buffer Register (RXB)
seperti yang ditunjukkan dalam Gambar 4.2.
2. UCSRA atau USART Control Status Register A, Nama bit-bit UCSRA ditunjukkan dalam Gambar 4.3.
Gambar 4.3. Bit-Bit Register UCSRA (ATMega16,2010;164)
Keterangan bit-bit Register UCSRA adalah sebagai berikut:
- Bit 7 – RXC: USART Receive Complete
Merupakan bit tanda bahwa ada data yang telah masuk secara serial
melalui pin RxD. Bernilai logika satu bila ada data masuk ke buffer
penerima dan belum dibaca, bila data sudah dibaca maka akan berubah
menjadi nol. Bit RXC ini juga digunakan untuk membangkitkan intrupsi
Receive Complete.
Page 61
61
- Bit 6 – TXC: USART Transmit Complete
Merupakan bit tanda bila semua data sudah komplit dikirim secara serial
melalui pin TxD. Bernilai logika satu bila transmit shift register telah
kosong dan tidak ada data baru dalam transmit buffer (UDR). Bit TXC ini
akan berubah menjadi nol secara otomatis saat intrupsi transmit complete
dikerjakan atau dapat di-nol-kan dengan menuliskan satu ke bit ini. Tanda
TXC juga membangkitkan sebuah intrupsi Transmit Complete.
- Bit 5 – UDRE: USART Data Register Empty
Tanda UDRE menunjukkan jika transmit buffer (UDR) siap menerima
data. Bila UDRE berlogika satu buffer kosong, berarti siap untuk ditulis.
Tanda UDRE dapat membangkitkan intrupsi Data Register Empty. UDRE
berlogika satu untuk menunjukkan bagian transmitter siap.
- Bit 4 – FE: Frame Error
Bit berlogika satu jika karakter berikutnya dalam buffer penerima terjadi
frame error ketika menerima yaitu saat stop bit pertama dari karakter
berikutnya dalam buffer penerima (receiver) adalah nol. Bit FE adalah nol
ketika stop bit data yang diterima adalah satu. Beri bit ini nol saat menulis
ke UCSRA.
- Bit 3 – DOR: Data OverRun
Bit ini berlogika satu jika kondisi over run data terdeteksi. Sebuah data
overrun terjadi ketika buffer penerima penuh (dua karakter), ada karakter
baru yang menunggu dalam shift Registre penerima, dan start bit baru
terdeteksi. Beri bit ini ke nol saat menulis ke UCSRA.
- Bit 2 – PE: Parity Error
Bit ini berlogika satu jika karakter berikutnya dalam buffer penerima
memiliki kesalahan paritas (Parity Error) saat diterima dan pengecekan
paritas telah diaktifkan pada bagian UPM1 = 1. Beri bit ini nol saat
menulis ke UCSRA.
- Bit 1 – U2X: Double the USART Transmission Speed
Bit ini hanya berpengaruh untuk operasi asinkron. Beri bit ini nol bila
menggunakan sinkron operasi. Bila bit ini diberi nilai logika satu maka
Page 62
62
akan mengurangi pembagi dari pembagi baud rate dari 16 ke 8 sehingga
secara efektif menggandakan transfer rate untuk komunikasi asinkron.
- Bit 0 – MPCM: Multi-processor Communication Mode
Bit ini memungkinkan Modus komunikasi multi-prosesor. Apabila bit
MPCM diberi logika satu, maka semua frame yang diterima oleh penerima
USART yang tidak mengandung informasi alamat akan diabaikan.
Transmiiter tidak dipengaruhi oleh pengaturan MPCM.
3. UCSRB atau USART Control Status Register B
Nama bit-bitnya ditunjukkan dalam Gambar 4.4.
Gambar 4.4. Bit-bit Register UCSRB (ATMega16,2010;165)
Keterangan bit-bit Register UCSRB adalah sebagai berikut:
- Bit 7 – RXCIE: RX Complete Interrupt Enable
Bit ini digunakan untuk mengaktifkan intrupsi saat ada data masuk di
buffer penerima atau saat RXC bernilai satu. Jika diberi logika satu maka
intrupsi diaktifkan dan bila diberi nol maka intrupsi tidak aktif.
- Bit 6 – TXCIE: TX Complete Interrupt Enable
Bit ini digunakan untuk mengaktifkan intrupsi saat data sudah selesai
dikirimkan atau saat TXC sama dengan satu. Jika diberi logika satu maka
intrupsi diaktifkan dan bila diberi nol maka intrupsi tidak aktif.
- Bit 5 – UDRIE: USART Data Register Empty Interrupt Enable
Bit ini digunakan untuk mengaktifkan intrupsi saat UDRE sama dengan
satu. Jika diberi logika satu maka intrupsi diaktifkan dan bila diberi nol
maka intrupsi tidak aktif.
- Bit 4 – RXEN: Receiver Enable
Bit ini digunakan untuk mengaktifkan bagian penerima (receiver)
USART, dan pin RxD digunakan sebagai jalur komunikasi serial. Bila
diberi logika satu akan aktif dan logika nol untuk non aktif
- Bit 3 – TXEN: Transmitter Enable
Page 63
63
- Bit ini digunakan untuk mengaktifkan bagian pengirim (transmitter)
USART, dan pin TxD digunakan sebagai jalur komunikasi serial. Bila
diberi logika satu akan aktif dan logika nol untuk non aktif
- Bit 2 – UCSZ2: Character Size
Bit UCSZ2 dikombinasikan dengan bit UCSZ1 dan UCSZ0 bit dalam
register UCSRC untuk menetapkan jumlah bit data atau ukuran karakter
dalam frame untuk penerima (receiver) dan pemancar (transmitter).
- Bit 1 – RXB8: Receive Data Bit 8
RXB8 adalah bit data kesembilan dari karakter yang diterima ketika
beroperasi dengan frame serial dengan sembilan bit data. Harus dibaca
sebelum membaca bit rendah dari UDR.
- Bit 0 – TXB8: Transmit Data Bit 8
TXB8 adalah bit data yang kesembilan dari karakter yang akan dikirim
ketika beroperasi dengan frame serial dengan sembilan bit data. Harus
ditulis sebelum menulis bit rendah untuk UDR.
4. UCSRC atau USART Control Status Register C
Nama bit-bit dari Register UCSRC ditunjukkan dalam Gambar 4.5.
Gambar 4.5. Bit-bit Register UCSRC (ATMega16,2010;166)
Alamat lokasi register UCSRC berbagi dengan register UBRRH. Sedang
untuk keterangan bit-bit Register UCSRC adalah sebagai berikut:
- Bit 7 – URSEL: Register Select
Bit ini digunakan untuk memilih antara mengakses register UCSRC atau
register UBRRH. Bila diberi logika satu maka digunakan sebagai register
UCSRC.
- Bit 6 – UMSEL: USART Mode Select
- Bit ini digunakan untuk memilih mode operasi komunikasi serial, bila
diberi logika ‘0’ maka mode Asikron dan bila diberi logika ‘1’satu maka
mode Sinkron
Page 64
64
- Bit 5:4 – UPM1dan UPM0: Parity Mode
Bit-bit yang digunakan untuk mengaktifkan dan menetapkan jenis generasi
dan memeriksa paritas. Jika diaktifkan, bagian pemancar akan secara
otomatis menghasilkan dan mengirim bit paritas dari data yang dikirimkan
dalam setiap frame. Dan pada bagian penerima (receiver) akan
menghasilkan nilai paritas dari data yang masuk dan bandingkan dengan
pengaturan UPM0. Jika ketidakcocokan terdeteksi, maka tanda bit PE di
UCSRA akan bernilai satu. Untuk pengaturan bit-bit UPM1 dan UPM0
ditunjukkan dalam Tabel 4.1.
Tabel 4.1.Pengaturan bit-bit UPM (ATMega16,2010;166)
- Bit 3 – USBS: Stop Bit Select
Bit ini digunakan untuk memilih jumlah Bit Stop yang akan dimasukkan
oleh bagian pengirim. Sedang untuk bagian penerima enerima
mengabaikan pengaturan ini. Bila USBS = 0 maka diatur menggunakan 1
bit stop, sedang bila USBS = 1 maka diatur mengunakan 2 bit stop.
- Bit 2:1 – UCSZ1:0: Character Size
bit UCSZ1 dan UCSZ0 dikombinasikan dengan bit UCSZ2 bit dalam
register UCSRB untuk menetapkan jumlah bit data atau ukuran karakter
dalam frame untuk penerima dan pemancar. Dan untuk pengaturan UCSZ2
sampai UCSZ0 ditunjukkan dalam Tabel 4.2.
- Bit 0 – UCPOL: Clock Polarity
Bit ini digunakan untuk mode Sinkron saja. Untuk mode Asikron diberi
logika 0. Bit UCPOL menetapkan hubungan antara perubahan output data
dan sampel input data, dan clock sinkron (XCK). Untuk pengaturan bit
UCPOL ditunjukkan dalam tabel 4.3
Page 65
65
Tabel 4.2. Kombinasi UCSZ2 sampai UCSZ0 untuk Pengaturan Ukuran Karakter (ATMega16,2010;167)
Tabel 4.3. Pengaturan Bit UCPOL (ATMega16,2010;167)
5. UBRR atau USART Baud Rate Register
UBRR terdiri dari dua buah register yaitu UBRRH dan UBRRL, register-
register ini digunakan untuk mengatur kecepatan pengiriman data atau Baud
Rate. Untuk alamat register UBRRH digunakan bersama dengan register
UCSRC. Bit-bit dari UBRRH dan UBBRL ditunjukkan dalam Gambar 4.6.
Gambar 4.6. Bit-bit Register UBRRH dan UBRRL (ATMega16,2010;167)
- Bit 15 – URSEL: Register Select
- Bit yang digunakan untuk memilih penggunaan register UBRRH atau
UCSRC, harus diberi logika 0 saat digunakan untuk register UBRRH
- Bit 14 sampai 12, cadangan
Page 66
66
- Bit 11 sampai bit 0
- Merupakan register 12-bit yang berisi USART baud rate. Regiseter
UBRRH ini berisi empat bit MSB, dan UBRRL tersebut berisi 8 bit LSB
dari USART baud rate.
Untuk perhitungan Baud Rate dan nilai register UBRR ditunjukkan dalam
tabel 4.4.
Tabel 4.4. Perhitungan Baud Rate dan nilai Register UBRR (ATMega16,2010;147)
Catatan:
1. Baud rate didefinisikan sebagai kecepatan transfer dalam bit per detik (bps).
2. BAUD = Baud rate
3. fosc = Frekuensi Osilator Clock Sistem
4.2. APLIKASI USART
USART harus diinisialisasi sebelum komunikasi apapun dapat terjadi.
Proses inisialisasi biasanya terdiri dari pengaturan baud rate, pengaturan format
frame dan memungkinkan penggunaan bagian Pemancar (transmitter) atau
Penerima (receiver) yang tergantung pada penggunaan.
Flag atau bit TXC dapat digunakan untuk memeriksa bahwa Transmitter
telah menyelesaikan semua transfer, dan flag atau bit RXC dapat digunakan untuk
memeriksa bahwa tidak ada data yang belum dibaca dalam buffer penerima
(receiver).
Contoh Soal:
Berapa nilai UCSRA, UCSRB, UCSRC, UBRRH dan UBRRL jika frekuensi
osilator kerja ATMega 16 sebesar 11.0592 MHz dengan kecepatan 9600 tanpa
Page 67
67
kecepatan ganda, format frame data: 8 bit per karakter, tanpa patitas, 1 bit stop,
menggunakan mode Asinkron, dapat menerima dan mengirim secara serial.
Jawab:
- Pada UCSRA ada dua bit yang diisi yaitu U2X dan MPCM, karena tidak
digandakan kecepatannya dan hanya mode single prosesor maka nilai
UCSRA adalah:
0 0 0 0 0 0 0 0 = 0x00
- Pada UCSRB ada tiga bit yang diisi yaitu RXEN, TXEN dan UCSZ2, dari
persoalnya ATMega dapat menerima dan mengirim menggunakan serial
dan 8 bit per karakter maka RXEN = 1, TXEN = 1 dan dengan acuan
Tabel 4.2 maka UCSZ2 = 0 sehingga nilai UCSRB adalah:
0 0 0 1 1 0 0 0 = 0x18
- Pada UCSRC semua bit yang diisi, URSEL = 1 karena mengisi UCSRA,
UMSEL = 0 karena menggunakan mode asikron, UPM1 =0 dan UPM0 = 0
karena tidak menggunakan paritas, USBS = 0 karena menggunakan 1 bit
stop, dengan acuan Tabel 4.2 maka UCZS1 = 1 dan UCZS0 = 1 karena
frame data 8 bit per karakter, UCPOL = 0 karena menggunakan mode
asinkron sehingga UCSRC adalah :
1 0 0 0 0 1 1 0 = 0x86
- Untuk mendapatkan nilai register UBRRH dan UBRRL, frekuensi
kerja/fosc = 11.0592 MHz, Baud rate = 9600 dan U2X = 0, digunakan
rumus dari tabel 4.4 yaitu:
UBRR = (fosc/(16xbaud))-1 = (11.0592 106/(16x9600)) – 1 = 71 maka
nilai UBRRH =0x00 dan UBRRL = 0x47 (71 desimal).
Sehingga hasil keseluruhan adalah:
UCSRA = 0x00
UCSRB = 0x18
Page 68
68
UCSRC = 0x86
UBRRH = 0x00
UBRRL = 0x47
Contoh Soal 1:
Buat algoritma, flowcart dan program untuk dua buah ATMega 16 yang
berkomunikasi secara Serial seperti Gambar 4.7.
Gambar 4.7. Telemetri Suhu antara dua MCU ATMega16
Jawab:
Algoritman MCU Master:
1. Inisialisasi USART: frekuensi osilator sebesar 11.0592 MHz dengan
kecepatan 9600 bps tanpa kecepatan ganda, format frame data: 8 bit per
karakter, tanpa patitas, 1 bit stop, menggunakan mode Asinkron, dapat
menerima. Sehingga:
UCSRA = 0x00
UCSRB = 0x10
UCSRC = 0x86
UBRRH = 0x00
UBRRL = 0x47
2. Inisialisasi PB output, PC output
DDRB= 0xff
DDRC=0xff
3. Tunggu selama RXC = 0
4. Baca UDR simpan di DataRX
PB
TxD RxD
PC
ADC0
TxD RxD
7Segmen Puluhan
7Segmen Satuan
LM35
Master Slave
Page 69
69
5. Pilah DataRX menjadi puluhan dan satuan
6. Tampilkan kode seven segmen dari puluhan ke PB dan kode seven segmen
dari satuan ke PC
7. Ulangi ke nomor 3
Algoritma MCU Slave:
1. frekuensi osilator sebesar 11.0592 MHz dengan kecepatan 9600 bps tanpa
kecepatan ganda, format frame data: 8 bit per karakter, tanpa patitas, 1 bit
stop, menggunakan mode Asinkron, dapat mengirim sehingga:
UCSRA = 0x00
UCSRB = 0x08
UCSRC = 0x86
UBRRH = 0x00
UBRRL = 0x47
2. untuk ADC yang digunakan ADC0, VREF = 2,56 Volt atau step size
10mV karena sensivitas LM35 sebesar 10mV/oC, frekuensi ADC sebesar
fosc/16 sehingga :
ADMUX = 0xE0
ADCSRA = 0x84
3. Start ADC dengan memberi nilai 1 pada bit ADSC dalam register
ADCSRA
4. Tunggu selama ADIF = 0
5. baca ADCH dan kirim ke UDR
6. tunggu selama TX=0
7. ulangi langkah 3
Flowcart MCU Master ditunjukkan dalam Gambar 4.8.
Page 70
70
Gambar 4.8. Flowcart MCU Master
Flowcart MCU Slave ditunjukkan dalam Gambar 4.9.
Gambar 4.9. Flowcart MCU Slave
Page 71
71
Program MCU Master:
#include <mega16.h>
unsigned char DataRX, Pul, Sat ;
unsigned char Tabel7segmen [10] ={ 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82,
0xF8, 0x80, 0x90}
void main(void)
{
UCSRA = 0x00; UCSRB = 0x08; UCSRC = 0x86; UBRRH = 0x00;
UBRRL = 0x47; // inisialisasi USART
DDRB=0xFF;
DDRC = 0xff;
while(1)
{
while(UCSRA&0x80==0); // tunggu selama RXC =0
DataRX= UDR;
Pul = (DataRX %100)/10; // nilai puluhan di Pul
Sat = DataRX % 10; // nilai satuan di Sat
PORTB = Tabel7segmen[Pul]; // ambil kode dari array sevensegmen
PORTC = Tabel7segmen [Sat]; // ambil kode dari array sevensegmen
}
}
Program MCU Slave:
#include <mega16.h>
unsigned char dataADC;
unsigned char sevensegmen [10] ={ 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82,
0xF8, 0x80, 0x90}
void main(void)
{
UCSRA = 0x00; UCSRB = 0x10; UCSRC = 0x86; UBRRH = 0x00;
UBRRL = 0x47; // inisialisasi USART
ADMUX=0xE0; ADCSRA=0x84; // inisialisasi ADC
Page 72
72
while(1)
{
ADCSRA= ADSCRA|0x40; // memberikan sinyal Start ADC ADSC =1
while (ADCSRA&0x10==0); // Cek ADIF = 0, tunggu selama =0
UDR=ADCH; // ambil data hasil konversi
ADCSRA=ADCSRA|0x10;
while(UCSRA&0x40==0);
}
}
Contoh Soal 2:
Buat algoritma, flowcart dan program di MCU ATMega16 untuk komunikasi
serial antara PC dan MCU ATMega16, PC sebagai Master, MCU ATMega 16
sebagai Slave dengan skema hubungan antara PC dan MCU ATMega 16
diperlukan converter TTL ke RS 232 seperti yang ditunjukkan dalam Gambar
4.10, sedangkan untuk blok diagram rangkaian ditunjukkan dalam Gambar 4.11.
Gambar 4.10. Skema Konverter TTL ke RS-232
Dengan ketentuan:
- Dengan kecepatan 9600 bps, format frame data: 8 bit per karakter, tanpa
patitas, 1 bit stop, menggunakan mode Asinkron.
Page 73
73
- Bila PC mengirim huruf ‘A’ maka MCU akan mengambil data suhu LM35
melalui ADC7 dan dikirim ke PC
- Bila PC mengirim huruf ‘B’ maka MCU menjalankan Motor 1 (M1)
- Bila PC mengirim huruf ‘C’ maka MCU menjalankan Motor 2 (M2)
- Bila PC mengirim huruf ‘D’ maka MCU menghentikan Motor 1 (M1)
- Bila PC mengirim huruf ‘E’ maka MCU menghentikan Motor 2 (M2)
Gambar 4.11. Blok Diagram Telekontrol PC ke MCU ATMega16
Jawab:
Algoritma MCU ATMega16:
1. frekuensi osilator sebesar 11.0592 MHz dengan kecepatan 9600 bps tanpa
kecepatan ganda, format frame data: 8 bit per karakter, tanpa patitas, 1 bit
stop, menggunakan mode Asinkron, dapat mengirim dan menerima
sehingga:
PC
TTL ke RS 232
MCU ATMega16
PC1 PC0 ADC7
M2
M2 LM35
Page 74
74
UCSRA = 0x00
UCSRB = 0x18
UCSRC = 0x86
UBRRH = 0x00
UBRRL = 0x47
2. untuk ADC yang digunakan ADC7, VREF = 2,56 Volt atau step size
10mV karena sensivitas LM35 sebesar 10mV/oC, frekuensi ADC sebesar
fosc/16 sehingga :
ADMUX = 0xE7
ADCSRA = 0x84
3. untuk PC karena digunakan sebagai pengendali Motor 1 (M1) dan Motor 2
(M2) maka PC output sehingga:
DDRC = 0xff;
4. Tunggu selama RXC = 0
5. Ambil UDR simpan di dataRX
6. Bila dataRX =’A’ maka
o Start ADC/ADSC =1
o Tunggu selama ADIF =0
o Ambil data ADCH kirim ke UDR
o Tunggu selama TXC =0
o ADIF = 1
7. Bila dataRX =’B’ maka PC0 =1, Motor 1 (M1) berjalan
8. Bila dataRX =’C’ maka PC1 =1, Motor 2 (M2) berjalan
9. Bila dataRX =’D’ maka PC0 =0, Motor 1 (M1) berhenti
10. Bila dataRX =’D’ maka PC1 =0, Motor 2 (M2) berhenti
11. Ulangi ke 4
Flowcart untuk MCU ATMega16 ditunjukkan dalam Gambar 4.12.
Page 75
75
Gambar 4.12. Flowcart untuk MCU ATMega16 Slave
Page 76
76
Dengan Program sebagai berikut:
#include <mega16.h>
unsigned char dataRX;
void main(void)
{
UCSRA = 0x00; UCSRB = 0x18; UCSRC = 0x86; UBRRH = 0x00;
UBRRL = 0x47; // init USART
ADMUX=0xE7; ADCSRA=0x84; // init ADC
DDRC=0xFF; // init PC
while(1)
{
while(UCSRA.7==0); // tunggu selama RXC =0
dataRX=UDR;
if(dataRX==’A’)
{
ADCSRA= ADSCRA|0x40; // memberikan sinyal Start ADC ADSC =1
while (ADCSRA&0x10==0); // Cek ADIF = 0, tunggu selama =0
UDR=ADCH; // ambil data hasil konversi
while(UCSRA.6==0); // tunggu selama TXC=0
ADCSRA.4=1; // ADIF=1
}
if(dataRX==’B’)
{
PORTC.0 =1; // M1 ON
}
if(dataRX==’C’)
{
PORTC.1 =1; // M2 ON
}
if(dataRX==’D’)
{
PORTC.0 =0; // M1 OFF
Page 77
77
}
if(dataRX==’E’)
{
PORTC.1 =0; // M2 OFF
} }}
Latihan 1:
Buat blok diagram. algoritma, flowcart dan program untuk MCU Master bila PC
diganti dengan MCU Master tersebut dengan ketentuan sebagai berikut:
- PB dihubungkan dengan seven segmen untuk tampilan puluhan
- PC dihubungkan dengan seven segmen untuk tampilan satuan
- PA0 dihubungkan dengan saklar aktif rendah yang digunakan untuk
memerintahkan MCU Slave untuk mengirimkan data suhu dari LM35
- PA1 dihubungkan dengan saklar aktif rendah yang digunakan untuk
memerintahkan MCU Slave untuk menjalankan Motor 1 (M1)
- PA2 dihubungkan dengan saklar aktif rendah yang digunakan untuk
memerintah MCU Slave untuk menjalankan Motor 2 (M2)
- PA3 dihubungkan dengan saklar aktif rendah yang digunakan untuk
memerintahkan MCU Slave untuk menghentikan Motor 1 (M1)
- PA4 dihubungkan dengan saklar aktif rendah yang digunakan untuk
memerintah MCU Slave untuk menghentikan Motor 2 (M2)
Latihan 2:
Buat Sistem telemetri atau telekontrol antara dua MCU Master dan Slave atau
antara PC dan MCU dari permasalahan yang ada di sekitar kita.
Page 78
78
DAFTAR PUSTAKA
Andrianto, Heri, 2008, Pemrograman Mikrokontroler AVR ATMega16,
Bandung, Informatika Bandung.
ATMega16, Datasheet, 2010, Atmel Corporation
LM35/LM35A/LM35C/LM35CA/LM35D, Datasheet, 1994, Precision
Centigrade Temperature Sensors, , National Semiconductor Corporation
Seven Segment Displays, Datasheet 14.2 mm (0.56 inch), 2002, Agilent
Technologies.
Page 79
79
GLOSARIUM
ADC Analog to Digital Converter
Pengolah Sinyal analog menjadi data Digital
ALU Aritmarik Logik Unit
AT Mikrokontroler buatan Atmel Co.
AVR Alf and Vegard’s Risc prosesor
Prosesor yang dibuat oleh pabrik ATMEL Co.
Baud rate Kecepatan pengiriman data serial
Bit Satu digit dalam system bilangan biner
Boot Saat pengaktifan Mikrokontroler
Byte 8 bit 8 digit dalam biner
CA common anoda
anoda yang disatukan
CC common katoda
katoda yang disatukan
Chip Integrated Circuit atau IC
CISC Complex Instruction Set Computing
CMOS Complementary metal–oxide–semiconductor
Salah satu jenis bahan pembuatan IC
Counter Penghitung
EEPROM Electrical Eresable Programmable ROM
ROM yang dapat dihapus dengan elektrik dan dapat di program
ulang
Flash Memori tempat penyimpanan program
fosc Frekuensi osilator dari mikrokontroler atau frekuensi kerja
mikrokontroler
header Kepala program
Interrupt Interupsi atau penyela
ISP In System Programming
LED Light Emitting Diode
Main Program utama
Page 80
80
Master-Slave Model komunikasi dengan satu perangkat memiliki kontrol
searah atas satu atau lebih perangkat lain.
MCS Microcontroller Sistem
MHz Mega Hz atau 106 Hz
MIPS Mega Instruction Per Second
OnChip Tersedia di dalam IC
Port Jalur input-ouput
Prescaler Pembagi frekuensi
PWM Pulse Width Modulation
RAM Random Access Memory
Memori yang dapat dibaca dan ditulis
RISC Reduced Instruction Set Computing
ROM Read Only Memory
Memori yang hanya bisa dibaca
Sensor sesuatu yang digunakan untuk mendeteksi adanya perubahan
lingkungan fisik atau kimia
SPI Serial Periperal Interface
SRAM Static RAM
Step size Besar tegangan setiap kenaikan digit pada ADC
Timer Pewaktu