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..
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..
Wah blognya keren banget, bisa belajar dari sini ni
BalasHapuskeren bgt gan sangat bemanfaat
BalasHapus