Top Banner
bocahwates Linux itu ternyata menyenangkan… >_< Robotic About Me Hacking Campus Background Maret 8, 2011 di Programing 12 Komentar Belajar Mikrokontroler Dengan Bahasa C APA ITU MIKROKONTROLER Komputer hadir dalam kehidupan manusia baru 50 tahun terakhir, namun efeknya sangat besar dalam merubah kehidupan manusia, bahkan melebihi penemuan manusia lainnya seperti radio, telepon, automobil, dan televisi. Begitu banyak aplikasi memanfaatkan komputer, terutama dalam pemanfaatan kemampuan chip mikroprosesor di dalamnya yang dapat melakukan komputasi sangat cepat, dapat bekerja sendiri dengan diprogram, dan dilengkapi memori untuk menyimpan begitu banyak data. Seiring dengan perkembangan zaman, semakin luaslah kebutuhan akan kemampuan seperti yang dimiliki oleh komputer, sehingga menyebabkan munculnya terobosan-terobosan baru yang salah satunya adalah dibuatnya chip mikrokontroler. Mikrokontroler adalah single chip computer yang memiliki kemampuan untuk diprogram dan digunakan untuk tugas-tugas yang berorientasi kontrol. Mikrokontroler datang dengan dua alasan utama, yang pertama
34

materi mikrokontroler

Dec 07, 2015

Download

Documents

TikaaDantS

rangkuman mikrokontoler
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: materi mikrokontroler

bocahwatesLinux itu ternyata menyenangkan… >_<

Robotic About Me Hacking Campus Background

Maret 8, 2011  di Programing

12 Komentar

Belajar Mikrokontroler Dengan Bahasa C

APA ITU MIKROKONTROLER

Komputer hadir dalam kehidupan manusia baru 50 tahun terakhir, namun efeknya sangat besar

dalam merubah kehidupan manusia, bahkan melebihi penemuan manusia lainnya seperti radio,

telepon, automobil, dan televisi. Begitu banyak aplikasi memanfaatkan komputer, terutama

dalam pemanfaatan kemampuan chip mikroprosesor di dalamnya yang dapat melakukan

komputasi sangat cepat, dapat bekerja sendiri dengan diprogram, dan dilengkapi memori untuk

menyimpan begitu banyak data. Seiring dengan perkembangan zaman, semakin luaslah

kebutuhan akan kemampuan seperti yang dimiliki oleh komputer, sehingga menyebabkan

munculnya terobosan-terobosan baru yang salah satunya adalah dibuatnya chip mikrokontroler.

Mikrokontroler adalah single chip computer yang memiliki kemampuan untuk diprogram dan

digunakan untuk tugas-tugas yang berorientasi kontrol. Mikrokontroler datang dengan dua

alasan utama, yang pertama adalah kebutuhan pasar (market need) dan yang kedua adalah

perkembangan teknologi baru. Yang dimaksud dengan kebutuhan pasar adalah kebutuhan yang

luas dari produk-produk elektronik akan perangkat pintar sebagai pengontrol dan pemroses data.

Sedangkan yang dimaksud dengan perkembangan teknologi baru adalah perkembangan

teknologi semikonduktor yang memungkinkan pembuatan chip dengan kemampuan komputasi

yang sangat cepat, bentuk yang semakin mungil, dan harga yang semakin murah.

Page 2: materi mikrokontroler

PERBEDAAN MIKROKONTROLER DENGAN MIKROPROSESOR

Terdapat perbedaan yang signifikan antara mikrokontroler dan mikroprosessor. Perbedaan yang

utama antara keduanya dapat dilihat dari dua faktor utama yaitu arsitektur perangkat keras

(hardware architecture) dan aplikasi masing-masing.

Ditinjau dari segi arsitekturnya, mikroprosesor hanya merupakan single chip CPU, sedangkan

mikrokontroler dalam IC-nya selain CPU juga terdapat device lain yang memungkinkan

mikrokontroler berfungsi sebagai suatu single chip computer. Dalam sebuah IC mikrokontroler

telah terdapat ROM, RAM, EPROM, serial interface dan paralel interface, timer, interrupt

controller, konverter Anlog ke Digital, dan lainnya (tergantung feature yang melengkapi

mikrokontroler tersebut).

Sedangkan dari segi aplikasinya, mikroprosessor hanya berfungsi sebagai Central Processing

Unit yang menjadi otak komputer, sedangkan mikrokontroller, dalam bentuknya yang mungil,

pada umumnya ditujukan untuk melakukan tugas–tugas yang berorientasi kontrol pada

rangkaian yang membutuhkan jumlah komponen minimum dan biaya rendah (low cost).

APLIKASI MIKROKONTROLER

Karena kemampuannya yang tinggi, bentuknya yang kecil, konsumsi dayanya yang rendah, dan

harga yang murah maka mikrokontroler begitu banyak digunakan di dunia. Mikrokontroler

digunakan mulai dari mainan anak-anak, perangkat elektronik rumah tangga, perangkat

pendukung otomotif, peralatan industri, peralatan telekomunikasi, peralatan medis dan

kedokteran, sampai dengan pengendali robot serta persenjataan militer.

Terdapat beberapa keunggulan yang diharapkan dari alat-alat yang berbasis mikrokontroler

(microcontroller-based solutions) :

Kehandalan tinggi (high reliability) dan kemudahan integrasi dengan komponen lain (high degree

of integration).

Ukuran yang semakin dapat diperkecil (reduced in size).

Penggunaan komponen dipersedikit (reduced component count) yang juga akan menyebabkan

biaya produksi dapat semakin ditekan (lower manufacturing cost).

Waktu pembuatan lebih singkat (shorter development time) sehingga lebih cepat pula dijual ke

pasar sesuai kebutuhan (shorter time to market).

Konsumsi daya yang rendah (lower power consumption).

PERKEMBANGAN MIKROKONTROLER

Karena kebutuhan yang tinggi terhadap “chip-chip pintar” dengan berbagai fasilitasnya, maka

berbagai vendor juga berlomba untuk menawarkan produk-produk mikrokontrolernya. Hal

Page 3: materi mikrokontroler

tersebut terjadi semenjak tahun 1970-an.  Motorola mengeluarkan seri mikrokontroler 6800 yang

terus dikembangkan hingga sekarang menjadi 68HC05, 68HC08, 68HC11, 68HC12, dan

68HC16. Zilog juga mengeluarkan seri mikroprosesor Z80-nya yang terkenal dan terus

dikembangkan hingga kini menjadi Z180 dan kemudian diadopsi juga oleh mikroprosesor Rabbit.

Intel mengeluarkan mikrokontrolernya yang populer di dunia yaitu 8051, yang karena begitu

populernya maka arsitektur 8051 tersebut kemudian diadopsi oleh vendor lain seperti Phillips,

Siemens, Atmel, dan vendor-vendor lain dalam produk mikrokontroler mereka. Selain itu masih

ada mikrokontroler populer lainnya seperti Basic Stamps, PIC dari Microchip, MSP 430 dari

Texas Instrument dan masih banyak lagi.

Selain mikroprosesor dan mikrokontroler, sebenarnya telah bemunculan chip-chip pintar lain

seperti DSP prosesor dan Application Spesific Integrated Circuit (ASIC). Di masa depan, chip-

chip mungil berkemampuan sangat tinggi akan mendominasi semua desain elektronik di dunia

sehingga mampu memberikan kemampuan komputasi yang tinggi serta meminimumkan jumlah

komponen-komponen konvensional.

OVERVIEW MIKROKONTROLER AVR

Mikrokontroler AVR merupakan salah satu jenis arsitektur mikrokontroler yang menjadi andalan

Atmel. Arsitektur ini dirancang memiliki berbagai kelebihan dan merupakan penyempurnaan dari

arsitektur mikrokontroler-mikrokontroler yang sudah ada.

Berbagai seri mikrokontroler AVR telah diproduksi oleh Atmel dan digunakan di dunia sebagai

mikrokontroler yang bersifat low cost dan high performance. Di Indonesia, mikrokontroler AVR

banyak dipakai karena fiturnya yang cukup lengkap, mudah untuk didapatkan, dan harganya

yang relatif terjangkau. Antar seri mikrokontroler AVR memiliki beragam tipe dan fasilitas, namun

kesemuanya memiliki arsitektur yang sama, dan juga set instruksi yang relatif tidak berbeda.

Berikut tabel perbandingan beberapa seri mikrokontroler AVR buatan Atmel.

Seri

Flash (KBytes)

RAM (Bytes)

EEPROM (KBytes)

Pin I/O

Timer 16-bit

Timer 8-bit

UART

PWM

ADC 10-bit

SPI

ISP

ATmega8 8 1024 0.5 23 1 1 1 3 6/8 1 Ya

ATmega8535 8 512 0.5 32 2 2 1 4 8 1 Ya

ATmega16 16 1024 0.5 32 1 2 1 4 8 1 Ya

ATmega162 16 1024 0.5 35 2 2 2 6 8 1 Ya

ATmega32 32 2048 1 32 1 2 1 4 8 1 Ya

Page 4: materi mikrokontroler

ATmega128 128 4096 4 53 2 2 2 8 8 1 Ya

ATtiny12 1 - 0.0625 6 - 1 - - - - Ya

ATtiny2313 2 128 0.125 18 1 1 1 4 - 1 Ya

ATtiny44 4 256 0.25 12 1 1 - 4 8 1 Ya

ATtiny84 8 512 0.5 12 1 1 - 4 8 1 Ya

Keterangan:

Flash adalah suatu jenis Read Only Memory yang biasanya diisi dengan program hasil buatan

manusia yang harus dijalankan oleh mikrokontroler.

RAM (Random Acces Memory) merupakan memori yang membantu CPU untuk penyimpanan

data sementara dan pengolahan data ketika program sedang running.

EEPROM  (Electrically Erasable Programmable Read Only Memory) adalah memori untuk

penyimpanan data secara permanen oleh program yang sedang running.

Port I/O adalah kaki untuk jalur keluar atau masuk sinyal sebagai hasil keluaran ataupun

masukan bagi program.

Timer adalah modul dalam hardware yang bekerja untuk menghitung waktu/pulsa .

UART (Universal Asynchronous Receive Transmit) adalah jalur komunikasi data khusus secara

serial asynchronous.

PWM (Pulse Width Modulation) adalah fasilitas untuk membuat modulasi pulsa.

ADC (Analog to Digital Converter) adalah fasilitas untuk dapat menerima sinyal analog dalam

range tertentu untuk kemudian dikonversi menjadi suatu nilai digital dalam range tertentu.

SPI (Serial Peripheral Interface) adalah jalur komunikasi data khusus secara serial secara serial

synchronous.

ISP (In System Programming) adalah kemampuan khusus mikrokontroler untuk dapat diprogram

langsung dalam sistem rangkaiannya dengan membutuhkan jumlah pin yang minimal.

ARSITEKTUR MIKROKONTROLER AVR

Mikrokontroler AVR sudah menggunakan konsep arsitektur Harvard yang memisahkan memori

dan bus untuk data dan program, serta sudah menerapkan single level pipelining. Selain itu

mikrokontroler AVR juga mengimplementasikan RISC (Reduced Instruction Set Computing)

sehingga eksekusi instruksi dapat berlangsung sangat cepat dan efisien.

Blok sistem mikrokontroler AVR adalah sebagai berikut.

Keterangan:

Flash adalah suatu jenis Read Only Memory yang biasanya diisi dengan program hasil buatan

manusia yang harus dijalankan oleh mikrokontroler.

Page 5: materi mikrokontroler

RAM (Random Acces Memory) merupakan memori yang membantu CPU untuk penyimpanan

data sementara dan pengolahan data ketika program sedang running.

EEPROM  (Electrically Erasable Programmable Read Only Memory) adalah memori untuk

penyimpanan data secara permanen oleh program yang sedang running.

Port I/O adalah kaki untuk jalur keluar atau masuk sinyal sebagai hasil keluaran ataupun

masukan bagi program.

Timer adalah modul dalam hardware yang bekerja untuk menghitung waktu/pulsa .

UART (Universal Asynchronous Receive Transmit) adalah jalur komunikasi data khusus secara

serial asynchronous.

PWM (Pulse Width Modulation) adalah fasilitas untuk membuat modulasi pulsa.

ADC (Analog to Digital Converter) adalah fasilitas untuk dapat menerima sinyal analog dalam

range tertentu untuk kemudian dikonversi menjadi suatu nilai digital dalam range tertentu.

SPI (Serial Peripheral Interface) adalah jalur komunikasi data khusus secara serial secara serial

synchronous.

ISP (In System Programming) adalah kemampuan khusus mikrokontroler untuk dapat diprogram

langsung dalam sistem rangkaiannya dengan membutuhkan jumlah pin yang minimal.

ARSITEKTUR MIKROKONTROLER AVR

Mikrokontroler AVR sudah menggunakan konsep arsitektur Harvard yang memisahkan memori

dan bus untuk data dan program, serta sudah menerapkan single level pipelining. Selain itu

mikrokontroler AVR juga mengimplementasikan RISC (Reduced Instruction Set Computing)

sehingga eksekusi instruksi dapat berlangsung sangat cepat dan efisien.

Blok sistem mikrokontroler AVR adalah sebagai berikut.

PENJELASAN FUNGSI PIN MIKROKONTROLER AVR

Page 6: materi mikrokontroler

IC mikrokontroler dikemas (packaging) dalam bentuk yang berbeda. Namun pada dasarnya

fungsi kaki yang ada pada IC memiliki persamaan. Gambar salah satu bentuk IC seri

mikrokontroler AVR ATmega8535 dapat dilihat berikut.

Berikut adalah penjelasan fungsi tiap kaki.

PORT A

Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor

(dapat diatur per bit). Output buffer Port A dapat memberi arus 20 mA dan dapat mengendalikan

display LED secara langsung. Data Direction Register port A (DDRA) harus disetting terlebih

dahulu sebelum Port A digunakan. Bit-bit DDRA diisi 0 jika ingin memfungsikan pin-pin port A

yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, kedelapan pin port A

juga digunakan untuk masukan sinyal analog bagi A/D converter.

PORT B

Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor

(dapat diatur per bit). Output buffer Port B dapat memberi arus 20 mA dan dapat mengendalikan

display LED secara langsung. Data Direction Register port B (DDRB) harus disetting terlebih

dahulu sebelum Port B digunakan. Bit-bit DDRB diisi 0 jika ingin memfungsikan pin-pin port B

yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Pin-pin port B juga memiliki

untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam tabel berikut.

PORT C

Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor

(dapat diatur per bit). Output buffer Port C dapat memberi arus 20 mA dan dapat mengendalikan

Page 7: materi mikrokontroler

display LED secara langsung. Data Direction Register port C (DDRC) harus disetting terlebih

dahulu sebelum Port C digunakan. Bit-bit DDRC diisi 0 jika ingin memfungsikan pin-pin port C

yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, dua pin port C (PC6

dan PC7) juga memiliki fungsi alternatif sebagai oscillator untuk timer/counter 2.

PORT D

Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor

(dapat diatur per bit). Output buffer Port D dapat memberi arus 20 mA dan dapat mengendalikan

display LED secara langsung. Data Direction Register port D (DDRD) harus disetting terlebih

dahulu sebelum Port D digunakan. Bit-bit DDRD diisi 0 jika ingin memfungsikan pin-pin port D

yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, pin-pin port D juga

memiliki untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam tabel berikut.

RESET

RST pada pin 9 merupakan reset dari AVR. Jika pada pin ini diberi masukan low selama minimal

2 machine cycle maka system akan di-reset.

XTAL1

XTAL1 adalah masukan ke inverting oscillator amplifier dan input ke internal clock operating

circuit.

XTAL2

XTAL2 adalah output dari inverting oscillator amplifier.

AVcc

Avcc adalah kaki masukan tegangan bagi A/D Converter. Kaki ini harus secara eksternal

terhubung ke Vcc melalui lowpass filter.

AREF

AREF adalah kaki masukan referensi bagi A/D Converter. Untuk operasionalisasi ADC, suatu

level tegangan antara AGND dan Avcc harus dibeikan ke kaki ini.

AGND

AGND adalah kaki untuk analog ground. Hubungkan kaki ini ke GND, kecuali jika board memiliki

anlaog ground yang terpisah.

PEMROGRAMAN BAHASA C UNTUK AVR

Bahasa C luas digunakan untuk pemrograman berbagai jenis perangkat, termasuk

mikrokontroler. Bahasa ini sudah merupakan high level language, dimana memudahkan

programmer menuangkan algoritmanya. Untuk mengetahui dasar bahasa C dapat dipelajari

sebagai berikut.

1. Struktur penulisan program

#include < [library1.h] > // Opsional

Page 8: materi mikrokontroler

#include < [library2.h] > // Opsional#define [nama1] [nilai] ; // Opsional#define [nama2] [nilai] ; // Opsional[global variables] // Opsional[functions] // Opsionalvoid main(void) // Program Utama{[Deklarasi local variable/constant][Isi Program Utama]}

2. Tipe data

char : 1 byte ( -128 s/d 127 )

unsigned char : 1 byte ( 0 s/d 255 )

int : 2 byte ( -32768 s/d 32767 )

unsigned int : 2 byte ( 0 s/d 65535 )

long : 4 byte ( -2147483648 s/d 2147483647 )

unsigned long : 4 byte ( 0 s/d 4294967295 )

float : bilangan desimal

array : kumpulan data-data yang sama tipenya.

3. Deklarasi variabel & konstanta

Variabel adalah memori penyimpanan data yang nilainya dapat diubah-ubah.

Penulisan : [tipe data] [nama] = [nilai] ;

Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah.

Penulisan : const [nama] = [nilai] ;

Tambahan:

Global variabel/konstanta yang dapat diakses di seluruh bagian program.

Local variabel/konstanta yang hanya dapat diakses oleh fungsi tempat dideklarasikannya.

4. Statement

Statement adalah setiap operasi dalam pemrograman, harus diakhiri dengan [ ; ] atau [ } ].

Statement tidak akan dieksekusi bila diawali dengan tanda [ // ] untuk satu baris. Lebih dari 1

Page 9: materi mikrokontroler

baris gunakan pasangan [ /* ] dan [ */ ]. Statement yang tidak dieksekusi disebut juga

comments / komentar.

Contoh:

suhu=adc/255*100; //contoh rumus perhitungan suhu

5. Function

Function adalah bagian program yang dapat dipanggil oleh program utama.

Penulisan :

[tipe data hasil] [nama function]([tipe data input 1],[tipe data input 2]){[statement] ;}

6. Conditional statement dan looping

if else : digunakan untuk penyeleksian kondisi

if ( [persyaratan] ) {[statement1];[statement2];}else {[statement3];[statement4];}

for : digunakan untuk looping dengan jumlah yang sudah diketahui

for ( [nilai awal] ; [persyaratan] ; [operasi nilai] ) {[statement1];[statement2];}

while : digunakan untuk looping jika dan salama memenuhi syarat tertentu

while ( [persyaratan] ) {[statement1];[statement2];}

do while : digunakan untuk looping jika dan salama memenuhi syarat tertentu, namun min 1 kali

do {[statement1];[statement2];}while ( [persyaratan] )

switch case : digunakan untuk seleksi dengan banyak kondisi

Page 10: materi mikrokontroler

switch ( [nama variabel] ) {case [nilai1]: [statement];break;case [nilai2]: [statement];break;}

7. Operasi logika dan biner

Logika

AND :&&

NOT : !

OR : ||

Biner

AND : &

OR : |

XOR : ^

Shift right: >>

Shift left : <<

Komplemen : ~

8. Operasi relasional (perbandingan)

Sama dengan : ==

Tidak sama dengan : !=

Lebih besar : >

Lebih besar sama dengan : >=

Lebih kecil : <

Lebih kecil sama dengan : <=

9. Operasi aritmatika

+ , – , * , / : tambah,kurang,kali,bagi

+= , -= , *= , /= : nilai di sebelah kiri operator di tambah/kurang/kali/bagi dengan nilai di sebelah

kanan operator

% : sisa bagi

Page 11: materi mikrokontroler

++ , — : tambah satu (increment) , kurang satu (decrement)

Contoh :

a = 5 * 6 + 2 / 2 -1 ; maka nilai a adalah 30

a *= 5 ; jika nilai awal a adalah 30, maka nilai a = 30×5 = 150.

a += 3 ; jika nilai awal a adalah 30, maka nilai a = 30+5 = 33.

a++ ; jika nilai awal a adalah 5 maka nilai a = a+1 = 6.

a– ; jika nilai awal a adalah 5 maka nilai a = a-1 = 4.

RANGKAIAN SISTEM MINIMUM AVR 8535

Sistem minimum (sismin) mikrokontroler adalah rangkaian elektronik minimum yang diperlukan

untuk beroperasinya IC mikrokontroler. Sismin ini kemudian bisa dihubungkan dengan rangkaian

lain untuk menjalankan fungsi tertentu. Di keluarga mikrokontroler AVR, seri 8535 adalah salah

satu seri yang sangat banyak digunakan.

Untuk membuat rangkaian sismin Atmel AVR 8535 diperlukan beberapa komponen yaitu:

IC mikrokontroler ATmega8535

1 XTAL 4 MHz atau 8 MHz (XTAL1)

3 kapasitor kertas yaitu dua 22 pF (C2 dan C3) serta 100 nF (C4)

1 kapasitor elektrolit 4.7 uF (C12) 2 resistor yaitu 100 ohm (R1) dan 10 Kohm (R3)

1 tombol reset pushbutton (PB1)

Selain itu tentunya diperlukan power suply yang bisa memberikan tegangan 5V DC.

Rangkaian sistem minimum ini sudah siap untuk menerima sinyal analog (fasilitas ADC) di port

A. Gambar rangkaiannya adalah sebagai berikut.

CARA BELAJAR

Belajar mikrokotroler pada hakikatnya adalah bermain-main dengan bilangan. Input apapun yang

masuk ke dalam CPU terlebih dahulu harus diubah ke dalam bentuk bilangan biner. Bilangan

biner terdiri dari angka 1 (ya/ada tegangan) dan 0 (tidak/tidak ada tegangan). Mengapa CPU

yang hanya bisa membedakan angka 1 dan 0 bisa begitu canggih? Untuk ilustrasi, jika kita

punya memori 1 bit maka memori tersebut mampu menyimpan 2 kemungkinan yaitu 1 dan 0.

Jika kita punya memori 4 bit maka memori tersebut mampu menyimpan 4 kemungkinan yaitu 00,

01, 10, 11. Semakin banyak bit yang kita miliki maka semakin banyak kemungkinan yang ada.

Bit KemungkinanBit Kemungkinan

0

21

Page 12: materi mikrokontroler

Bit

0 0

4

0 1

1 0

KONSEP MIKROKONTROLER

Mikrokontroler  adalah sebuah sistem microprosesor di mana di dalamnya sudah berisi CPU,

ROM, RAM, I/O, Clock, dan peralatan internal lainya yang saling terhubung dan terorganisasi

dengan baik oleh pabrik pembuatnya dan dikemas dalam satu chip yang siap dipakai. Sehingga

kita tinggal memprogram isi ROM sesuai aturan penggunaan oleh pabrik yang membuatnya.

Cara mudah mengoperasikan peralatan internal mikrokontroler adalah dengan mempelajari

register-register pengendali peralatan tersebut.

Dalam menulis script program kita harus menggunakan bahasa pemprograman tersendiri agar

script yang kita buat dapat dimengerti oleh CPU. Bahasa pemprograman yang sering digunakan

adalah bahasa Assembler dan Bahasa C. Dibandingkan bahasa Assembler, Bahasa C adalah

bahasa HLL (High Level Language) atau bahasa menengah yang mudah untuk dibaca dan

dibuat.

SISTEM BILANGAN DAN KONVERSI BILANGAN

Dalam bermain-main dengan mikrokontroler kita akan sering menemui 3 sistem bilangan yang

biasa digunakan pada pemprograman, yaitu bilangan desimal, bilangan heksadesimal dan

bilangan biner.

Bilangan Desimal

Bilangan desimal (basis 10) adalah bilangan yang memiliki sepuluh simbol angka, yaitu 0, 1, 2,

3, 4, 5, 6, 7, 8, 9.

Aturan penulisannya langsung, misal 214.

Bilangan Heksadesimal

Bilangan heksadesimal (basis 16) adalah bilangan yang memiliki 16 simbol angka, yaitu 0, 1, 2,

3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Aturan penulisannya diawali dengan 0x, misal 0x2D.

Bilangan Biner

Blangan biner (basis 2) adalah bilangan yang memiliki 2 simbol angka, yaitu 0, 1.

Page 13: materi mikrokontroler

Aturan penulisannya diawali dengan 0b, misal ob11011001.

Konversi bilangan:

Konversi Biner ke Hexadesimal

0b10110011 = ?

Bagi menjadi dua bagian nible atas (1011) dan nible bawah (0011)

1011 = 8+0+2+1 = B

0011 = 0+0+2+1 = 3

0b10110011 = 0xB3

Konversi Hexadesimal ke Biner

0x3F = ?

Cari nible atas (4) dan nible bawah (F)

3 = 0+0+2+1 = 0011 biner

F = 8+4+2+1 = 1111 biner

0x3F = 0b00111111

Konversi Biner ke Desimal

0b10110001 = ?

0b10110001 = (1×27)+(0×26)+(1×25)+ (1×24)+ (0×23)+(0×22)+(0×21)+(1×20)

0b10110001 = 128+0+32+16+0+0+0+1 = 177

Konversi Heksadesimal ke Desimal

0x2C = ?

0x2C = (2×161)+ (Ax160)

0x2C = 32+10 = 47

Page 14: materi mikrokontroler

Konversi Desimal ke Heksadesimal

500 = ?

500/16 = 31                                sisa 4 (lsd)

31/16 = 1 (msd)       sisa 15 (dalam heksa = F)

500 = 14F

Konversi Desimal ke Biner

200 = ?

Ubah desimal ke heksadesimal lalu ke biner

200/16 = 12 (dalam heksa = C) sisa 8

200 = 0xC8

C = 8+4+0+0 = 1100 biner

8 = 8+0+0+0 = 1000 biner

200 = 0xC8 = 0b11001000

Bilangan kelipatan (2n) :

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 (2n)

1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536 (desimal)

1, 2, 4, 8, 10, 20, 40, 80, 100, 200, 400, 800, 1000, 2000, 4000, 8000, 10000 (heksa desimal)

Bagaimana jika kita sudah bermain dengan bilangan 16 sampai 32 bit? Alternatif termudah

adalah kita dapat menggunakan kalkulator pada Microsoft Windows (klik Start – All Programs –

Accecories – Calculator).

Pilih programmer

Klik Dec lalu isikan angka desimal, misal 255

Klik Hex, maka secara otomatis angka 255 akan berubah menjadi FF

Page 15: materi mikrokontroler

APLIKASI YANG DIPERLUKAN

Untuk keperluan belajar mikrokontroler  ada beberapa aplikasi yang akan kita gunakan untuk

penulisan script, analisa program yang telah kita buat, simulasi hardware dan pembuatan

rangkaian elektronik, yaitu:

1. CodeVisionAVR C Compiler

Aplikasi CodeVisionAVR C Compiler  digunakan untuk penulisan script dan mendownload script

yang telah dibuat ke dalam chip.

2. AVR Studio 4

AVR Studio 4 digunakan untuk simulasi dan menganalisa script yang telah ditulis apakah sesuai

dengan yang dikehendaki atau tidak.

3. Proteus 7 Professional H

- ISIS 7 Professional

ISIS 7 Professional digunakan untuk membuat simulasi hardware (rangkaian elektronik)

sehingga script yang telah ditulis dapat diterapkan langsung ke dalam simulasi. -

- ARES 7 Professional

ARES 7 Professional digunakan untuk membuat rangkaian elektronik agar dapat dicetak di PCB.

INTERRUPT

Untuk memudahkan mengerti tentang interrupt kita dapat mengambil sebuah contoh berikut.

Ketika kita menjalani aktivitas rutin seperti membaca koran pada pagi hari, tiba-tiba telpon

berdering dan kita menghentikan aktivitas membaca tersebut untuk melakukan aktivitas lain yaitu

mengangkat telpon, setelah selesai mengangkat telpon kita akan kembali untuk melanjutkan

membaca koran.

Interrupt dapat diartikan pula sebagai menyela, mengangkat telpon merupakan proses interrupt

sedangkan membaca koran adalah aktivitas rutin yang kita lakukan.

Untuk membangkitkan interrupt ada 4 kemungkinan, yaitu :

Page 16: materi mikrokontroler

1. Level rendah                         (setelah tombol dilepas)

2. Datar                                        (tombol ditekan lama)

3. Perpindahan 1 ke 0             (saat mulai ditekan)

4. Perpindahan 0 ke 1             (saat mulai dilepas)

Sebelum menggunakan interrupt langkah mengatur konfigurasi pada CodeVisionAVR C

Compiler .

1. Set MCU Control Register – MCUCR

Bit registri interrupt

Tabel untuk INT1

Tabel untuk INT0

Contoh :

Jika yang diinginkan adalah The Rissing Edge (perpindahan 0 ke 1) artinya saat kita mulai

menekan tombol maka interrupt terjadi dan kita akan menggunakan INT0.

Lihat tabel untuk INT0, The Rissing Edge terdiri dari ISC01=1 dan ISC00=1

Lihat Bit registri interrupt, set MCUCR untuk ISC01 dan ISC00 berada pada bit 0 dan bit 1

Jadi untuk memberi nilai dari ISC01=1 dan ISC00=1 maka penulisannya adalah MCUCR=0×03.

Sesuai dengan tabel untuk INT0 dan kondisi yang diinginkan

2. Set MCU Control Status Register – MCUCSR

Digunakan untuk interrupt 2 (INT2)

Penggunaannya sama seperti interrupt 0 dan interrupt 1.

Page 17: materi mikrokontroler

3. Set General Interrupt Control Register – GICR

Pilih interrupt mana yang akan digunakan, misal INT1 maka set GICR=0×80.

General Interrupt Flag Register – GIFR

Adalah penanda jika terjadi interrupt

Secara otomatis GIFR akan menampilan flag mana yang dipakai untuk interrupt.

TIMER0

Memiliki hingga 10 bit clock prescale (pemilh clock yang masuk ke timer/counter)

Bagaimana perbedaan timer dan counter??

Perhatikan gambar di bawah ini.

Timer (pembagi)

Dari gambar tersebut X-tal 1 Mhz yang merupakan frekuensi dari luar software karena berasal

dari hardware diseleksi dengan Prescaler 1024 sehingga Clock time yang didapat, yaitu:

Page 18: materi mikrokontroler

Clock time           = Xtal/Prescaler

Clock time           = 1.000.000/1024

Clock time           = 976 Hz

Clock time           = 0,976 kHz

Clock time (f)     = 1/ T

Periode (T)         = 1/ f

Periode (T)         =1/ 976 detik

Pada mode normal TCNT akan mencacah hingga 0xFF (255) setelah itu akan terjadi overflow,

keajadian ini akan terus berlangsung selama program berjalan.

1 overflow (OV)                = jumlah cacahan x frekuensi

1 overflow (OV)                =256 x (1/976)

1 overflow (OV)                =0,26229508196721311475409836065574 detik

Dalam 1 detik berapa kali terjadi overflow?

S          = 1/ 0,26229508196721311475409836065574

S          =3,8125 kali

Jadi TCNT akan mencacah hingga 3 kali overflow

N1     = 256 x 3

N1     =768

N1     =0×0300

Ditambah dengan cacahan kedua

Page 19: materi mikrokontroler

N2     = 256 x 0, 8125

N2     =208

N2     =0xD0

“Jadi 1 detik diselesaikan dalam 3 kali overflow + cacahan hingga 0xD6”

“T = 3 * (1 + 0xFF) + 0xD0”

TIMER1

Timer (pembagi)

Dari gambar tersebut X-tal 1 Mhz yang merupakan frekuensi dari luar software karena berasal

dari hardware diseleksi dengan Prescaler 1024 sehingga Clock time yang didapat, yaitu:

Clock time           = Xtal/Prescaler

Clock time           =1000000/1024

Clock time           =976,5625 Hz

Clock time           =0,976 kHz

Clock time (f)     = 1/ T

Periode (T)         = 1/ f

Periode (T)         =1/ 976,5625 detik

Pada mode normal TCNT akan mencacah hingga 0xFFFF (65535) setelah itu akan terjadi

overflow, keajadian ini akan terus berlangsung selama program berjalan.

TCNT dibagi menjadi 2 nible (atas dan bawah) jika TCNT akan mencacah hingga 0xAECF

TCNTH      = 0xAE

TCNTL       = 0xCF

Page 20: materi mikrokontroler

1 overflow (OV)                = 65535 x frekuensi

1 overflow (OV)                =65535 x (1/976,5625)

1 overflow (OV)                =67,10784 detik

Dalam 1 detik berapa kali terjadi overflow?

S          = 1/ 67,10784

S          =0,01490138857099259937438010223545 kali

Belum terjadi overflow!

Jadi TCNT akan mencacah hingga cacahan

N        = 65535 x 0,01490138857099259937438010223545

N        =976,5625

Jadi agar terjadi overflow maka TCNT diset pada nilai awal

TCNT   = Jumlah cacahan – N

TCNT   = 65535 – 976,5625

TCNT   = 64558,4375 (desimal)

TCNT   = 0xFC2E (heksadesimal)

“Jadi 1 detik diselesaikan dalam 1 kali overflow dengan nilai TCNT = FC2E”

Rumus menentukan overflow

M      = (1 + 0xFFFF) adalah maksimal jumlah cacahan agar terjadi overflow (65535)

f         = X-Tal / Prescaler

Page 21: materi mikrokontroler

T       = 1 / f

OV   = Max / T

OV   =Max / f

OV   =(Max * Prescaler) / X-Tal

S       = 1 / OV

S       =X-Tal / (Max * Prescaler)

N       = Max * (X-Tal / (Max * Prescaler))

N       =X-Tal / Prescaler

TCNT  =  Max – (t * N)

Hitung ulang contoh :

TCNT     = Max – (t * N)

TCNT     =Max – (t * (X-Tal / Prescaler))

TCNT     =(1 + 65535) – (1 * (1.000.000/1024))

TCNT     =(1 + 65535) – 976,5625

TCNT     =64559,4375 (desimal)

TCNT     =0xFC2F (heksadesimal)

TCNTH      = 0xFC

TCNTL       = 0x2F

CONTOH CARA MENGESET TIMER0

1. Set TCCR0 dengan memilih presclaer dan mode operasi

Page 22: materi mikrokontroler

CS02, CS01, CS00 bertugas mendefinisikan pulsa yang masuk ke dalam timer/counter

Clock/ 1024

Force output comparer = off

Waveform generation mode= normal

Comparer match output mode = disconnect

Contoh : jika menggunakan X-Tal 1Mz dan set TCCR0=0×05, artinya prescaler yg dipilih adalah

1024 sehingga pulsa yg masuk akan diseleksi dan berubah menjadi 1Mz/1024= 976Hz bukan

1Mz lagi.

2. Set TCNT0

TCNT0  = 0×00; dimulai dari hitungan 0

TCNT0  = 0x0F; dimulai dari hitungan 128

3. Set OCR0

OCR0  = 0×00; karena tidak menggunakan pembanding, mode CTC dan PWM

4. Set TIMSK secara otomatis akan diset saat terjadi overflow atau comparer

OCIE0 = 1;    flag comparer

TPIE0 = 0;     flag timer/counter

Jadi TIMSK = 0×01

5. Set TIFR secara otomatis akan diset saat terjadi overflow atau comparer

OCF0 = 0;     flag comparer

TOV0 = 1;     flag timer/counter atu overflow

TIFR = 0×02

Mode operasi :

Normal, TCNT0 menghitung hingga 0xFF dan kemudian terjadi overflow.

CTC, TCNT0  menghitung hingga TCNT0 == OCR0 dan OCFO otomatis diset menjadi 1.

Share this:

Page 23: materi mikrokontroler

Share

Memuat...

Related

Software Mikrokontroler di LinuxIn "Elektronic"

Di belakang Pria yang Kuat, Selalu Ada Wanita Hebat!In "Islam Agamaku"

Auto MountingIn "Linux"

Tentang bocahwates

Selalu Mencari Sesuatu yang Unik..

Lihat semua tulisan oleh bocahwates »

« Previous post

Next post »

12 responses to “Belajar Mikrokontroler Dengan Bahasa C”

1.

ahmad says : Mei 12, 2012 pukul 8:01 pm

mas q tolong kirimkan update an dari artikel mas … pkoknya yg ada tema elektronikanya deh…

BALAS

2.

bocahwates says : September 19, 2012 pukul 3:07 pm

okee… siipp mass,, ni aqu mau cobak mulai beralih pakek Arduino mas / open elektronik,, klo masnya tertarik

bisa belajar bareng ya..

BALAS

Page 24: materi mikrokontroler

3.

ahmad says : September 21, 2012 pukul 12:12 am

o ya mas… nii aq kn nak informatika tp spesialis database…. tp bru2 ni aq tertarik d micro contoler…

nah dstu q mulai penasaran… apakah ic d suat komponen elektro itu bisa d program ya???

terus programnya pake turbo c itu ya mas…

BALAS

o

bocahwates says : September 21, 2012 pukul 11:26 am

iya mas,, terserah programnya pakek apa,, ada pakek c pakek java, assembler.. masnya tinggal menguasai

program apa gt,, klo pengen belajar pakek arduino aja mas,, lebih gampang..

BALAS

4.

ahmad says : September 21, 2012 pukul 12:20 am

aq mau tanya…

bagaimana bisa suatu komponen elektro itu bila d gabung bisa d masuki suatu program ya mas?… contoh ja

hp…. pd hal aq liat hp tu hanya kumpulan dari komponen… tp kok bisa d masuki spt Os tau program java lainnya

ya mas….

BALAS

o

bocahwates says : September 21, 2012 pukul 11:29 am

Page 25: materi mikrokontroler

kan microcontroler sebuah memory yang mempunyai kapasitas,, ya kayak ram, rom itu yaitu kumpulan

beribu2 transistor… hp kan ya kayak pc/laptop jg mempunyai memory yg berkapasitas jdi bisa dimasuki

program n diproses..

BALAS

ahmad says : September 23, 2012 pukul 9:29 am

tp gmana caranya apa memakai alat penghubung buat bisa memprogram komponen tersebut mas…

seperti usb atau sejenisnya,… pkoknya penghubung lah

bocahwates says : Desember 3, 2012 pukul 11:51 am

iya pakek rangkaian rs232.. liat di google dulu aja.. masih blum sempet nulis hehehe

rohman says : September 23, 2012 pukul 9:34 am

naaah… kalo gtu… saumpama aku punya sebuah microcontroler… gmna cara memprogramnya mas…

sory2 aja aku masih pemula…jd gk tau apa2

bocahwates says : Desember 3, 2012 pukul 11:50 am

Sory lama gak utik blog ni hahaha… pakek codevision aja lebih gampang,, sabar ya ntar aku tulis lagi

tutorian di blognya.. :), lebih mudah pakek arduino aja..

Page 26: materi mikrokontroler

rohman says : Desember 12, 2012 pukul 12:35 pm

coba kasi plus videonya ya boss… bner2 pemula aku nii.

5.

andika says : Maret 3, 2013 pukul 12:13 pm

klo bleh nanya,aku kn sering copy paste listing program mikrokontroller untuk latihan d rumah aku pke cavr,win

avr,avr dude,dn bnyk lgi..he,yg mu aku tnyain apa sebelum kita memindahkan file hex tadi ke target kita wajib

mengatur bit,osilator,input output.eeprom dn istilah lainnya..yg jelas aku msih awam bnget mmbca kode bahasa

c,krna tiap aku praktekan gagal teruss.mnta bmmbingannya..bls y ke ([email protected]) thnks

before

BALAS

Tinggalkan Balasan

AKSES DISINI

Page 27: materi mikrokontroler

LATEST NEWS

Mp3 Converter untuk   Linux

Jurnal Penelitian…. ^_^

Cloud Berbasis Linux dan FOSS Menggunakan   EyeOS

Setting IVR (Interactive Voice Respon) menggunakan   Asterisk

Mengenang Akhlak Nabi Muhammad   SAW

CATEGORI

Computer Network

Elektronic

Page 28: materi mikrokontroler

Hacked

Islam Agamaku

Linux

Programing

 OKEZONE TECH Apple Dituding Melanggar Paten Sony dan Nokia

2013, Samsung Luncurkan Galaxy Note III 6,3 Inci?

"Windows Store Dibanjiri Aplikasi Jelek"

Peneliti Identifikasi 3 Spesies Baru Primata Berbisa

Video Gerhana Matahari Spektakuler di Langit Australia

SUPORT

Page 29: materi mikrokontroler
Page 30: materi mikrokontroler

INFO ANDA

Page 31: materi mikrokontroler

PAGE BOCAHWATES

bocahwates

Blog pada WordPress.com. The Skeptical Theme.Ikuti

Follow “bocahwates”

Get every new post delivered to your Inbox.

Powered by WordPress.com

Sign me up