BELAJAR - MIKROKONTROLER

Berbagi Ilmu Itu Indah

Recent Posts

LightBlog
Responsive Ads Here

Minggu, 08 Februari 2015

Mengenal Bahasa Pemograman C


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..

2 komentar: