SlideShare a Scribd company logo
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
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
Diagram Proses Pemrograman Microcontroller
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 <>
• 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;
• 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
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
• Switch
     switch(expression)
      case constant expression1: statements
      case constant expression2: statements
      case constant expression3: statements
      default: statements
• Loops-While, For dan Do-While
     while (expression)
     {
            statements or do stuff
     }
     for (expression1;expression2;expression3)
     {
          statements or do stuff
     }
do
 {
     statements or do stuff
 } while (expression)
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);
          …
          }
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 */
       };
     }
Jokes
Hayuuuk kita sedikit berkhayal 

     ingin membuat
 pengkontrol ROV yaitu
         tombol
maju, mundur, belok kiri,
       belok kanan
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: 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
/* 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
  }
  }
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
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
    }
    }
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
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; }
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
     }
     }
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;
     }
find your own style of
    programming
Good reference
Penutup
• Explore lagi tentang bahasa C
• Explore lagi tentang Hardware Microcontroller
• Selamat berkreasi lebih 

               -Terima Kasih-
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
• 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
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
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

More Related Content

DOCX
PDF
PDF
Tugas C++ - Dian Aditya - 2009/2010
PPTX
Pengenalan bahasa c++
PDF
Programming Logic (PROLOG)
PPT
PPT
Function
PPT
Pertemuan II Function
Tugas C++ - Dian Aditya - 2009/2010
Pengenalan bahasa c++
Programming Logic (PROLOG)
Function
Pertemuan II Function

What's hot (18)

PDF
Gerbang Universal NAND dan NOR
PDF
7 Keamanan Jaringan 1
PPTX
Ok mater im12_pdpa1112
PDF
Modul tba
PDF
Praktikum 4 decorder
PDF
Praktikum Mikrokontoler 2
PDF
Laporan Praktikum Mikrokontroler
DOCX
Pemrograman SAP - 1
DOCX
Tugas praktikum sisdig
PDF
Teori bahasa-dan-otomata
PDF
Asyiknya Belajar Struktur Data di Planet C++
PPT
Pertemuan 6 : Algoritma & Pemrograman
PDF
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
PPT
Pertemuan 4 : Algoritma & Pemrograman
PPTX
SLIDE KE:5 NFA
PPTX
SLIDE KE-4 DFA
PPT
Pertemuan 9 : Algoritma & Pemrograman
PDF
P1 2-tipe data
Gerbang Universal NAND dan NOR
7 Keamanan Jaringan 1
Ok mater im12_pdpa1112
Modul tba
Praktikum 4 decorder
Praktikum Mikrokontoler 2
Laporan Praktikum Mikrokontroler
Pemrograman SAP - 1
Tugas praktikum sisdig
Teori bahasa-dan-otomata
Asyiknya Belajar Struktur Data di Planet C++
Pertemuan 6 : Algoritma & Pemrograman
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
Pertemuan 4 : Algoritma & Pemrograman
SLIDE KE:5 NFA
SLIDE KE-4 DFA
Pertemuan 9 : Algoritma & Pemrograman
P1 2-tipe data
Ad

Similar to Pemrograman Mikrokontroller (20)

PPTX
Simple-Process_Java.pptx
PPT
Bab 2-intro-python
PDF
Bab 5 Pengolahan Input Output
PPTX
Presentasi workshop cvavr
PPTX
Pelatihan Arduino dan penerapannyaa.pptx
PPTX
Pengenalan bahasa c++
PDF
Mikrokontroler pertemuan 5
PDF
Laporan praktikum mikrokontroler dengan led
PDF
Laporan praktikum mikrokontroler dengan led
PPT
ARDUINO_BASIC_TRAINING_kelas XII Semester 1.ppt
PDF
C programming language notes (4)
PDF
Modul simulasi pemograman mikrokontroler
DOCX
Pemrograman sap 1
DOCX
Tutorial membuat project termometer dan jam digital menggunakan codevision av...
PPTX
Intermediate code kode antara
DOCX
Mikrokontroler io tombol dan led
PPT
10-Simple As Possible Computer 22222.ppt
PPT
Pert 6
PPT
Fungsi dan Prosedur
PPTX
Bistable multivibrators
Simple-Process_Java.pptx
Bab 2-intro-python
Bab 5 Pengolahan Input Output
Presentasi workshop cvavr
Pelatihan Arduino dan penerapannyaa.pptx
Pengenalan bahasa c++
Mikrokontroler pertemuan 5
Laporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan led
ARDUINO_BASIC_TRAINING_kelas XII Semester 1.ppt
C programming language notes (4)
Modul simulasi pemograman mikrokontroler
Pemrograman sap 1
Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Intermediate code kode antara
Mikrokontroler io tombol dan led
10-Simple As Possible Computer 22222.ppt
Pert 6
Fungsi dan Prosedur
Bistable multivibrators
Ad

Recently uploaded (8)

PPTX
PEMAHAMAN MAPEL KODING DAN KECERDASAN ARTIFICIAL
PPT
pengantar-sistem-informasi manajemen.ppt
PPTX
Implementasi Microservices pada Manufaktur
PPTX
PERANCANGAN DAN PENGEMBANGAN VIDEO GAME SEBAGAI MEDIA TERAPI DEPRESI
PPTX
Materi_Array_Karakter_String untuk kelas XI sma.pptx
DOCX
Keutuhan Aplikasi Konsep dan Praktik dalam Upaya menciptakan aplikasi Anti Vi...
DOCX
Antivirus Versi.FULL.JALiN.KB.PRO Keutuhan Aplikasi Konsep dan Praktik dalam ...
PPTX
Peranan AI dalam Dunia Pendidikan dan Industri Aplikasinya
PEMAHAMAN MAPEL KODING DAN KECERDASAN ARTIFICIAL
pengantar-sistem-informasi manajemen.ppt
Implementasi Microservices pada Manufaktur
PERANCANGAN DAN PENGEMBANGAN VIDEO GAME SEBAGAI MEDIA TERAPI DEPRESI
Materi_Array_Karakter_String untuk kelas XI sma.pptx
Keutuhan Aplikasi Konsep dan Praktik dalam Upaya menciptakan aplikasi Anti Vi...
Antivirus Versi.FULL.JALiN.KB.PRO Keutuhan Aplikasi Konsep dan Praktik dalam ...
Peranan AI dalam Dunia Pendidikan dan Industri Aplikasinya

Pemrograman Mikrokontroller

  • 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. 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. Diagram Proses Pemrograman Microcontroller
  • 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. • 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. • 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. 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. • Switch switch(expression) case constant expression1: statements case constant expression2: statements case constant expression3: statements default: statements
  • 9. • Loops-While, For dan Do-While while (expression) { statements or do stuff } for (expression1;expression2;expression3) { statements or do stuff }
  • 10. do { statements or do stuff } while (expression)
  • 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. 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. Jokes
  • 14. Hayuuuk kita sedikit berkhayal  ingin membuat pengkontrol ROV yaitu tombol maju, mundur, belok kiri, belok kanan
  • 15. Bahan yang Tersedia • Microcontroller ATMega8535 • 4 buah tombol switch • 2 buah motor DC • IC L293D
  • 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. /* 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. 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. 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. 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. 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. 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. 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. find your own style of programming
  • 26. Penutup • Explore lagi tentang bahasa C • Explore lagi tentang Hardware Microcontroller • Selamat berkreasi lebih  -Terima Kasih-
  • 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. • 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. 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. 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