.include"C:\Appnotes\m16def.inc"
.org 0x0000
rjmp main
main:
ldi r16,low(RAMEND)
out SPL,r16
ldi r16,high(RAMEND)
out SPH,r16 Inisialisasi
ldi r16,0xff
out ddrc,r16
out PORTC,r16
out ddrd,r16
out PORTD,r16
cbi PORTD,5
cbi PORTC,0
cbi PORTC,1
Program Utama
henti:
nop
rjmp henti
Setiap program terdiri dari inisialisasi program dan program utama. Inisialisasi program berisi
definisi chip yang digunakan, mendefinisikan nama variabel, konstanta, alamat awal program, stack
pointer.
Mata Kuliah Sistem Mikroprosesor
Dosen: Heri Andrianto, ST., MT. (Teknik Elektro, UK.Maranatha)
2.2 Bahasa C
Berikut ini penjelasan bahasa C dan aturan penulisan program yang digunakan pada Bahasa C,
khususnya bahasa C pada CodeVisionAVR. Untuk seterusnya, pada buku ini akan dibahas
pemrograman mikrokontroler AVR menggunakan bahasa C saja. Berikut ini penjelasan tentang
bahasa C.
//variabel glodal
/*
unsigned int i, j;
…komentar
..*/
void main(void)
{ Atau jika untuk satu baris saja
//variabel lokal // …komentar…
Char data_rx;
DDRA=0x00;
PORTA=0xFF;
DDRB=0xFF; Inisialisasi
PORTB=0x00;
…….
…….
While(1)
{
………
……… Program Utama
……… Program akan berulang terus karena syarat while (1)
}; akan selalu menghasilkan nilai benar (true)
Penjelasan :
Preprocessor (#) : Digunakan untuk memasukan (include) text dari file lain, mendefinisikan macro
yang dapat mengurangi beban kerja pemrograman dan meningkatkan legibility source code (mudah
dibaca).
Fungsi Input/Output
Fungsi- fungsi input/output berada di dalam file stdio.h, pada subdirektori ..\INC. Berikut ini
beberapa fungsi I/O dasar yang disediakan pada CodeVision.
- char getchar(void) : menghasilkan nilai balikan berupa karakter yang diterima dari UART,
menggunakan system polling (menerima data serial).
Sebelum menggunakan fungsi ini, lakukan terlebih dahulu pengaturan konfigurasi komunikasi serial :
- Inisialisasi baudrate UART
- Mengaktifkan transmitter UART
- Mengaktifkan Receiver UART
Fungsi I/O yang lebih tinggi lainnya menggunakan fungsi getchar dan putchar, seperti :
- void puts(char *str) : output, menggunakan putchar, null mengakhiri karakter string,
berlokasi di SRAM.
- void putsf(char flash *str) : output, menggunakan putchar, null mengakhiri karakter string,
berlokasi di FLASH.
- void printf(char flash *fmtstr[ , arg1, arg2, …]) : output text yang terformat, menggunakan
putchar, sesuai dengan format specifiers dalam fmtstr string.
Fungsi Matematika
Fungsi ini berada di dalam file math.h, pada subdirektori..\INC. Berikut ini sebagian dari beberapa
fungsi-fungsi matematika yang disediakan pada CodeVision.
- Unsigned char cabs(signed char x) : menghasilkan nilai absolute dari byte x.
- Unsigned int abs(int x) : menghasilkan nilai absolute dari bilangan integer x.
- Unsigned long labs(long int x) : menghasilkan nilai absolute dari bilangan long integer x.
- float fabs(float x) : menghasilkan nilai absolute dari bilangan floating point x.
- signed char cmax(signed char a, signed char b) : menghasilkan nilai maksimum dari byte a
dan b.
- int max(int a, int b) : menghasilkan nilai maksimum dari integer a dan b.
- long int lmax(long int a, long int b) : menghasilkan nilai maksimum dari long integer a dan
b.
- signed char csign(signed char x) : menghasilkan -1, 0, 1 jika byte x negative, nol, positif
- unsigned char isqrt(unsigned int x) : menghasikan akar kuadrat dari unsigned integer x.
Fungsi LCD
Fungsi LCD ditujukan untuk memudahkan interfacing antara program C dan modul alphanumeric
LCD yang dibuat dengan chip Hitachi HD44780 atau yang serupa chip Hitachi HD44780. Fungsi ini
berada di dalam file lcd.h, pada subdirektori ..\INC . Header ini harus dimasukan (include) jika kita
akan menggunakan fungsi-fungsi LCD. Sebelum menggunakan fungsi ini, terlebih dahulu harus diatur
port mikrokontroler yang digunakan untuk komunikasi dengan modul LCD. Format LCD dalam lcd.h
mendukung : 1x8, 2x12, 3x12, 1x16, 2x16, 2x20, 4x20, 2x24 dan 2x40 karakter. Fungsi-fungsi untuk
mengakses LCD diantaranya adalah :
Fungsi Delay
Menghasilkan delay dalam program-C. Berada pada header delay.h yang harus dimasukan (include)
sebelum digunakan. Sebelum memanggil fungsi, interrupsi harus dimatikan terlebih dahulu, bila tidak
maka delay akan lebih lama dari yang diharapkan. Juga sangat penting untuk menyebutkan frekuensi
clock chip IC AVR yang digunakan pada menu Project- Configure-C Compiler-Code Generation.
Fungsi delay yang disediakan adalah:
• void delay_us(unsigned int n)
Fungsi ini menghasilkan delay selama n µ-detik, n adalah nilai konstan
• void delay_ms(unsigned int n)
Fungsi ini menghasilkan delay selama n mili-detik, n adalah nilai konstan
Kedua fungsi tersebut secara otomatis akan me-reset watchdog-timer setiap 1 milidetik dengan
mengaktifkan instruksi wdr.