Dalam rangkaian elektronika berbasis mikrokontroler
yang dibuat, kadang-kadang sobat menggunakan keping memori untuk menyimpan
data. Salah satu jenis memori yang sering dipakai adalah AT93C46, AT93C56 atau AT93C66.
Ketiga jenis memori tersebut adalah satu rumpun. Dalam datasheet-nya disebut
sebagai 3 Wire Serial EEPROMs atau EEPROM dengan penyemat antarmuka menggunakan
3 saluran/kabel. Konfigurasinya bisa dilihat di bawah ini:
Selain Vcc dan Gnd ada penyemat atau pin lain yang
digunakan untuk antar muka dengan mikrokontroler yaitu pin 1 CS (chip select),
2 SK (serial clock) serta pin 3 dan 4 DI (data input) dan DO (data output). Pin
3 dan 4 dalam aplikasinya selalu dijadikan satu. Sementara pin 6 (ORG) bisa
dihubungkan ke Vcc untuk format data 16 bit atau ke Gnd untuk format data 8
bit.
Meskipun satu rumpun, AT93C46/56/66 memiliki
perbedaan yang terutama adalah kapasitas memorinya. AT93C46 berkapasitas 1k bit
atau 128 byte atau 64 word (1 word = 16 bit). Sementara AT93C56 berkapasitas 2k
bit atau 256 byte atau 128 word dan AT93C66 berkapasitas 4 k bit atau 512 byte
atau 256 word.
Untuk penjelasan lebih rinci dapat dilihat pada
datasheet untuk AT93C46/56/66 yang bisa diunggah lewat internet. Soalnya bisa kepanjangan
nih kalau dibahas di sini. Di sini akan dibahas soal modul aplikasi yang biasa
aku pakai sebagai peranti lunak antar-muka dengan AT93C46/56/66.
Modul yang akan diuraikan berisi perintah-perintah
yang sesuai dengan instruksi dalam AT93C yaitu: READ, WRITE, EWEN (erase/write
enable), EWDS (erase/write disable), ERASE, ERAL (erase all) dan WRAL (write
all).
Tapi sebelum menjalankan semua instruksi di atas
ada beberapa instruksi pendukung dan parameter yang akan dijelaskan sebagai
berikut:
RST bit p3.4
CLK bit p3.5
DIO bit p3.7
Flag data 20h
Fail bit Flag.0
Pastikan baris-baris
parameter di atas ditulis pada bagian awal program. Tiga baris pertama untuk
menetapkan konfigurasi gerbang sebagai antar-muka yang terhubung ke AT93Cxx.
Gerbang yang tertulis di atas seperti P3.4, P3.5 dan P3.7 tidaklah mutlak,
terserah saja, tergantung rangkaian yang sobat buat. Yang terpenting adalah
penetapan parameter RST, CLK dan DIO. Kalau ini tidak ditetapkan maka saat
membuat program dapat langsung ditulis nama gerbangnya, namun pengalamanku
kadang suka lupa fungsi dari gerbang yang digunakan.
Selanjutnya
menetapkan register dengan nama Flag yang diletakkan pada alamat 20H dari RAM
dan pada register tersebut menetapkan bit Flag.0 sebagai bit Fail. Alamat 20H
tidak mutlak tetapi tidak semua register dalam RAM bisa dibuat seperti ini.
Aplikasi Me-RESET EEPROM Seri AT93Cxx
ResetChip:
clr CLK
setb RST
clr RST
ret
Yang pasti untuk mereset AT93C adalah dengan
memberikan kondisi rendah pada pin CS dengan CLR RST. Tapi karena AT93C
melaksanakan instruksi pada tepi naik masukan SK maka sekalian saja dikondisikan
rendah dengan CLR CLK.
Prosedur yang penting dalam penangan sebuah memori
yang bekerja secara serial adalah mempersiapkan program yang berisi perintah
untuk menulis dan membaca data secara serial bit per bit. Berikut kita mulai
dari subrutin menulis ke dalam AT93C.
WriteSerialBit:
push acc
push 07H
mov R7, #8
NxtWRBit:
rlc A
jc WRBitH
WRBitL:
clr DIO
ajmp WRClk
WRBitH:
setb DIO
WRClk:
clr CLK
setb CLK
djnz R7,NxtWRBit
pop 07H
pop acc
ret
Perintah di awali dengan mengamankan isi akumulator
dan register R7 yang digunakan pada rutin WriteSerialBit. Selanjutnya
menetapkan isi register R7 dengan nilai 8H sesuai dengan jumlah bit dalam byte.
Akumulator adalah register yang berisi data yang akan diproses. Untuk
mengirimkan isi bit per bit dari akumulator digunakan perintah RLC (rotate to
left with carry). AT93C memproses data dari MSB maka pertama kali perintah RLC
dilaksanakan maka bit carry akan berisi bit ACC.7 dari akumulator. Program
kemudian akan bercabang sesuai kondisi bit carry, jika rendah maka menjalankan
perintah agar DI juga rendah. Sebaliknya jika bit carry tinggi maka pin DI akan
dibuat tinggi pula.
Agar data pada DI diproses oleh AT93C maka
selanjutnya dilaksanakan perintah untuk membangkitkan pulsa CS dengan perintah
CLR dan SETB secara berurutan. Proses akan dikerjakan pada tepi naik dari
sinyal CS.
Perintah akan diulang sebanyak 8 kali dengan
perintah DJNZ sebelum diakhiri dengan mengembalikan isi register R7 dan
akumulator, kemudian menjalan perintah RET.
Selanjutnya kita akan membahas subrutin membaca bit
per bit secara serial dari AT93C.
ReadSerialBit:
push 07H
clr a
setb DIO
mov R7, #8
RDClk:
clr CLK
setb CLK
jb DIO,RDBitH
RDBitL:
clr c
ajmp ShiftInBit
RDBitH:
setb c
ShiftInBit:
rlc a
djnz R7,RDClk
pop 07H
ret
Baris pertama adalah mengamankan isi register R7
diikuti mengosong register akumulator yang nanti akan dijadikan tempat
menyimpan data yang dibaca. Kemudian kita perlu memastikan kondisi DO dalam
keadaan tinggi. Setelah itu menetapkan banyaknya bit yang akan dibaca dengan
mengisi register r7 dengan nilai 8.
Setelah memberikan sinyal pada SK perintah
selanjutnya adalah memeriksa kondisi pin DO, jika tinggi program bercabang ke
perintah agar bit carry tinggi, sebaliknya jika DO rendah maka bit carry juga
dibuat rendah.
Selanjutnya adalah melaksanakan perintah untuk
merotasi akumulator ke kiri diikuti dengan carry.
Setelah kemudian mengulangi perintah membaca DO
sebanyak 8 kali, subrutin diakhiri dengan mengembalikan isi register R7.
Subrutin berikut adalah untuk memeriksa status
READY/BUSY dari pin DO terutama pada perintah-perintah seperti menulis dan
menghapus.
CheckEEPROM:
push 07H
push 05H
mov R6, #2
mov R7, #255
clr Fail
setb DIO
clr RST
setb RST
Subrutin diawali
dengan mengamankan register-register R6 dan R7 untuk kemudian mengisi
register-register tersebut untuk menentukan lamanya tundaan waktu tunggu selama
proses internal dalam serpih AT93C. Proses dimulai dengan memberikan pulsa
rendah pada pin CS dengan perintah CLR dan SETB berturut-turut setelah
sebelumnya memastikan bit Fail pada keadaan rendah dan pin DO tinggi.
WaitBusy:
clr CLK
setb CLK
jb DIO, WaitTimer1
mov R6, #2
mov R7, #255
ajmp Busy
WaitTimer1:
djnz R7, WaitBusy
mov R7, #255
djnz R6, WaitBusy
setb Fail
ajmp Ready
Rutin WaitBusy
berisi perintah menunggu sampai kondisi pin DO menjadi rendah dengan perintah
JB sebagai indikasi keadaan BUSY. Setelah menjalankan perintah memberi pulsa
pada SK, rutin program memeriksa kondisi DO, jika tinggi maka rutin tunggu
WaitTimer1 dilaksanakan yang ditentukan sesuai register R5 dan R7 dari nilai
register tersebut menghasilkan waktu tunggu selama 3ms.
Jika sampai
batas waktu pin DO tidak juga rendah maka selanjutnya rutin akan mengaktifkan
bit Fail. Tetapi jika dijumpai pin DO rendah makan selanjutnya ke rutin WaitReady
yaitu menunggu pin DO kembali tinggi. Di sini isi register R6 dikembalikan ke
nilai 2 seperti semula.
WaitReady:
clr CLK
setb CLK
jnb DIO, WaitTimer2
ajmp Ready
WaitTimer2:
djnz R7, WaitReady
mov R7, #255
djnz R6, WaitReady
setb Fail
Rutin WaitReady hampir
sama dengan WaitBusy, perbedaannya hanya menunggu pin DO menjadi tinggi dengan
perintah JNB.
Ready:
pop 06H
pop 07H
ret
Baik sukses atau tidak yang ditandai dengan bit
Fail, akhirnya subrutin diakhiri dengan mengembalikan isi register R6 dan R7
sebelum keluar dengan perintah RET.
Nah, biar sobat lebih memahami bagaimana proses
tersebut, aku lampirkan nih salah satu diagram pewaktuan yang menunjukkan
status READY/BUSY yaitu perintah WRITE. Hal seperti ini juga berlaku pada
perintah WRAL, ERASE dan ERAL
Dari datasheet, karakteristik untuk nilai tWP
normalnya adalah sekitar 3ms dan maksimal 10ms. Untuk perintah lainnya bisa
sobat lihat pada datasheet AT93C46/56/66.
Nah, keempat subrutin di atas yaitu ResetChip,
WriteSerialBit, ReadSerialBit dan CheckEEPROM selanjutnya berlaku untuk semua
jenis memori baik AT93C46, AT93C56 maupun AT93C66. Selanjutnya sobat akan aku
jelaskan tentang 7 perintah yang ada pada memori seri AT93Cxx.
Di atas adalah diagram perintah untuk AT93C46.
Untuk menjalan sebuah perintah di atas maka pertama harus memberikan bit dengan
logika 1 sebagai MSB pada DI untuk menetapkan start bit (SB). Berikutnya sobat
bisa menentukan 2 bit operation code (op code). Untuk perintah READ, ERASE dan
WRITE, setelah op code dapat langsung diisi dengan lokasi alamat memori yang
akan diproses. Sementara untuk perintah EWEN, ERAL, WRAL dan EWDS maka 2 bit
berikutnya adalah op code untuk masing-masing dan bit-bit LSB sisanya diabaikan
tapi tetap harus diisi dan diberikan ekstra pulsa. Perintah di atas juga
berlaku untuk AT93C56 dan AT93C66 tetapi perbedaannya adalah pada jumlah
bit-bit alamat yang dimiliki.
Dari tabel di atas memperlihatkan jika alamat untuk
AT93C46 adalah 7 bit (A6 – A0) untuk format 8 bit atau 6
bit (A5 – A0) untuk format 16 bit, sementara untuk AT93C56/66
adalah 9 bit (A8 – A0) atau 8 bit (A7 – A0)
untuk format 16 bit. Sebenarnya untuk AT93C55 bit yang berlaku hanya 8 bit
untuk format 8 bit atau 7 bit untuk format 16 bit tetapi bit tambahan tersebut
tetap harus diproses meski sebenarnya tidak ada atau diabaikan karena kita
tentu hanya akan menentukan alamat sesuai dengan kapasitas yang disediakan.
Nah, sekarang sobat pastinya tahu bahwa ada
beberapa perbedaan yang harus kita ketahui dalam merancang sebuah modul antar
muka dengan AT93C46/56/66.
Perbedaan pertama antara adalah panjang alamat dari
masing-masing jenis dan untuk ini aku klasifikasikan menjadi 2 yaitu untuk
AT93C46 memiliki 7 bit alamat sementara AT93C56/66 memiliki 9 bit alamat. Perbedaan
kedua yang berlaku dalam organisasi data yang terdiri dari 2 yaitu format 8 bit
dan 16 bit yang ditetapkan dengan pin ORG.
Dari gambar Write Timing dan tabel Instruction Set
di atas dapat kita pahami urutan serial bit yang dioperasikan pada antarmuka
seri AT89C, yaitu:
- 1 bit SB (start bit)
- 2 bit operation code
- Bit alamat yang banyaknya sesuai dengan kapasitas memori.
Berdasarkan tabel Instruction Set dan Organization
Key di atas dapat kita ketahui banyaknya bit untuk instruksi dan alamat yang
dibutuhkan, yaitu:
- 9 bit untuk AT93C46 pada format 16 bit data
- 10 bit untuk AT93C46 pada format 8 bit data
- 11 bit untuk AT93C56/66 pada format 16 bit data
- 12 bit untuk AT93C56/66 pada format 8 bit data
Dari pembagian di atas menunjukkan bahwa format bit
perintah berjumlah lebih dari 1 byte atau 8 bit. Dan karena laju serial data antara pengiriman
bit alamat dan saat pengiriman atau penerimaan bit data dilaksanakan secara
langsung tanpa jeda maka berikut ini aku buat format data untuk byte MSB dan
LSB yang nanti digunakan untuk mengirim perintah dan alamat, yaitu:
- 0000000S – CCAAAAAA untuk AT93C46 pada format 16 bit data
- 000000SC – CAAAAAAA untuk AT93C46 pada format 8 bit data
- 00000SCC – AAAAAAAA untuk AT93C56/66 pada format 16 bit data
- 0000SCCA – AAAAAAAA untuk AT93C56/66 pada format 8 bit data
Keterangan:
- Pada MSB ditambahkan beberapa bit berlogika rendah untuk mengisi
kekosongan menunggu logika tinggi dari start bit (SB).
- S adalah bit SB
- C adalah bit operation code
- A adalah bit-bit alamat
Sekarang kita lihat program yang terdiri dari sub
rutin untuk melaksanakan 7 perintah operasi dalam rumpun AT93C46/56/66.
Operasi READ
;Input
: DPTR = Address
;Output : A = Data
; B =
Data MSB
Pada operasi
READ, sub rutin diarahkan untuk membaca data pada lokasi yang ditunjukkan oleh
register DPTR yang terdiri dari DPH dan DPL. Byte data disimpan pada
akumulator. Sementara untuk operasi 16 bit maka data MSB disimpan di register
B.
AT93C46_READ:
push 07H
push 06H
mov R6, #2
mov R7, #255
clr Fail
setb RST
Penulisan
AT93C46_READ dapat diganti dengan serpih memori yang digunakan seperti
AT93C56_READ atau AT93C66_READ.
Sub rutin
diawali dengan perintah mengamankan register R6 dan R7 dan mengganti dengan
nilai untuk waktu tunggu. Kemudian dilanjutkan perintah me-reset bit Fail dan
mengeset pin CS dengan perintah SETB RST.
mov a,DPH
anl a, #00000001B
orl a, #00001100B
Akumulator
menyalin isi register DPH kemudian memprosesnya dengan operasi AND dan OR.
Ke 3 baris di
atas tidak ada dalam AT93C46_READ dan hanya berlaku untuk sub rutin yang
dijalankan pada AT93C56/66 dalam format 8 bit. Ke 3 baris tersebut diganti
dengan:
mov a, #00000001B
Data akumulator
di atas untuk AT93C46 dengan format 16 bit. Untuk format 8 bit diganti dengan
#00000011B. Sementara untuk AT93C56/66 format
16 bit diganti dengan #00000110B.
Setelah
akumulator berisi byte MSB, perintah selanjutnya adalah memproses akumulator
dengan memanggil sub rutin WriteSerialBit seperti ditunjukkan pada perintah
berikut.
acall WriteSerialBit
mov a, DPL
anl a, #00111111B
orl a, #10000000B
acall WriteSerialBit
setb DIO
Setelah byte MSB
pada akumulator selesai diproses, dilanjutkan dengan menyalin DPL ke akumulator
dan memprosesnya dengan operasi AND dan OR. Akumulator yang sudah berisi op
code diproses dengan WriteBitSerial dan program di atas diakhiri dengan
mengeset bit DIO menjadi tinggi.
Seperti
sebelumnya, perintah di atas adalah untuk AT93C46 dengan format 16 bit data.
Untuk format 8 bit, data untuk operasi AND diganti dengan #01111111B dan
perintah ORL dihilangkan. Sementara pada antarmuka dengan AT93C56/66 bahkan kedua
operasi AND dan OR di atas dihilangkan.
Dummy:
jb DIO, WaitTimer3
ajmp DataReady
WaitTimer3:
djnz R7,Dummy
mov R7, #255
djnz R6,Dummy
setb Fail
ajmp EndReadEEPROM
Setelah bit-bit
SB, Op Code dan alamat dikirim, program akan memeriksa status dummy bit
berlogika rendah yang dikirim oleh DO dari AT93Cxx. Status diperiksa
menggunakan perintah JB dengan lama waktu tunggu menurut isi register R6 dan R7
adalah sekitar 2ms. Jika dummy bit tidak muncul hingga pencacah habis maka rutin
akan mengeset bit Fail dan keluar. Tapi jika dummy bit ada maka rutin
selanjutnya akan membaca bit-bit data dengan sub rutin ReadSerialBit.
DataReady:
acall ReadSerialBit
xch a, b
acall ReadSerialBit
Pemanggilan sub
rutin ReadSerialBit pertama adalah untuk membaca MSB dari memori yang selanjutnya
di pindahkan ke register B sebagai data MSB dengan perintah XCH di mana isi
akumulator bertukar tempat dengan register B.
Untuk operasi
dengan format data 8 bit maka 2 baris terakhir di atas yaitu XCH A,B dan ACALL
ReadSerialBit kedua tidak diperlukan.
EndReadEEPROM:
clr RST
pop 06H
pop 07H
ret
Sub rutin AT93C46_READ
diakhiri dengan me-reset CS dan mengembalikan isi register R6 dan R7.
Perihal dummy
bit dapat dilihat dari diagram pewaktuan seperti ditunjukkan di bawah ini:
Operasi
WRITE
;Input : DPTR = Address
; A =
Data
; B =
Data MSB
Operasi WRITE
untuk menulis data ke lokasi memori yang ditunjukkan oleh DPTR di mana
akumulator untuk LSB dan pada operasi 16 bit register B untuk data MSB.
AT93C46_WRITE:
push acc
push b
setb RST
Program untuk
AT93C56/66 dalam format 8 bit adalah sebagai berikut:
mov a,DPH
anl a, #00000001B
orl a, #00001010B
Untuk AT93C46
dengan format 16 bit ketiganya diganti dengan:
mov a, #00000001B
Untuk format 8
bit diganti dengan #00000010B. Sementara untuk AT93C56/66 format 16 bit diganti
dengan #00000101B
acall WriteSerialBit
mov a,DPL
anl a, #00111111B
orl a, #01000000B
acall WriteSerialBit
Perintah di atas
untuk AT93C46 format 16 bit data. Untuk 8 bit perintah AND dihilangkan dan
operasi ORL diganti dengan #10000000B. Pada antarmuka AT93C56/66 kedua operasi
AND dan OR dihilangkan.
pop acc
acall WriteSerialBit
pop acc
acall WriteSerialBit
Perintah pada 2
baris pertama adalah untuk menulis ke memori register B yang tadi disimpan di
stack sebagai data MSB dan 2 baris perintah berikutnya untuk menulis data LSB
dari akumulator. Untuk operasi 8 bit maka 2 baris terakhir dihilangkan.
acall CheckEEPROM
clr RST
ret
Sub rutin
AT93C46_WRITE diakhiri dengan memeriksa status READY/BUSY dengan memanggil sub rutin
CheckEEPROM kemudian dengan perintah CLR untuk membuat pin CS rendah dan
diakhiri dengan RET.
Operasi ERASE
;Input : DPTR = Address
Operasi ERASE
pada dasarnya berisi baris perintah hampir sama dengan operasi WRITE hanya saja
tidak membutuhkan register untuk data dan sudah tentu menggunakan op code yang
berbeda.
AT93C46_ERASE:
setb RST
Program untuk
AT93C56/66 dalam format 8 bit adalah sebagai berikut:
mov a,DPH
anl a, #00000001B
orl a, #00001110B
Untuk AT93C46
dengan format 16 bit ketiganya diganti dengan:
mov a, #00000001B
Untuk format 8
bit diganti dengan #00000011B. Sementara untuk AT93C56/66 format 16 bit diganti
dengan #00000111B
acall WriteSerialBit
mov a,DPL
orl a, #11000000B
acall WriteSerialBit
Perintah di atas
untuk AT93C46 format 16 bit data. Untuk 8 bit data operasi ORL diganti dengan
#10000000B. Pada antarmuka AT93C56/66 operasi OR dihilangkan. Setelah mengirim
alamat, sub rutin dikahiri dengan memanggil sub rutin CheckEEPROM untuk
memeriksa status READY/BUSY.
acall CheckEEPROM
clr RST
ret
Operasi EWDS
Sub rutin AT93C46_EWDS
adalah perintah untuk operasi EWDS yang berisi perintah erase and write disable
yaitu menon-aktifkan seluruh perintah pemrograman baik menulis atau menghapus data
pada serpih memori. Rincian sub rutin ini sebagai berikut:
AT93C46_EWDS:
setb RST
mov a, #00000001B
acall WriteSerialBit
mov a, #00000000B
acall WriteSerialBit
clr RST
ret
Operasi EWDS, pemanggilan sub rutin WriteSerialBit
yang pertama untuk mengirim data akumulator berisi perintah MSB dan sub rutin WriteSerialBit
kedua mengirim LSB-nya. Sub rutin AT93C46_EWDS di atas untuk AT93C46 format 16
bit data. Untuk format 8 bit isi akumulator untuk MSB harus berisi #00000010B.
Untuk AT93C56/66 format 16 bit diganti dengan #00000100B dan untuk 8 bitnya
#00001000B. Untuk LSB-nya tidak ada perubahan.
Operasi EWEN
Operasi EWEN
memiliki urutan yang sama dengan EWDS di atas. Yang membedakan adalah isi dari
akumulator untuk perintah MSB dan LSB-nya dan sudah barang tentu penamaannya
diganti pula menjadi....
AT93C46_EWEN:
Isi akumulator
MSB untuk operasi EWEN sama kecuali untuk AT93C56/66 format 8 bit harus diganti
#00001001B.
Sementara pada
operasi sub rutin WriteSerialBit kedua untuk LSB-nya, pada AT93C46 format 16
bit data isi akumulator diganti dengan #00110000B dan untuk format 8 bit dengan
#01100000B. Sementara untuk AT93C56/66 format 16 bit diganti dengan #11000000B
dan untuk 8 bitnya #10000000B.
Operasi WRAL
;Input : A = Data
; B =
Data MSB
Operasi WRAL
berfungsi mengisi data pada seluruh lokasi memori. Sub rutin AT93C46_ERAL akan
memindahkan data pada akumulator pada seluruh lokasi memori. Dan pada operasi
16 bit juga memindahkan data dari register B ke seluruh lokasi memori.
AT93C46_WRAL:
push acc
push b
setb RST
mov a, #00000001B
acall WriteSerialBit
mov a, #00010000B
acall WriteSerialBit
Operasi WRAL pertama-tama mengamankan register
akumulator dan register B. Untuk operasi dengan format 8 bit maka register B
tidak digunakan dan perintah ini bisa dihilangkan.
Pemanggilan sub rutin WriteSerialBit
pertama untuk mengirim data akumulator berisi perintah MSB dan sub rutin WriteSerialBit
kedua mengirim LSB-nya. Sub rutin AT93C46_ERAL di atas untuk AT93C46 format 16
bit data. Pada format 8 bit-nya isi akumulator untuk MSB harus berisi
#00000010B. Untuk AT93C56/66 format 16 bit MSB diganti dengan #00000100B dan
untuk 8 bitnya #00001000B. Untuk data LSB pada AT93C46 format 8 bit isi
akumulator diganti dengan #00100000B. Sementara pada AT93C56/66 format 16 bit
akumulator untuk LSB diganti dengan #01000000B dan untuk format 8 bit-nya
dengan #10000000B.
pop acc
acall WriteSerialBit
pop acc
acall WriteSerialBit
acall CheckEEPROM
clr RST
ret
Selanjutnya 2 baris
program pertama di atas akan menyalin akumulator yang merupakan isi register B
tersimpan untuk data MSB kemudian mengirimnya dengan sub rutin WriteSerialBit.
Perintah di atas
dilaksanakan 2 kali kemudian menjalankan sub rutin memeriksa status READY/BUSY.
Untuk operasi
dengan format data 8 bit maka 2 baris pertama di atas bisa dihilangkan.
Operasi ERAL
Operasi ERAL berfungsi menghapus seluruh isi dari
lokasi memori.
AT93C46_ERAL:
setb RST
mov a, #00000001B
acall WriteSerialBit
mov a, #00100000B
acall WriteSerialBit
acall CheckEEPROM
clr RST
ret
Operasi ERAL, pemanggilan sub rutin WriteSerialBit
pertama untuk mengirim data akumulator berisi perintah MSB dan sub rutin WriteSerialBit
kedua mengirim LSB-nya. Sub rutin AT93C46_ERAL di atas untuk AT93C46 format 16
bit data. Pada format 8 bit-nya isi akumulator untuk MSB harus berisi
#00000010B. Untuk AT93C56/66 format 16 bit MSB diganti dengan #00000100B dan
untuk 8 bitnya #00001001B. Untuk data LSB pada AT93C46 format 8 bit isi
akumulator diganti dengan #01000000B. Sementara pada AT93C56/66 format 16 bit
akumulator untuk LSB diganti dengan #10000000B dan untuk format 8 bit-nya
dengan #00000000B.
Setelah data
perintah ERAL sudah dikirimkan ke serpih, maka selanjutnya memeriksa status
READY/BUSY dengan CheckEEPROM yang diakhiri dengan CLR RST dan RET.
Demikian penjelasan dari Modul Aplikasi Untuk
EEPROM Jenis AT93C46/56/66. Kesimpulan yang bisa sobat ambil dari modul untuk
EEPROM jenis AT93C46/56/66 ini adalah list program yang dioperasikan untuk satu
jenis saja seperti contoh untuk AT93C46 bisa dipisah menjadi 2 karena
masing-masing untuk operasi dengan format data 8 bit dan satunya lagi untuk 16
bit. Belum lagi untuk AT93C56/66 juga sama berbeda antara format 8 dan 16 bit.
Jadi kalau ingin maka program bisa sobat pisahkan menjadi 4 macam.
Udah ya, makasih udah baca postingan aku. Semoga
bisa bermanfaat, sukur-sukur bisa diterapkan oleh sobat semua. Selamat mencoba
....
Salam....
Tidak ada komentar:
Posting Komentar