Kuliah Instrumentasi Kelautan




    Pemrograman Microcontroller
                      Muhammad Iqbal
                   ...
Apa yang dibutuhkan?

• Board Microcontroller
• Program Penulis => notepad, AVR Studio,
  BASCOM AVR, CodeVision AVR dll
•...
Diagram Proses Pemrograman Microcontroller
Introduction to C Language
• Comments => menggunakan tanda “//” atau
  /* ini komentar tidak di eksekusi oleh
  compiler, ...
• Expression, Statements dan Blocks
  Expression: kombinasi dari variable, operators
  dan function sehingga menghasilkan ...
• Operators
  simbol yang memerintahkan compiler untuk
  melakukan sesuatu misalnya “=“ menyatakan
  sama dengan sehingga ...
Flow Control
• If-Else dan Else-If
        if (expression)
                  statemen1
        else
                  stat...
• Switch
     switch(expression)
      case constant expression1: statements
      case constant expression2: statements
 ...
• Loops-While, For dan Do-While
     while (expression)
     {
            statements or do stuff
     }
     for (express...
do
 {
     statements or do stuff
 } while (expression)
Function
• Is encapsulates a computation
• Ok learn by sample 
•    int dosomething (int x, int y, int z)
          {
   ...
Now Implement to Microcontroller
          sekedar intro 
• Input Output (I/O)
   int main() {
     DDRB=0xff;
     PORTB...
Jokes
Hayuuuk kita sedikit berkhayal 

     ingin membuat
 pengkontrol ROV yaitu
         tombol
maju, mundur, belok kiri,
    ...
Bahan yang Tersedia

•   Microcontroller ATMega8535
•   4 buah tombol switch
•   2 buah motor DC
•   IC L293D
Detail of Scenario
•   Tombol 1: tombol maju
•   Tombol 2: tombol mundur
•   Tombol 3: tombol belok kiri
•   Tombol 4: tom...
/* pertama alur kasar program */
#include <avr/mega8535.h>
int void main()
{
DDRB=0x00; // portb sebagai masukan
  PORTB=0...
Konfigurasi motor
• Motor Ada di PORTC
  sesuaikan dengan pin IC L293D misal saja:
  PORTC 0 dan 1: motor 1 , dan PORTC 2 ...
Program tadi menjadi
 #include <avr/mega8535.h>
int void main()
{
     DDRB=0x00; // portb sebagai masukan
    PORTB=0x00;...
Rasanya Program tadi ko rumit
           kelihatanya 
• Bagaimana jika menggunakan “function”
• Beberapa fungsi yang ingi...
Let’s write
      Gerak         PORC.0     PORTC.1    PORTC.2    PORTC.3
      Maju          1          0          1      ...
Program menjadi
#include <avr/mega8535.h>
void maju() {PORTC.0=1; PORC.1=0; PORTC.2=1; PORC.3=0; }
void mundur() {PORTC.0=...
Bagaimana jika menggunakan switch
#include <avr/mega8535.h>
void maju() {PORTC.0=1; PORC.1=0; PORTC.2=1; PORC.3=0; }
void ...
find your own style of
    programming
Good reference
Penutup
• Explore lagi tentang bahasa C
• Explore lagi tentang Hardware Microcontroller
• Selamat berkreasi lebih 

     ...
Lampiran
• Arithmetic Operators
   Operator      Nama          Contoh       Penjelasa
      *       Multiplication    x*y ...
• Data Acces and Size Operators
 Operator       Nama                 Contoh        Penjelasan
 []             Elemen array...
Relational and Logical Operators
Operator              Nama                Contoh          Penjelasan
   >             Leb...
Bitwise Operators
Operator   Nama                     Contoh   Penjelasan
~          Bitwise complement NOT   ~x       uba...
Upcoming SlideShare
Loading in …5
×

Pemrograman Mikrokontroller

3,082 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,082
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
384
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Pemrograman Mikrokontroller

  1. 1. Kuliah Instrumentasi Kelautan Pemrograman Microcontroller Muhammad Iqbal barcode_bima@yahoo.co.id Laboratorium Instrumentasi dan Telemetri Kelautan Departemen Ilmu dan Teknologi Kelautan Institut Pertanian Bogor @2009
  2. 2. Apa yang dibutuhkan? • Board Microcontroller • Program Penulis => notepad, AVR Studio, BASCOM AVR, CodeVision AVR dll • Compiler: sangat bergantung bahasa yang digunakan : Assembly, C, BASIC, PASCAL dll • Downloader dan programnya: alat dan program yang digunakan untuk mendownload program dari komputer ke microcontroller
  3. 3. Diagram Proses Pemrograman Microcontroller
  4. 4. Introduction to C Language • Comments => menggunakan tanda “//” atau /* ini komentar tidak di eksekusi oleh compiler, tanda ini bisa 1 atau lebih baris */ • Include files ex. #include <avr/io.h> #include <avr/delay.h> #include adalah preprocessor directive (pengarah) yang menginstruksikan compiler mencari file didalam tanda <>
  5. 5. • Expression, Statements dan Blocks Expression: kombinasi dari variable, operators dan function sehingga menghasilkan satu hasil (value) PORTD=0xFF-counter++ Statements: kontrol aliran program berdasarkan keywords, expressions dan atau statement lain. TempInCelcius=5*(TempInFahrenheit-32)/9;
  6. 6. • Operators simbol yang memerintahkan compiler untuk melakukan sesuatu misalnya “=“ menyatakan sama dengan sehingga misal DDRB=0xFF memerintahkan compiler untuk membuat nilai DDRB menjadi 0xFF atau “++” pada counter++ memerintahkan compiler menambahkan 1 nilai pada variable counter
  7. 7. Flow Control • If-Else dan Else-If if (expression) statemen1 else statemen2 Atau if (expression) statemen1 else if (expression2) statemen2 else if (expression3) statemen3 else statemen4
  8. 8. • Switch switch(expression) case constant expression1: statements case constant expression2: statements case constant expression3: statements default: statements
  9. 9. • Loops-While, For dan Do-While while (expression) { statements or do stuff } for (expression1;expression2;expression3) { statements or do stuff }
  10. 10. do { statements or do stuff } while (expression)
  11. 11. Function • Is encapsulates a computation • Ok learn by sample  • int dosomething (int x, int y, int z) { int a=0; int b=x+y+z-12; //do stuff } Selanjutnya.. Di main () program ….. int main() { int a; …. a=dosomething(c,d,e); … }
  12. 12. Now Implement to Microcontroller sekedar intro  • Input Output (I/O) int main() { DDRB=0xff; PORTB=0xff; DDRC=0x00; PORTC=0x00; #asm (“nop”) while (1) { PORTB.0=PINC.0; /*membaca nilai PINC.0 dan dan memberikan hasilnya ke PORTB.0 */ }; }
  13. 13. Jokes
  14. 14. Hayuuuk kita sedikit berkhayal  ingin membuat pengkontrol ROV yaitu tombol maju, mundur, belok kiri, belok kanan
  15. 15. Bahan yang Tersedia • Microcontroller ATMega8535 • 4 buah tombol switch • 2 buah motor DC • IC L293D
  16. 16. Detail of Scenario • Tombol 1: tombol maju • Tombol 2: tombol mundur • Tombol 3: tombol belok kiri • Tombol 4: tombol belok kanan • Scenario: Gerak Motor 1 Motor 2 Maju CW Hidup CW Hidup Mundur CCW Hidup CCW Hidup Belok Kiri CW Hidup Mati Belok Kanan Mati CW Hidup
  17. 17. /* pertama alur kasar program */ #include <avr/mega8535.h> int void main() { DDRB=0x00; // portb sebagai masukan PORTB=0x00; // switch dtempatkan di PORTB 0,1,2,3 while(1) { If (PINB==0x01) { //statement maju } else if (PINB==0x02) { // statement mundur } else if (PINB==0x04) { // statement belok kiri } else if (PINB==0x08) { // statement belok kanan } else { // statement ROV diam } }
  18. 18. Konfigurasi motor • Motor Ada di PORTC sesuaikan dengan pin IC L293D misal saja: PORTC 0 dan 1: motor 1 , dan PORTC 2 dan 3 : motor 2 sehingga setiap gerak di definisikan menjadi : Gerak PORC.0 PORTC.1 PORTC.2 PORTC.3 Maju 1 0 1 0 Mundur 0 1 0 1 Belok kiri 1 0 0 0 Belok 0 0 1 0 Kanan
  19. 19. Program tadi menjadi #include <avr/mega8535.h> int void main() { DDRB=0x00; // portb sebagai masukan PORTB=0x00; // switch dtempatkan di PORTB 0,1,2,3 DDRC=0xff; PORTC=0x00; while(1) { If (PINB==0x01) { PORTC.0=1; PORC.1=0; PORTC.2=1; PORC.3=0; //maju } else if (PINB==0x02) {PORTC.0=0 PORC.1=1; PORTC.2=0; PORC.3=1; //mundur } else if (PINB==0x04) {PORTC.0=1; PORC.1=0; PORTC.2=0; PORC.3=0; //belok kiri } else if (PINB==0x08) {PORTC.0=0; PORC.1=0; PORTC.2=1; PORC.3=0; //belok kanan } else { PORTC=0x00; //ROV diam } }
  20. 20. Rasanya Program tadi ko rumit kelihatanya  • Bagaimana jika menggunakan “function” • Beberapa fungsi yang ingin saya buat – Fungsi maju, – Fungsi mundur, – Fungsi belok_kiri, – Fungsi belok_kanan
  21. 21. Let’s write Gerak PORC.0 PORTC.1 PORTC.2 PORTC.3 Maju 1 0 1 0 Mundur 0 1 0 1 Belok kiri 1 0 0 0 Belok Kanan 0 0 1 0 • Void maju() {PORTC.0=1; PORC.1=0; PORTC.2=1; PORC.3=0; } • Void mundur() {PORTC.0=0 PORC.1=1; PORTC.2=0; PORC.3=1; } • Void belok_kiri() {PORTC.0=1; PORC.1=0; PORTC.2=0; PORC.3=0; } • Void belok_kanan() {PORTC.0=0; PORC.1=0; PORTC.2=1; PORC.3=0; }
  22. 22. Program menjadi #include <avr/mega8535.h> void maju() {PORTC.0=1; PORC.1=0; PORTC.2=1; PORC.3=0; } void mundur() {PORTC.0=0 PORC.1=1; PORTC.2=0; PORC.3=1; } void belok_kiri() {PORTC.0=1; PORC.1=0; PORTC.2=0; PORC.3=0; } void belok_kanan() {PORTC.0=0; PORC.1=0; PORTC.2=1; PORC.3=0; } int void main() { DDRB=0x00; // portb sebagai masukan PORTB=0x00; // switch dtempatkan di PORTB 0,1,2,3 DDRC=0xff; PORTC=0x00; while(1) { If (PINB==0x01) { maju(); //statement maju } else if (PINB==0x02) { mundur(); // statement mundur } else if (PINB==0x04) { belok_kiri() ; // statement belok kiri } else if (PINB==0x08) { belok_kanan(); // statement belok kanan } else { PORTC=0x00; // statement ROV diam } }
  23. 23. Bagaimana jika menggunakan switch #include <avr/mega8535.h> void maju() {PORTC.0=1; PORC.1=0; PORTC.2=1; PORC.3=0; } void mundur() {PORTC.0=0 PORC.1=1; PORTC.2=0; PORC.3=1; } void belok_kiri() {PORTC.0=1; PORC.1=0; PORTC.2=0; PORC.3=0; } void belok_kanan() {PORTC.0=0; PORC.1=0; PORTC.2=1; PORC.3=0; } int void main() { DDRB=0x00; // portb sebagai masukan PORTB=0x00; // switch dtempatkan di PORTB 0,1,2,3 DDRC=0xff; PORTC=0x00; while(1) { Switch (PINC) Case 0x01 : maju(); Case 0x02 : mundur(); Case 0x04: belok_kiri(); Case 0x08: belok_kanan(); Default: PORTC=0x00; }
  24. 24. find your own style of programming
  25. 25. Good reference
  26. 26. Penutup • Explore lagi tentang bahasa C • Explore lagi tentang Hardware Microcontroller • Selamat berkreasi lebih  -Terima Kasih-
  27. 27. Lampiran • Arithmetic Operators Operator Nama Contoh Penjelasa * Multiplication x*y Perkalian x dan y / Division x/y Pembagian x dan y % Modulo x%y Sisa x dibagi y + Addition x+y x tambah y - Substraction x-y x dikurangi y ++ Increment x++ x=x+1 -- Decrement x-- x=x-1 - Negation -x Kali x dengan -1 + Unary plus +x x adalah positif
  28. 28. • Data Acces and Size Operators Operator Nama Contoh Penjelasan [] Elemen array X[6] Elemen ke-7 dari x . Member selection PORTD.2 Bit 2 dari PORTD -> Member selection pStruct->x Anggota x dari struktur pStruct * Indirection *p Lokasi memori dari P & Address of &x Alamat dari varible x • Miscellaneous Operators Operator Nama Contoh Penjelasan () Function Wait(10) Panggil fungsi wait (type) Type Cast (double)x Ubah variable x jadi double ?: conditional X?y:z Jika x tidak 0 evaluasi y, sebaliknya evalusi z , Seqeuntial X++,y++ Mulanya x ditambah 1, kemudian y evaluation ditambah 1
  29. 29. Relational and Logical Operators Operator Nama Contoh Penjelasan > Lebih besar dari X>y X lebih besar dari y >= Lebih besar atau sama X>=y X lebih besar sama dengan dengan y < Lebih kecil dari X<y X lebih kecil dari y <= Lebih kecil atau sama dengan X<=y X lebih kecil atau sama dengan == Sama dengan (logic) X==y Jika x dan y sama maka benar (1), jika tidak salah (0) != Tidak sama dengan X!=y Jika x dan y tidak sama maka benar, jika sama maka salah ! Logical not !x 1 jika x=0 , otherwise 0 && Logical AND X&&y X and y || Logical OR X||y X OR y
  30. 30. Bitwise Operators Operator Nama Contoh Penjelasan ~ Bitwise complement NOT ~x ubah bit 1 ke 0 dan bit 0 ke 1 & Bitwise AND X&y Bitwise X and Y | Bitwise OR X|y Bitwise x OR y ^ Bitwise exclusive OR X^y Bitwise x XOR y << Left shift X<<2 Geser ke kiri 2 bit dari x >> Right shift X>>2 Geser ke kanan 2 bit dari x

×