• Tidak ada hasil yang ditemukan

MODUL 1 Pengenalan C untuk 8051 (Compile dan Download)

N/A
N/A
Protected

Academic year: 2021

Membagikan "MODUL 1 Pengenalan C untuk 8051 (Compile dan Download)"

Copied!
11
0
0

Teks penuh

(1)

MODUL 1

Pengenalan C untuk 8051 (Compile dan Download)

Bahasa pemrograman C adalah sebuah bahasa 'mid-level', namun memiliki fitur

'high-level' (seperti support pada fungsi dan modul) dan juga memiliki fitur

'low-level' (seperti mengakses hardware melalui pointer). Dengan menggunakan

bahasa C, kita dapat dengan mudah untuk pindah ke jenis mikrokontroler yang

lain, lebih mudah dan cepat dalam menulis kode program, dan lebih mudah

dimengerti, dan lebih mudah dalam melakukan debugging.

1. Tujuan

Peserta mengetahui pembuatan program dengan menggunakan bahasa C

Peserta mengetahui bagaimana proses kompilasi dan download program

pada 8051

2. Dasar Teori

Keil uVision2

Untuk menggunakan bahasa C pada mikrokontroler diperlukan compiler. Pada

percobaan kali ini digunakan Keil uVision2 sebagai compiler untuk mikrokontroler

8051.

Memulai membuat project:

(2)

Atur pilihan device sesuai dengan device yang digunakan. Pada percobaan

kali ini dipilih database Atmel -> 89S8252 untuk keluarga 8051.

(3)

Membuat file source code yang baru:

Pilih opsi File -> New...

Tulis source code C pada halaman baru tersebut dan simpan dengan

ekstensi .c

Klik kanan pada Source Group dan pilih opsi Add Files to Group

'Source Group 1' kemudian tambahkan file .c yang kita buat tadi ke

Source Group tersebut.

(4)

Melakukan kompilasi:

Tekan tombol F7 untuk melakukan proses build.

Contoh tampilan hasil proses Build:

Agar program dapat di-download ke dalam mikrokontroler, kita memerlukan file

berbentuk file dari program yang telah kita buat. Untuk menghasilkan

HEX-file ini, dilakukan dengan cara:

(5)
(6)

Dengan mengaktifkan opsi tersebut, maka ketika proses build program akan

dihasilkan HEX-file dari program tersebut.

SPI – Flash Programmer 3.7

Salah satu alternatif untuk mendownload HEX-file yang telah dibuat tadi adalah

secara serial. Pada percobaan kali ini digunakan aplikasi SPI – Flash Programmer

3.7 buatan Asim Khan.

Proses download program:

Pilih opsi Open File kemudian pilih HEX-file yang kita buat tadi.

Pilih jenis mikrokontroler yang digunakan. Pada praktikum kali ini

digunakan jenis AT89S52.

Kemudian pilih opsi Program.

Jika program yang di-download ingin dibuat agar tidak bisa dibaca orang

lain, maka digunakan opsi Lock Bit.

3. Petunjuk Praktikum

Percobaan 1: Port I/O

//#include <stdio.h>

#include "AT898252.H" // Fungsi main

(7)

void main (void) {

P0 = 0x55; // set port 0 menjadi 0x55

while (1) // superloop {

// tidak ada yang dilakukan }

}

Compile dan download program di atas ke board 8051 yang telah dibuat!

Perhatikan apa yang terjadi! Analisis!

Percobaan 2: Interupsi Eksternal

#include "AT898252.H"

// Interrupt eksternal 0, dipanggil saat ada interupsi EXT0

void isrExt0(void) interrupt 0 {

P0 = 0x55; // set P0 ke 0x55

return; }

// Interrupt eksternal 1, dipanggil saat ada interupsi EXT1

void isrExt1(void) interrupt 2 {

P0 = 0xAA; // set P0 ke 0xAA

return; }

// Fungsi main

void main (void) {

EX0 = 1; // enable interrupt EXT0 EX1 = 1; // enable interrupt EXT1 EA = 1; // enable interrupts P0 = 0xFF; // set P0 ke 0xFF

while (1) // superloop

{

// tidak ada yang dilakukan }

}

Compile dan download program di atas ke board 8051 yang telah dibuat!

(8)

Percobaan 3: RS232 (Komunikasi Serial)

#include <stdio.h>

#include "AT898252.H"

// Interrupt eksternal 0, dipanggil saat ada interupsi EXT0

void isrExt0(void) interrupt 0 {

printf("halo");

return; }

// Interrupt eksternal 1, dipanggil saat ada interupsi EXT1

void isrExt1(void) interrupt 2 {

printf("dunia");

return; }

// Inisialisasi komunikasi serial

void initSerialComm(void) {

SCON = 0x40; // Setup serial port control register // Mode 1: 8-bit uart var. baud rate // REN: enable receiver disable

// use 0x50 to enable receiver PCON &= 0x7F; // Clear SMOD bit in power ctrl reg // This bit doubles the baud rate TMOD &= 0xCF; // Setup timer/counter mode register // Clear M1 and M0 for timer 1

TMOD |= 0x20; // Set M1 for 8-bit autoreload timer TH1 = 0xFD; // Set autoreload value for timer 1 // 9600 baud with 11.0592 MHz xtal TR1 = 1; // Start timer 1

TI = 1; // Set TI to indicate ready to xmit }

// Fungsi main

void main (void) {

initSerialComm(); // inisialisasi Komunikasi Serial EX0 = 1; // enable interrupt EXT0

EX1 = 1; // enable interrupt EXT1 EA = 1; // enable interrupts

while (1) // superloop

{

// tidak ada yang dilakukan }

(9)

Compile dan download program di atas ke board 8051 yang telah dibuat!

Perhatikan apa yang terjadi! Analisis!

Percobaan 4: Implementasi 7-Segment

#include "AT898252.H"

// variabel untuk menyimpan data waktu sekarang, waktu on, dan waktu off

unsigned char cWaktuSekarang[4] = {1,2,3,4}; // 7 segment decoder (active low)

// berikut merupakan gambaran mengenai decoder BCD to 7 segment:

// ===================================================== // | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | o | n | f | // ===================================================== // a a => P0_0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | // ---- b => P0_1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | // f | g | b c => P0_2 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | // ---- d => P0_3 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | // e | | c e => P0_4 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | // ---- f => P0_5 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | // d g => P0_6 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | // //

unsigned char BCDTO7SEGMENTS[] = {0xC0, // 1100 0000b // 0 0xF9, // 1111 1001b // 1 0xA4, // 1010 0100b // 2 0xB0, // 1011 0000b // 3 0x99, // 1001 1001b // 4 0x92, // 1001 0010b // 5 0x82, // 1000 0010b // 6 0xF8, // 1111 1000b // 7 0x80, // 1000 0000b // 8 0x90, // 1001 0000b // 9 0xA3, // 1010 0011b // o 0xAB, // 1010 1011b // n 0x8E}; // 1000 1110b // f ////////////////////////////////////////////////////////////////////////////// // Unit Refresh Display - mux 7 segment - mulai

//////////////////////////////////////////////////////////////////////////////

void refresh7Segment(char cDigitPos) {

P2 = 0xFF; // clear data pada port 0 untuk mematikan semua lampu

P0 = BCDTO7SEGMENTS[cWaktuSekarang[cDigitPos]];//keluarkan data 7 segment di P0 P2 = P2 ^ (1 << cDigitPos); // nyalakan sebuah 7 segment

// P2 = 11111110 saat menyalakan 7 segment pertama // P2 = 11111101 saat menyalakan 7 segment kedua // P2 = 11111011 saat menyalakan 7 segment ketiga // P2 = 11110111 saat menyalakan 7 segment keempat return;

(10)

////////////////////////////////////////////////////////////////////// // Unit Refresh Display - mux 7 segment - selesai

////////////////////////////////////////////////////////////////////// // Interrupt Timer2 setiap 2,5 ms

void isrTimer2(void) interrupt 5 // Dipanggil setiap 2,5 ms {

static unsigned int cCount = 0; TF2=0; //clear interrupt

// tambah satu untuk nilai cCount cCount++;

// refresh 7 Segment

refresh7Segment(cCount & 0x3);//cCount & 0x3 = cCount%4.U/ mendptkan nilai 0-3. return;

}

// Inisialisasi Timer2

// asumsi clock 12 MHz => 12 MHz/12 = 1.000.000 hitungan setiap detiknya // dalam hal ini, diinginkan periode Timer 2 sebesar 2,5 ms

// jadi jumlah hitungan yang harus di-count adalah 2,5/1000*1000000 = 2500 hitungan

void initTimer2(void) {

T2MOD=0; // Timer 2 : 16 bit autoreload T2CON=0;

// agar timer2 dipanggil setiap 5 ms, counter sebanyak 2500 kali // 0x09C4=2500

RCAP2H=0xF6; // 65536-2500=63036d=F63Ch

RCAP2L=0x3C; // masukkan nilai reload di sini TL2=RCAP2L;

TH2=RCAP2H;

PT2 = 1; // Set Timer2 menjadi prioritas tertinggi ET2=1; // enable interrupt

TR2=1; // start timer2 return;

}

// Fungsi main

void main (void) {

initTimer2(); // inisialisasi Timer2 EA = 1; // enable interrupts while (1) // superloop

{

// tidak ada yang dilakukan }

(11)

Compile dan download program di atas ke board 8051 yang telah dibuat!

Perhatikan apa yang terjadi! Analisis!

4. Referensi

Pardue, Joe. “C Programming For Microcontrollers”, Smiley Micros, 2005.

AT89S52 Datasheet

Referensi

Dokumen terkait

Antarmuka Program Pengenalan Ucapan Untuk Pengaturan Kipas DC Secara Real- Time Menggunakan Ekstraksi Ciri DCT dan Fungsi Jarak Euclidean .... Software Program Pada

Misalnya, dengan adanya BCL, maka kita bisa menggunakan objek atau Class yang dibuat untuk aplikasi berbasis windows pada aplikasi berbasis web.. Dengan adanya kode yang

Keunggulan lainnya dengan menggunakan bahasa C adalah penyusunan program yang besar dapat dilakukan dengan mudah, dan program yang sudah jadi dapat digunakan ke jenis AVR

ƒ dapat membuat program sederhana untuk mengakses LED yang terdapat pada DSK dengan menggunakan pemrograman bahasa-C..

JavaScript adalah bahasa scripting yang digunakan untuk membuat aplikasi berbasis web. Penulisan kode program menggunakan JavaScript dapat disisipkan langsung kedalam file

Software yang digunakan pada arduino uno untuk membuat program dan mengupload program ke mikrokontroler adalah menggunakan software Arduino IDE yang berupa bahasa

° Bahasa pemrograman ini merupakan bahasa level rendah yang dipakai oleh seorang programmer untuk menulis program dengan menggunakan singkatan atau kata yang lebih mudah

Meskipun diwujudkan dengan Octave, contoh-contoh program yang diberikan sangat mudah untuk dikonversikan ke bentuk bahasa pemrograman yang lain seperti Java ataupun