Categories
Mikrokontroler

Akses EEPROM pada AT89S8253 dan AVR ATMega32

Artikel ini sebenarnya merupakan sambungan dari penjelasan saya tentang EEPROM yang ada di AT89S8253. Pada artikel ini saya bahas sebuah rangkaian dan program sederhana untuk mengakses (tulis/baca) EEPROM yang ada pada AT89S8253 (sebuah mikrokontroler keluarga Atmel AT89) dan ATMega32 (sebuah mikrokontroler keluarga Atmel AVR). Perhatikan gambar hasil-hasil bidikan saya atas eksperimen yang saya lakukan menggunakan AT89S8252 dan ATMega32 (IC ada di sebelah sisi menghadap kebawah)…

Okey, kita awali dengan rangkaian yang digunakan, cukup sederhana, dalam hal ini hanya digunakan sebuah LCD untuk memberitahukan kepada kita apa yang terjadi di-‘dalam’ sana, maksudnya di dalam mikrokontroler yang bersangkutan. Nantinya aplikasi ini hanya akan menuliskan 10 bilangan acak ke EEPROM mulai alamat 0 sampai dengan 9. Cukup sederhana karena yang ditekankan adalah konsep pengaksesan EEPROM yang begitu mudah menggunakan BASCOM 8051 dan/atau BASCOM AVR dari MCSELEC.

Untuk versi BASCOM dan pemasangan LCD mengikuti ketentuan berikut (baik untuk AT89S8253 maupun ATmega32…

  • Menggunakan BASCOM 8051 versi 2.0.14.0 (tahun 2007);
  • Menggunakan BASCOM AVR versi 1.11.9.5 (tahun 2009);
  • Menggunakan Min MCS51/AVR dan Sistem Minimum ATMega32 dan juga modul LCD 2×16;
  • Pin RS dan E LCD masing-masing dihubungkan ke:
    • AT89S8253:PORT3.0 dan PORT3.1
    • ATMega32: PORTA.0 dan PORTA.1
  • Pin DATA 4, 5, 6 dan 7 pada LCD masing-masing dihubungkan ke:
    • AT89S8253: PORT3.4, PORT3.5, PORT3.6 dan PORT3.7
    • ATMega32: PORTB.3, PORTB.2, PORTB.1 dan PORTB.0

Langkah berikutnya adalah menuliskan program BASCOM AVR dan/atau BASCOM 8051-nya. Diawali dengan deklarasi berkas pustaka untuk AT89S8253:

$regfile = “89s8253.dat”
$crystal = 12000000

Atau untuk ATMega32 gunakan deklarasi berikut…

$regfile = “m32def.dat”
$crystal = 7372800

Selanjutnya badan program-nya sama semua. Kita awali dengan mendeklarasikan konfigurasi LCD sesuai dengan ketentuan yang saya berikan sebelumnya, sekaligus mendefinisikan beberapa variabel yang terkait atau terlibat…

Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Porta.1 , Rs = Porta.0
Config Lcd = 16 * 2

Dim X As Byte , I As Byte , D As Byte

Berikutnya menampilkan layar pembuka pada LCD dengan tundaan sekitar 3 detik…

Cls
Locate 1 , 1
Lcd “ATMega-32”
Locate 2 , 1
Lcd “Demo EEPROM”

Wait 3

Perintah LOCATE digunakan untuk menempatkan kursor pada LCD, sehingga LOCATE 2,1 artinya tempatkan kursor LCD pada posisi baris 2, kolom 1 demikian seterusnuya. Sedangkan perintah LCD diikuti dengan parameter teks yang akan ditampilkan pada LCD, karena LCD-nya ukuran 2 baris x16 karakter, jika teks lebih dari 16 akan terpotong. Berikutnya menyiapkan tampilan proses untuk penulisan data dan pembacaan data ke/dari EEPROM melalui LCD 2×16 karakter…

Cls
Locate 1 , 1
Lcd “menulis EEPROM..”
Locate 2 , 1
Lcd “datanya=”

Untuk penulisan data-data acak ke EEPROM yang bersangkutan, mulai dari alamat 0 sampai dengan 9 gunakan potongan program berikut…

For I = 0 To 9
Locate 2 , 9
D = Rnd(100)
Lcd D
Writeeeprom D , I
Wait 1
Next I

Instruksi WRITEEEPROM diikuti dengan parameter DATA dan ALAMAT eeprom, sedangkan untuk mendapatkan data-data acak digunakan fungsi RND(100), artinya hasilkan bilangan acak dengan bilangan maksimum 100. Berikutnya menyiapkan tampilan pada LCD untuk pembacaan data…

Locate 2 , 1
Lcd “selesai menulis!”
Wait 2

Cls
Locate 1 , 1
Lcd “membaca EEPROM..”
Locate 2 , 1
Lcd “data ke-“

Untuk pembacaan data-data yang sudah kita tuliskan sebelumnya (10 bilangan acak mulai lokasi 0 sampai dengan 9) gunakan potongan program berikut…

For I = 0 To 9
Locate 2 , 9
Readeeprom X , I
Lcd I ; ” = ” ; X
Wait 1
Next I

End

Jangan lupa akhiri program dengan pernyataan END!

That’s all, begitu mudah bukan? Menggunakan BASCOM Anda tidak perlu pusing-pusing mikiran pengaturan berbagai macam register yang berkaitan dengan EEPROM. Ada pertanyaan atau komentar? Silahkan…