SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Gerbang Universal NAND dan NOR
Gerbang Universal NAND dan NORGerbang Universal NAND dan NOR
Gerbang Universal NAND dan NORAnarstn
 
7 Keamanan Jaringan 1
7 Keamanan Jaringan 17 Keamanan Jaringan 1
7 Keamanan Jaringan 1Mrirfan
 
Ok mater im12_pdpa1112
Ok mater im12_pdpa1112Ok mater im12_pdpa1112
Ok mater im12_pdpa1112Eric Effendi
 
Praktikum 4 decorder
Praktikum 4 decorderPraktikum 4 decorder
Praktikum 4 decorderAnarstn
 
Praktikum Mikrokontoler 2
Praktikum Mikrokontoler 2  Praktikum Mikrokontoler 2
Praktikum Mikrokontoler 2 Muhammad Taufik
 
Laporan Praktikum Mikrokontroler
Laporan Praktikum MikrokontrolerLaporan Praktikum Mikrokontroler
Laporan Praktikum MikrokontrolerMuhammad Taufik
 
Tugas praktikum sisdig
Tugas praktikum sisdigTugas praktikum sisdig
Tugas praktikum sisdigYohannez Probo
 
Teori bahasa-dan-otomata
Teori bahasa-dan-otomataTeori bahasa-dan-otomata
Teori bahasa-dan-otomataBanta Cut
 
Asyiknya Belajar Struktur Data di Planet C++
Asyiknya Belajar Struktur Data di Planet C++Asyiknya Belajar Struktur Data di Planet C++
Asyiknya Belajar Struktur Data di Planet C++Nurdin Al-Azies
 
Pertemuan 6 : Algoritma & Pemrograman
Pertemuan 6 : Algoritma & PemrogramanPertemuan 6 : Algoritma & Pemrograman
Pertemuan 6 : Algoritma & PemrogramanTri Retna
 
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535al farisi
 
Pertemuan 4 : Algoritma & Pemrograman
Pertemuan 4 : Algoritma & PemrogramanPertemuan 4 : Algoritma & Pemrograman
Pertemuan 4 : Algoritma & PemrogramanTri Retna
 
Pertemuan 9 : Algoritma & Pemrograman
Pertemuan 9 : Algoritma & PemrogramanPertemuan 9 : Algoritma & Pemrograman
Pertemuan 9 : Algoritma & PemrogramanTri Retna
 

La actualidad más candente (18)

Gerbang Universal NAND dan NOR
Gerbang Universal NAND dan NORGerbang Universal NAND dan NOR
Gerbang Universal NAND dan NOR
 
7 Keamanan Jaringan 1
7 Keamanan Jaringan 17 Keamanan Jaringan 1
7 Keamanan Jaringan 1
 
Ok mater im12_pdpa1112
Ok mater im12_pdpa1112Ok mater im12_pdpa1112
Ok mater im12_pdpa1112
 
Modul tba
Modul tbaModul tba
Modul tba
 
Praktikum 4 decorder
Praktikum 4 decorderPraktikum 4 decorder
Praktikum 4 decorder
 
Praktikum Mikrokontoler 2
Praktikum Mikrokontoler 2  Praktikum Mikrokontoler 2
Praktikum Mikrokontoler 2
 
Laporan Praktikum Mikrokontroler
Laporan Praktikum MikrokontrolerLaporan Praktikum Mikrokontroler
Laporan Praktikum Mikrokontroler
 
Pemrograman SAP - 1
Pemrograman SAP - 1Pemrograman SAP - 1
Pemrograman SAP - 1
 
Tugas praktikum sisdig
Tugas praktikum sisdigTugas praktikum sisdig
Tugas praktikum sisdig
 
Teori bahasa-dan-otomata
Teori bahasa-dan-otomataTeori bahasa-dan-otomata
Teori bahasa-dan-otomata
 
Asyiknya Belajar Struktur Data di Planet C++
Asyiknya Belajar Struktur Data di Planet C++Asyiknya Belajar Struktur Data di Planet C++
Asyiknya Belajar Struktur Data di Planet C++
 
Pertemuan 6 : Algoritma & Pemrograman
Pertemuan 6 : Algoritma & PemrogramanPertemuan 6 : Algoritma & Pemrograman
Pertemuan 6 : Algoritma & Pemrograman
 
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
 
Pertemuan 4 : Algoritma & Pemrograman
Pertemuan 4 : Algoritma & PemrogramanPertemuan 4 : Algoritma & Pemrograman
Pertemuan 4 : Algoritma & Pemrograman
 
SLIDE KE:5 NFA
SLIDE KE:5 NFASLIDE KE:5 NFA
SLIDE KE:5 NFA
 
SLIDE KE-4 DFA
SLIDE KE-4 DFASLIDE KE-4 DFA
SLIDE KE-4 DFA
 
Pertemuan 9 : Algoritma & Pemrograman
Pertemuan 9 : Algoritma & PemrogramanPertemuan 9 : Algoritma & Pemrograman
Pertemuan 9 : Algoritma & Pemrograman
 
P1 2-tipe data
P1 2-tipe dataP1 2-tipe data
P1 2-tipe data
 

Similar a Pemrograman Mikrokontroller

Bab 5 Pengolahan Input Output
Bab 5  Pengolahan Input OutputBab 5  Pengolahan Input Output
Bab 5 Pengolahan Input OutputBeny Abd
 
Presentasi workshop cvavr
Presentasi workshop cvavrPresentasi workshop cvavr
Presentasi workshop cvavrPriyo Harjiyono
 
Mikrokontroler pertemuan 5
Mikrokontroler pertemuan 5Mikrokontroler pertemuan 5
Mikrokontroler pertemuan 5Rumah Belajar
 
Laporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan ledLaporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan ledSawah Dan Ladang Ku
 
Laporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan led Laporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan led Wesnu Prajati
 
C programming language notes (4)
C programming language notes (4)C programming language notes (4)
C programming language notes (4)nakomuri
 
Modul simulasi pemograman mikrokontroler
Modul simulasi pemograman mikrokontrolerModul simulasi pemograman mikrokontroler
Modul simulasi pemograman mikrokontrolerpersonal
 
Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...Muhammad Kennedy Ginting
 
Intermediate code kode antara
Intermediate code   kode antaraIntermediate code   kode antara
Intermediate code kode antaraGunawan Manalu
 
Mikrokontroler io tombol dan led
Mikrokontroler io tombol dan ledMikrokontroler io tombol dan led
Mikrokontroler io tombol dan ledJodit Sulistyo
 
Pert 6
Pert 6Pert 6
Pert 6Wanti
 
Asyiknya belajar struktur data di planet c++
Asyiknya belajar struktur data di planet c++Asyiknya belajar struktur data di planet c++
Asyiknya belajar struktur data di planet c++Ilan Surf ﺕ
 
Artikel shift register
Artikel shift registerArtikel shift register
Artikel shift registerjulianiputri1
 

Similar a Pemrograman Mikrokontroller (20)

Simple-Process_Java.pptx
Simple-Process_Java.pptxSimple-Process_Java.pptx
Simple-Process_Java.pptx
 
Bab 2-intro-python
Bab 2-intro-pythonBab 2-intro-python
Bab 2-intro-python
 
Bab 5 Pengolahan Input Output
Bab 5  Pengolahan Input OutputBab 5  Pengolahan Input Output
Bab 5 Pengolahan Input Output
 
Presentasi workshop cvavr
Presentasi workshop cvavrPresentasi workshop cvavr
Presentasi workshop cvavr
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
 
Mikrokontroler pertemuan 5
Mikrokontroler pertemuan 5Mikrokontroler pertemuan 5
Mikrokontroler pertemuan 5
 
Laporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan ledLaporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan led
 
Laporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan led Laporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan led
 
C programming language notes (4)
C programming language notes (4)C programming language notes (4)
C programming language notes (4)
 
Modul simulasi pemograman mikrokontroler
Modul simulasi pemograman mikrokontrolerModul simulasi pemograman mikrokontroler
Modul simulasi pemograman mikrokontroler
 
Pemrograman sap 1
Pemrograman sap 1Pemrograman sap 1
Pemrograman sap 1
 
Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...
 
Intermediate code kode antara
Intermediate code   kode antaraIntermediate code   kode antara
Intermediate code kode antara
 
Mikrokontroler io tombol dan led
Mikrokontroler io tombol dan ledMikrokontroler io tombol dan led
Mikrokontroler io tombol dan led
 
Pert 6
Pert 6Pert 6
Pert 6
 
Fungsi dan Prosedur
Fungsi dan ProsedurFungsi dan Prosedur
Fungsi dan Prosedur
 
Bistable multivibrators
Bistable multivibratorsBistable multivibrators
Bistable multivibrators
 
Asyiknya belajar struktur data di planet c++
Asyiknya belajar struktur data di planet c++Asyiknya belajar struktur data di planet c++
Asyiknya belajar struktur data di planet c++
 
Artikel shift register
Artikel shift registerArtikel shift register
Artikel shift register
 
78945728-03-PPI-8255.pdf
78945728-03-PPI-8255.pdf78945728-03-PPI-8255.pdf
78945728-03-PPI-8255.pdf
 

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