Pertemuan 17 Pemrograman Mikrokontroler 8051 (Lanjutan) Matakuliah

Download Report

Transcript Pertemuan 17 Pemrograman Mikrokontroler 8051 (Lanjutan) Matakuliah

Matakuliah
Tahun
Versi
: H0194/ Aplikasi Mikroprosesor dan Interfacing
: 2005
: 1.0
Pertemuan 17
Pemrograman Mikrokontroler 8051
(Lanjutan)
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
• Mendemonstrasikan pemrograman
mikrokontroler 8051
Pemrograman Mikrokontroller
Lanjutan
•
•
•
•
•
Data Block Transfer Routines
Table Look-Up Procedures
ASCII Conversion Routines
N-Way Branching
Pemrogramman Mikrokontroler dengan
bahasa C
Data Block Transfer Routines
• Transfer sekumpulan data dari memori eksternal ke
lokasi yang lain
mov
dptr, #0ff00h
mov
P2, #2
mov
r0, #80
mov
r1, #2Fh
Transfer:
movx
a, @r0
movx
@dptr, a
inc
r0
inc
dptr
djnz
r1, transfer
Table Look-Up Procedures
• Mengimplementasikan suatu fungsi dengan tabel di
memory
prime:
inc
movc
ret
db
db
db
db
db
db
db
db
a
a,@a+pc
2
3
5
7
11
13
17
19
ASCII Conversion Routines
• Mengkonversi data biner ke ASCII atau
sebaliknya
N-Way Branching
• Melakukan lompatan ke N kemungkinan
tujuan
Pemrogramman Mikrokontroler
dengan bahasa C
• Inisialisasi Variable
#define HIGH
1
//define variable perbit
#define START_BYTE 0xAB
//define variable perbyte
#define DATA_LCD
P0
sbit
LED
= P1^2;//define nama port perbit
unsigned char namaVar;
//perhatikan penggunaan unsigned
unsigned char idata namaVar[10];
//array
unsigned char code namaVar=(0x98,0x45); //LookUp tabel
Pemrogramman Mikrokontroler
dengan bahasa C
• Struktur Program
#include <AT89X52.H>
//prototipe untuk ATMEL 89x52
//init variable & prototipe
void delay(unsigned int n);
//prototipe untuk prosedur delay
void main(void)
{
while(TRUE){
}
}
// program dimulai disini
void delay(unsigned int n)
{
for ( ;n>0; n--);
}
// prosedur delay di uC
Pemrogramman Mikrokontroler
dengan bahasa C
• Prosedur Interrupt
#include <AT89X52.H>
//prototipe untuk ATMEL 89x52
oninterrupt(void) interruptx
//
//
//
//
//
{
prosedur interrupt x
0(EX0),1(ET0),2(EX0),3(ET1),
4(ES),5(ET2)
program interrupt
dimulai disini
}
void main(void)
{
while(TRUE)
{
}
}
// program dimulai dari while(TRUE)