Sabtu, 19 Januari 2013

Mengenal Bahasa Pemograman C dan Penulisannya Untuk Mikrokontroller.


" Belajar sambil berbagi semoga bermanfaat dan mendapatkan berkah "



Untuk memogram mikrokontroller sebetulnya tidak hanya menggunakan bahasa C, tetapi kita juga bisa menggunakan bahasa pemograman yang lain misalnya Bahasa Basic, Asembller dan lain-lain. karena pada prinsipnya yang dibaca mikrokontroller bukan Bahasa Pemogramannya tetapi bahasa mesin yaitu .hex (hexadecimal). Jadi bahasa pemograman apa saja bisa untuk memprogram mikrokontroller dengan catatan ada software compiler yang bisa merubah kebahasa mesin (.hex).

Yang akan kita bahas adalah bahasa pemograman C dengan Compiler yang digunakan yaitu Covision AVR. Jika ditanya kenapa saya menggunakan basaha pemograman
C dan Compilernya CodeVision AVR?. Jawabannya sebarnya sederhana karena saya pernah punya buku yang mempelajari bahasa C dan compilernya Codevision AVR dan setelah saya pelajari ternyata tidak terlalu sulit dibanding dengan bahasa Assembler, he… itu sih pendapat pribadi saya sebenarnya dalam belajar itu relativ tergantung balik lagi ke diri masing masing. Tapi saya pernah dapet matakuliah basaha Asembbler dan kayana gak semudah mempelajari bahasa C alias gak bisa2.. he..

bahasa C merupakan high level language (bahasa tingkat tinggi) , dimana memudahkan programmer menuangkan algoritmanya. Untuk mengetahui dasar pemograman bahasa C saya akan memulai dengan sturuktur penulisan program, strukturnya sebagai berikut:

Struktur penulisan program
#include < [libraryA.h] > // Opsional
#include < [libraryB.h] > // Opsional

#define [nama variable] [nilai] ; // Opsional
#define [nama variable] [nilai] ; // Opsional

[global variables] // Opsional 
[functions] // Opsional
void main(void) // Program Utama
{
[inisialisasi]

[Program Utama]
}

Berikut ini contoh Program jadi yang saya buat menggunakan Codevision AVR:
Program ini berfungsi untuk menyalakan dan mematikan led.
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : KONTROLL LAMPU ON - OFF
Version : 01
Date    : 12/19/2012
Author  : Aris Munandar
Company : Les Elektronika
Comments: " Belajar Sambil Berbagi Insyaallah Berkah ".
Info Lebih Lanjut :
-www.leselektronika.blogspot.com
-www.budakwarkir.blogspot.com
                                                           
Chip type               : ATmega16
Program type            : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include
#include

#define tombol_on   PINB.0
#define tombol_off  PINB.1
#define lampu       PORTA.0
#define on          0
#define off          1

bit status_tombol=off;

void lampu_on();
void lampu_off();

void lampu_on(){
                lampu=on;
                delay_ms(10);
                }

void lampu_off()
                {
                lampu=off;
                delay_ms(10);
                }
               
           
 void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=1
PORTA=0x01;
DDRA=0x01;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=P
PORTB=0x03;
DDRB=0x00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// USART disabled
UCSRB=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC disabled
ADCSRA=0x00;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

while (1)
      {
      // Place your code here
       if (tombol_on==on){lampu_on();}
       if (tombol_off==on){lampu_off();}
      }
}

Berikut ini adalah rangkainnya:


Semoga bermanfaat..

7 komentar:

  1. mas kalau input data pake codevisionavr buat runing text pake atmega16 gmna ya?

    BalasHapus
    Balasan
    1. maksudnya membuat text berjalan dimana? di LCD atau DOtmatrix....?

      Hapus
    2. Mas mau tanyak, saya mau membuat tugas akhir dengan judul "Pengendalian Lampu rumah tinggal via sms berbasis system minimum ARDUINO UNO".
      Itu susah gk bahasa C yg harus dipelajari untuk TA itu.??
      maap saya masi gelap tentang Microkontroler.
      Mohon bantuan nya ya.

      Hapus
    3. Bagus tuh mas, Coba dulu z mas, biasanya susah kalo belum dicoba... he..
      kalo pake arduino tinggal pake GSM Shild z untuk library program juga udah ada di software arduinonya teruz untuk komunikasinya berarti harus dipelajari AT comand... untuk bahasa c bisa dipelajari dari pengalaman saya sih tidak terlalu sulit. saya kira begitu mas..

      Hapus
    4. Salam perkenalan dari saya yang bernama Salleh dari Malaysia.
      Saya amat tertarik dengan semua maklumat yang di paparkan di dalam
      LES ELEKTRONIKA. Banyak sekali ilmu yang saya perolehi dari rencana
      ini. Sesungguhnya ia amat bermakna bagi saya yang baru mendekati bidang
      electronic. Semoga segala usaha dan ilmu yang di berikan oleh Mas akan
      dimanafaatkan oleh setiap insan didunia yang bernama manusia dan doa saya
      semoga Mas akan mendapat rahmat dan ganjaran dari Allah s.w.t. InsyaAllah..
      alhijrahglobal@gmail.com

      Hapus
    5. Salam kenal juga kang salleh...
      Amieen, terimakasih atas semua doanya.
      semoga tulisan ini benar - benar bermanfaat dan dapat membantu kawan - kawan untuk menjadi pendekar solder he....
      sebagai padepokan untuk belajar dan berbagi sedikit ilmu.

      Hapus
  2. Komentar ini telah dihapus oleh pengarang.

    BalasHapus

Silahkan tinggalkan komentar kawan - kawan, baik berupa pertanyaan ataupun saran yang sifatnya membangun. komentar kawan - kawan sangat berharga untuk kemajuan blog ini. kalau bisa mohon hindari penggunaan Anonim. Semoga bermanfaat untuk kita semua...
Terimakasih....