110 likes | 297 Views
Pertemuan 17 Pemrograman Mikrokontroler 8051 (Lanjutan). Matakuliah : H0194/ Aplikasi Mikroprosesor dan Interfacing Tahun : 2005 Versi : 1.0. Learning Outcomes. Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : Mendemonstrasikan pemrograman mikrokontroler 8051.
E N D
Pertemuan 17Pemrograman Mikrokontroler 8051 (Lanjutan) Matakuliah : H0194/ Aplikasi Mikroprosesor dan Interfacing Tahun : 2005 Versi : 1.0
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 a movc a,@a+pc ret db 2 db 3 db 5 db 7 db 11 db 13 db 17 db 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) // prosedur delay di uC { for ( ;n>0; n--); }
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) { } }