LAPORAN PRAKTIKUM I
EEPROM DALAM MIKROKONTROLER ATmega8535
Untuk memenuhi Tugas Mata Kuliah Sistem Mikrokontroler Lanjut
Yang di bimbing oleh Ibu Dyah Lestari, S. T., M.Eng.
Oleh :
Alvina Rizky
190532547220
D3 ELKA ’19 OFF A
MODUL I
EEPROM DALAM MIKROKONTROLER ATmega8535
TUJUAN
Mahasiswa dapat menjelaskan cara menggunakan EEPROM internal dalam
mikrokontroler ATmega8535 untuk menyimpan data.
Mahasiswa dapat mempraktekkan penyimpanan dan pembacaan data di dalam
EEPROM internal dalam mikrokontroler ATmega 8535.
EEPROM
EEPROM (Electrically Erasable Programmable Read Only Memory) merupakan
memori yang dapat menyimpan data, dimana data tersebut akan tetap ada meskipun catu
daya dimatikan. Data yang tersimpan dalam EEPROM dapat dihapus dengan sinyal listrik
dengan tegangan tertentu.
EEPROM internal dalam mikrokontroler ATmega8535 mempunyai kapasitas 512 byte
dan dipetakan sendiri dengan alamat mulai 00H-FFH. EEPROM hanya dapat diakses melalui
register (EEARH, EEARL, EEDR dan EECR) dan operasi read/write yang tertentu sehingga
waktu aksesnya lebih lamban dari pada mengakses register ataupun SRAM.
Register yang digunakan untuk mengakses EEPROM ada 3 yaitu:
- EEARH dan EEARL
- EEDR
- EECR
Bit 8..0: EEAR8..0: EEPROM Address, adalah tempat meletakkan alamat secara linier
untuk EEPROM mulai 0-511. Nilai awalnya tidak ada, sehingga ketika akan digunakan
harus diberi nilai terlebih dahulu.
EEDR berisi data yang akan ditulis ke dalam atau dibaca dari EEPROM dalam alamat
yang ditulis dalam register EEAR.
PROSEDUR
1. Rangkailah peralatan yang diperlukan seperti dalam Gambar 1.1. Hubungkan soket
jumper PORTB pada minimum system dengan soket jumper LED/OUTPUT pada I/O.
void main(void)
{
// Declare your local variables here
PORTA=0xFF; //state=Toogle
DDRA=0x00; //func=input
PORTB=0x00; //state=0
DDRB=0xFF; //func=output
while (1)
{
//membaca data dari eeprom
if(PINA.0==1){
delay_ms(50); //delay debouncing
PORTB = EEPROM_read(0x00);
}
}
}
2.
Tabel 1.1 Akses EEPROM secara Langsung
No Proses EEPROM Alamat Data
1 Pembacaan data I 0x00 0x00
2 Penulisan data 0x00 0xAA
3 Pembacaan data II 0x00 0xAA
Pembacaan Data I
6
Pembacaan Data II
void main(void)
{
// Declare your local variables here
PORTA=0xFF; //state=Toogle
DDRA=0x00; //func=input
PORTB=0x00; //state=0
DDRB=0xFF; //func=output
7
while (1)
{
//membaca data dari eeprom
if(PINA.0==1){
delay_ms(50); //delay debouncing
ptr_to_eeprom = 0; //alamat 0 eeprom
i = *ptr_to_eeprom; //memanggil data pada alamat 0
PORTB = i; //menampilkan data alamat 0
}
}
}
4.
Tabel 1.2 Akses EEPROM secara Tidak Langsung/dengan Pointer
No Proses EEPROM Alamat Data
1 Pembacaan data I 0x00 0x00
2 Penulisan data 0x00 0xAA
3 Pembacaan data II 0x00 0xAA
Pembacaan Data I
Pembacaan Data II
8
#include <mega8535.h>
#include <delay.h>
// Declare your global variables here
void EEPROM_write(unsigned int uiAddress, unsigned char ucData){
//menunggu proses sebelumnya selesai
while(EECR&(1<<EEWE));
//mengisi data alamat dan data register
EEAR = uiAddress;
EEDR = ucData;
//menulis logika 1 ke EEMWE untuk menulis data
EECR |=(1<<EEMWE);
//memulai menulis data di eeprom
EECR|=(1<<EEWE);
}
void main(void)
{
// Declare your local variables here
PORTA=0xFF; //state=Toogle
DDRA=0x00; //func=input
9
PORTB=0x00; //state=0
DDRB=0xFF; //func=output
while (1)
{
//membaca data dari eeprom
if(PINA.0==1){
delay_ms(50); //delay debouncing
PORTB = EEPROM_read(0x00);
delay_ms(500);
PORTB = EEPROM_read(0x01);
delay_ms(500);
PORTB = EEPROM_read(0x02);
delay_ms(500);
PORTB = EEPROM_read(0x03);
delay_ms(500);
PORTB = EEPROM_read(0x04);
delay_ms(500);
}
}
}
6.
Tabel 1.3 Program kombinasi toggle switch, EEPROM dan LED
Alama Alama
No Proses EEPROM Data Proses EEPROM Data
t t
0 0xff 0 0x11
Pembacaan data I Pembacaan data I
1 0xff 1 0x22
sebelum catu setelah catu daya
1 2 0xff 2 0x33
daya dilepas dilepas
2 0xff 3 0x44
4 0xff 4 0x55
2 Penulisan data 0 0x11 Penulisan data 0 0x11
sebelum catu 1 0x22 setelah catu daya 1 0x22
daya dilepas 2 0x33 dilepas 2 0x33
3 0x44 3 0x44
10
4 0x55 4 0x55
0 0x11 0 0x11
Pembacaan data 1 0x22 Pembacaan data II 1 0x22
3 II sebelum catu 2 0x33 setelah catu daya 2 0x33
daya dilepas 3 0x44 dilepas 3 0x44
4 0x55 4 0x55
0x22
11
0x33
0x44
0x55
void main(void)
{
// Declare your local variables here
PORTA=0xFF; //state=Toogle
DDRA=0x00; //func=input
PORTB=0x00; //state=0
DDRB=0xFF; //func=output
lcd_init(16);
while (1)
{
//membaca data dari eeprom
if(PINA.0==1){
delay_ms(50); //delay debouncing
PORTB = EEPROM_read(0x00);
menampilkanKeLCD(1);//menampilkan eeprom alamat 0x00
delay_ms(200);
PORTB = EEPROM_read(0x01);
menampilkanKeLCD(2);//menampilkan eeprom alamat 0x01
delay_ms(200);
PORTB = EEPROM_read(0x02);
menampilkanKeLCD(3);//menampilkan eeprom alamat 0x02
delay_ms(200);
PORTB = EEPROM_read(0x03);
menampilkanKeLCD(4);//menampilkan eeprom alamat 0x03
delay_ms(200);
PORTB = EEPROM_read(0x04);
menampilkanKeLCD(5);//menampilkan eeprom alamat 0x04
delay_ms(200);
}
14
//menulis data ke eeprom
if(PINA.1==1){
delay_ms(50); //delay debouncing
EEPROM_write(0x00, 0x11);
EEPROM_write(0x01, 0x22);
EEPROM_write(0x02, 0x33);
EEPROM_write(0x03, 0x44);
EEPROM_write(0x04, 0x55);
}
}
}
8.
Tabel 1.4 Program kombinasi toggle switch, EEPROM dan LCD display
N Alama
Proses EEPROM Alamat Data Proses EEPROM Data
o t
0 255 0 17
Pembacaan data I Pembacaan data I
1 255 1 34
sebelum catu setelah catu daya
1 2 255 2 51
daya dilepas dilepas
3 255 3 68
4 255 4 85
0 17 0 17
Penulisan data Penulisan data
1 34 1 34
sebelum catu setelah catu daya
2 2 51 2 51
daya dilepas dilepas
3 68 3 68
4 85 4 85
0 17 0 17
Pembacaan data II 1 34 Pembacaan data II 1 34
3 sebelum catu 2 51 setelah catu daya 2 51
daya dilepas 3 68 dilepas 3 68
4 85 4 85
15
ANALISIS DATA