Jobsheet: Mengakses Eeprom Internal
Jobsheet: Mengakses Eeprom Internal
Oleh
PROGRAM STUDI
TEKNOLOGI REKAYASA INSTRUMENTASI DAN KONTROL
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI LHOKSEUMAWE
2020
JOBSHEET
Oleh
PROGRAM STUDI
TEKNOLOGI REKAYASA INSTRUMENTASI DAN KONTROL
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI LHOKSEUMAWE
2020
i
LABORATORIUM: SISTEM MIKROKONTROLER
POLITEKNIK NEGERI LHOKSEUMAWE
PENGUJIAN: MENGAKSES EEPROM INTERNAL
I. Capaian Praktikum/Kompetensi
1. Dapat mengetahui cara mengakses tulis dan baca data ke/dari EEPROM
internal mikrokontroler AVR
2. Dapat melakukan pemrograman mikrokontroler AVR untuk mengakses tulis
dan baca data pada EEPROM internal
III. Teori
Mikrokontroler ATmega8535 memiliki alamat memory EEPROM internal
sebesar 512 byte dengan lebar data memory 8 bit. Untuk melakukan operasi write/read
ke memory EEPROM dilakukan melalui beberapa register yaitu register EEARH,
EEARL, EEDR dan EECR.
Inilah salah satu kelebihan bahasa pemrograman high level dalam hal ini bahasa
C dengan compiler CodeVision AVR, dimana teman-teman tidak dituntut harus tahu
mengenai register-register tersebut untuk dapat melakukan akses write/read EEPROM.
Dikarenakan compiler CodeVision sudah menyediakan sebuah intruksi untuk dapat
mengakses EEPROM internal AVR.
Untuk dapat melakukan operasi write/read EEPROM internal, sebelumnya kita
harus mendeklarasikan sebuah variabel yang digunakan untuk menunjuk pointer
EEPROM. Cara penulisannya adalah sebagai berikut:
[type data] eeprom *[variabel];
1
Jika menggunakan tipe data integer dan variabelnya diberi nama dengan
pointer_eeprom maka akan menjadi:
int eeprom *pointer_eeprom;
Bila sudah dideklarasikan seperti diatas, maka secara otomatis CodeVision AVR
akan menghasilkan sebuah variabel lagi yang bernama pointer_eeprom (tanpa tanda
bintang diawalnya). Variabel ini, yaitu pointer_eeprom (tanpa tanda bintang diawalnya)
nantinya digunakan untuk menunjuk alamat EEPROM internal yang akan kita tulis/baca
(write/read).
Sebagai contoh untuk menuliskan (write) variabel data (bernilai 10) ke alamat 0
di memory EEPROM internal maka:
data=10; → data yang akan ditulis
pointer_eeprom=0; → alamat EEPROM yang akan ditulis
*pointer_eeprom=data; → instruksi penulisan ke EEPROM
IV. Alat/Bahan
1. Komputer PC dengan aplikasi CVAVR
2. Trainer Board Mikrokontroler
V. Prosedur Praktikum
1. Buka program Code Vision AVR dan buatlah project baru, lakukan setting
chip dan LCD seperti pada gambar 2 dan simpanlah file tersebut.
2. Perhatikan program C yang dihasilkan pada CV AVR, lengkapi programnya
dengan perintah-perintah yang bercetak tebal seperti pada program 1.
3. Lakukan compilasi dan build All terhadap program yang telah dibuat,
periksa dan perbaiki bila terdapat error.
4. Hubungkan Board LCD ke port PD dan dua buah tombol tekan pada port
PB.0 dan PB.1, seperti pada gambar 1.
2
5. Download program hasil kompilasi .HEX ke dalam chip mikrokontroler dan
jalankan sistem mikrokontroler dengan menekan tombol reset pada Board
mikrokontroler
6. Perhatikan pada ditampilkan LCD dan catat ke dalam tabel 1.
LCD1 T1
LM016L
T2
U1
1 40
PB0/T0/XCK PA0/ADC0
2 39
PB1/T1 PA1/ADC1
3 38
PB2/AIN0/INT2 PA2/ADC2
VDD
VEE
VSS
4 37
RW
RS
D7
D6
D5
D4
D3
D2
D1
D0
PB3/AIN1/OC0 PA3/ADC3
E
5 36
PB4/SS PA4/ADC4
6 35
PB5/MOSI PA5/ADC5
14
13
12
10
11
9
8
7
6
5
4
3
2
1
7 34
PB6/MISO PA6/ADC6
8 33
PB7/SCK PA7/ADC7
14 22
PD0/RXD PC0/SCL
15 23
PD1/TXD PC1/SDA
16 24
PD2/INT0 PC2
17 25
PD3/INT1 PC3
18 26
PD4/OC1B PC4
19 27
PD5/OC1A PC5
20 28
PD6/ICP1 PC6/TOSC1
21 29
PD7/OC2 PC7/TOSC2
13
XTAL1
12 32
XTAL2 AREF
9 30
RESET AVCC
ATMEGA8535
3
Program 1.
#include <mega8535.h>
#include <stdlib.h>
#include <delay.h>
// Alphanumeric LCD functions
#include <alcd.h>
void tulis_data_ke_eeprom()
{
*pointer_eeprom=data;
}
void baca_data_dr_eeprom()
{
dataE=*pointer_eeprom;
}
void tampil_lcd()
{
baca_data_dr_eeprom();
itoa(dataE,temp);
lcd_gotoxy(13,1);
lcd_puts(temp);
}
void main(void)
{
// Declare your local variables here
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("AKSES EEPROM Int");
lcd_gotoxy(0,1);
lcd_putsf("Data EEPROM:");
delay_ms(500);
while (1)
{
// Place your code here
if (PINB.0==0)// menulis data=0 ke EEPROM
{
data=0;
delay_ms(300);
tulis_data_ke_eeprom();
}
if (PINB.1==0)// menulis data=1 ke EEPROM
{
data=1;
delay_ms(300);
4
tulis_data_ke_eeprom();
}
}
}
Penekanan
Tampilan LCD
Tombol
T1 Data EEPROM:
T2 Data EEPROM:
T1 Data EEPROM:
T2 Data EEPROM: