Docstoc

Displacement Transducer

Document Sample
Displacement Transducer Powered By Docstoc
					Dasar Pemrograman C
 pada mikrokontroler


         Setiawardhana



Politeknik Elektronika Negeri Surabaya
Pengenal (identifier)
• Adalah suatu nama yang digunakan untuk
  menyatakan :
  – Variabel
  – Konstanta bernama
  – Tipe data
  – Fungsi
  – Label
Penamaan pengenal
• Suatu pengenal merupakan satu atau
  beberapa karakter :
  – Huruf
  – Angka dan
  – Garis bawah

   Yang dimulai dimulai dengan huruf atau garis
   bawah
Penamaan pengenal
• Huruf kecil dengan Huruf besar pada
  suatu pengenal adalah “beda”
• Contoh:
  – Tpendek   beda dengan tpendek
  – Awal      beda dengan aWal
Tipe data yang di dukung SDCC
 Tipe Data     Lebar Data        Jangkauan
Char         8bit            -128 s/d 127
Int          16bit           -32768 s/d 32767
Short        16bit           -32768 s/d 32767
Long         32bit           -2.147.438.648 s/d -
                             2.147.438.647
Float        32bit           3.4.10-38 s/d
                             3.4.1038
void         Tidak bertipe
Signed / Un
• Signed        : tipe data bertanda
• Unsigned      : tipe data tdk bertanda
• Awalan ini ditambahkan untuk
  – Tipe data bilangan bulat
     •   Char
     •   Int
     •   Short
     •   long
Bilangan Negatif
• SDCC menambahkan tipe data khusus untuk
  core ATMEL 51

 Tipe data    Lebar data        Keterangan

bit          1 bit         0 atau 1 (RAM internal
                           bit addressable)
sfr          8 bit         special function
                           register (sfr)
sbit         1 bit         1 bit dalam sfr
Variable dan konstanta
• Variabel : tempat menyimpan nilai dalam
  program, isi dapat diubah-ubah ketika program
  berjalan
• Konstanta       : tempat menyimpan nilai dalam
  program, isi tidak dapat diubah-ubah ketika
  program berjalan

• Penamaan var/kons mengikuti aturan pengenal
• Contoh :
  – Tampung;
  – Cacah;
Catatan
• Operasi pada mikro AT89 tidak memiliki
  operasi bilangan bertanda, sehingga untuk
  menghemat meori program gunakan
  “unsigned”
Kelas memori MCS51
•   data/near
•   xdata/far
•   idata
•   pdata
•   code
•   bit
•   sfr
•   sbit
• data/near
  – Kelas memori secara default digunakan pada
    model small, mengacu pada internal RAM,
    dialamati secara langsung (direct addr)
• xdata
  – Kelas memori secara default digunakan pada
    model large, mengacu pada eksternal RAM.
• idata
  – Kelas memori yang mengacu pada
    pengalamatan tidak langsung, pada internal
    RAM, dialamati secara indirect addr
• pdata
  – Kelas memori yang secara fisik mengacu
    pada eksternal RAM, pengalamatan halaman
    (page) hanya pada P0 (hanya 8 bit eksternal
    RAM)
• code
  – Kelas memori yang mengacu pada meori
    program/kode baik internal maupun eksternal
• bit
   – Sebagai tipe data juga sebagai kelas memori
   – Mengacu pada internal RAM
• sfr
   – Sebagai tipe data juga sebagai kelas memori
   – Mengacu pada register fungsi khusus
• sbit
   – Sebagai tipe data juga sebagai kelas memori
   – Mengacu pada register fungsi khusus yang dialamati
     per bit
catatan
• Sfr berada pada alamat memori 0x80
  sampai dengan 0xFF
• Alamat sfr yang habis dibagi delapan
  dapat dialamati per bit
Deklarasi var
• Format : tipedata namavariabel
  – Contoh:
    • int pencacah;
    • char data_suhu;
                     var
• Contoh :
  – data unsigned char tampung;
    (mengacu pada kelas data)
  – xdata unsigned char test_xdata;
    (mengacu pada kelas xdata)
  – idata unsigned char test;
    (mengacu pada kelas idata)
  – pdata unsigned int awal;
    (mengacu pada kelas pdata)
                     var
• Contoh :
  – unsigned char data tampung;
    (mengacu pada kelas data)
  – unsigned char xdata test_xdata;
    (mengacu pada kelas xdata)
  – unsigned char idata test;
    (mengacu pada kelas idata)
  – unsigned int pdata awal;
    (mengacu pada kelas pdata)
                    var
• Dapat juga dengan mengacu pada alamat
  absolut dgn kata kunci “at alamat “
• Contoh:
  – xdata at 0x2000 unsigned char tampung
  – bit at 0x20 flag
                      var
• Pada kasus peralatan in/out yang
  dipetakan ke memori atau var yang tidak
  boleh dioptimalisasi oleh kompiler maka
  depan var ditambahkan kata kunci
  “volatile”
• Contoh:
  – volatile xdata at 0x8000 char PortA;
  – volatile xdata at 0x800 char PortB;
                    var
• Deklarasi var yang mengacu pada code
  harus diinisialisai dulu
• Contoh :
  – code unsigned char tes=0x20;
• Deklarasi var yang mengacu pada kelas
  code hanya dapat dibaca saja dan
  biasanya digunakan untuk look up table
• Contoh:
  – Code unsigned char tampil_LED[4]=
    {0x01,0x02,0x04,0x08}
Deklarasi konstanta
• Format :
  const tipe_data nama_kons = nilai kons

Contoh :
- const float phi=3.14
- const int ralat = 5;
                    kons
• Deklarasi konstanta juga dapat mengacu
  pada kelas memori
• Contoh :
  – code const int pro = 2
  – data const char pengali = 3
Pengarah Preposesor
• Format :
  # include

    Pengarah preposesor c yang dikerjakan oleh
    SDCPP yang menyisipkan file lain , dalam hal
    ini file .h

  Contoh : #include <at89x51.h>
          Berisi deklarasi register mikro 89s51
Pengarah yang lain
• Format:
  #define

   Untuk membuat konstanta bersimbol, alias
   atau macro
• Contoh :
  #define suhu_mak 100
  /*konstanta simbol untuk suhu_mak=100*/

  #define CLOCK P3_1
  /*alias P3_1 adalah CLOCK*/

  #define bagi_dua(nilai) ( (nilai)/2)
  /*macro*/
Fungsi main()
•   Program c minimal punya 1 fungsi :
    main()
•   Void didepan berarti fungsi tidak
    mempunyai nilai balikan (return value)
•   Penulisan:
     1. Void main(void)
     2. Void main()
Kerangka Pogram
#include <header>

Void main(void)
{
  deklarasi konstanta;
  deklarasi variable;
  pernyataan;
}
Tugas
• Buat program sederhana pada SDCC