Atmel 40 pin MCS51 Flash PEROM Programmer
Oleh Budhy Sutanto
Atmel 40 pin MCS51
Flash PEROM Programmer tidak sederhana seperti AT89C2051 Flash PEROM Programmer,
mengingat kaki-kaki IC MCS51 40 pin yang harus diatur jauh lebih banyak
jumlahnya. Untuk keperluan itu dipakai satu chip AT89C51, alat ini dihubungkan
ke Serial Port PC lewat bantuan IC MAX23.
Selain memperlihatkan cara mengisi Flash PEROM dalam MCS51 40 pin buatan Atmel,
program yang dibahas merupakan contoh komunikasi data seri lewat RS232 yang
sangat spesifik.
Selain memproduksi mikrokontroler MCS51 versi
mini dengan 20 kaki (AT89C1051, AT89C2051 dan AT89C4051), Atmel memproduksi juga
AT89C51, AT89C52, AT89S8252, AT89S53 dan AT89C55, yakni mikrokontroler MCS51
versi 40 kaki. Semua mikrokontroler ini dilengkapi dengan Flash PEROM
(Programmable Eraseable Read Only Memory) sebagai media memori-program, dan
susunan kaki IC-IC itu semuanya sama.
Perbedaan ke-lima IC 40
kaki diatas terutama terletak pada kapasitas memori-program, AT89C51
mempunyai 4 KiloByte Flash PEROM, AT89C52 dan AT89S6252 punya 8 KiloByte,
AT89S53 punya 12 KiloByte, sedangkan AT89C55 punya 20 KiloByte. Meskipun
demikian cara mengisi Flash PEROM semua IC itu sama. Untuk memudahkan
pembicaraan, IC-IC tersebut di atas disebut sebagai AT89C51/52.
Khusus untuk AT89S8252,
selain punya Flash PEROM IC ini dilengkapi pula dengan 2 KiloByte EEPROM
(Electrical Eraseable Programable Read Only Memory) sebagai memori-data.
Atmel MCS51 40 kaki sebagai PEROM
IC MCS51 40 kaki buatan
Atmel bisa dianggap sebagai IC Flash PEROM jika
RST
(kaki nomor 9) diberi tegangan 5 Volt, dan
PSEN
(kaki nomor 29) dihubungkan ke Ground. Dalam keadaan demikian, Port 0 (kaki
nomor 39 sampai 32) berfungsi sebagai saluran-data (data bus)
D0..D7,
Port 1 (kaki nomor 1 sampai 8) berfungsi sebagai saluran-alamat (address
bus) A0..A7,
sebagian Port 2 (P2.0..P2.5,
kaki nomor 21 sampai 26) berfungsi sebagai saluran-alamat (address bus)
A8..A13.
Sebagai Flash PEROM ada 5 hal yang bisa
dilakukan, yakni
· menghapus isi Flash PEROM
semuanya sekali gus
· mengisi Flash PEROM byte per
byte
· mengambil isi Flash PEROM byte
per byte
· Selain itu untuk mencegah
pembajakan, Flash PEROM bisa di-‘kunci’,
sehingga program yang disimpan di
dalamnya tidak bisa diambil keluar dari chip.
Di sediakan 3 macam pengamanan
yang berbeda tingkat.
· Microcontroller produksi Atmel
masing-masing punya kode produksi, ini memudahkan program
di komputer mengenali
chip microcontroller jenis apa yang dipasangkan pada Flash PEROM Programmer.
Hal-hal tersebut di atas
diatur lewat kombinasi sinyal yang diberikan pada
P3.6
dan P3.7
(kaki nomor 16 dan 17) serta
P2.6
dan P2.7
(kaki nomor 27 dan 28), seperti terlihat pada Tabel 1. Selain sinyal-sinyal itu,
perlu pula diatur tegangan yang diumpankan ke
Vpp
(kaki nomor 31), untuk keperluan pengisian informasi ke dalam Flash PEROM
diperlukan tegangan 12 Volt yang disertai dengan pulsa pada
PROG
(kaki nomor 30), sedangkan untuk pembacaan cukup pakai tegangan
Vpp
5 Volt.
Pengisian data ke PEROM
Dalam bagan rangkaian
pada Gambar 1,
RST diberi tegangan 5 Volt
dan PSEN
dihubungkan ke Ground, hal ini membuat AT89C51/52 menjadi sebuah IC Flash PEROM.
Agar Flash PEROM ini bisa diisi, pengatur mode
P2.6;
P2.7;
P3.6
dan P3.7
diberi kombinasi sinyal ‘0’,
‘1’,’1’
dan ‘1’.
Gambar 1
Bagan mengisi PEROM
Proses pengisian Flash
PEROM, dilakukan dengan urutan sebagai berikut :
1.
Pada kaki
Vcc,
kaki RESET
dan kaki EA
AT89C51/52 diberi catu daya 5 Volt dan
PSEN
diberi tegangan 0.
2.
AT89C51/52 disiapkan kerja pada
mode pengisian dengan memberi sinyal HHHL pada kaki
P3.7..P2.6.
3.
Selesai melakukan persiapan ini,
tegangan di
EA dinaikkan menjadi 12 Volt
sebagai catu daya yang diperlukan untuk pengisian PEROM.
4.
Data yang akan diisikan
disiapkan di Port 0 (P0.0..P0.7)
yang berfungsi sebagai jalur-data, nomor PEROM yang akan diisi dipilih lewat
Port 1 (P1.0..P1.7)
dan sebagaian Port 2 (P2.0..P2.5)
yang berfungsi sebagai jalur-alamat.
5.
Pulsa nol
PROG
pada ALE
(kaki nomor 30) dipakai
sebagai perintah agar data pada Port 0 diisikan ke dalam PEROM, proses pengisian
ini memerlukan waktu relatip lama lebih kurang selama 1,5 mili-detik, selama
proses pengisian ini kaki
P3.4
menjadi ‘0’
menandakan AT89C51/52 sedang sibuk (BUSY).
Saat kaki
P3.4 menjadi ‘1’
kembali berarti selesai sudah proses pengisian data 1 byte ke dalam PEROM, dan
AT89C51/52 siap menerima data lagi.
6.
Urutan 4 dan 5 di atas diulang
untuk mengisikan data 1 byte demi 1 byte, sampai semua PEROM dalam AT89C51/52
selesai diisi.
Pembacaan data dari PEROM
Gambar 2 merupakan
susunan rangkaian untuk membaca isi Flash PEROM AT89C51/52, dalam susunan ini
Port 0 (P0.0..P0.7)
dipakai sebagai saluran data dari PEROM yang akan diambil,
P3.7,P3.6,
P2.7
dan P2.6
dipakai untuk memilih mode kerja, kaki
RST
dan EA
dipakai untuk catu daya tambahan (VPP)
sebesar 5 Volt.
Gambar 2
Bagan membaca Isi PEROM
Proses pengambilan isi
Flash PEROM, dilakukan dengan urutan sebagai berikut :
1.
Pada kaki
Vcc,
kaki RESET
dan kaki EA
AT89C51/52 diberi catu daya 5 Volt dan
PSEN
diberi tegangan 0.
2.
AT89C51/52 disiapkan kerja pada
mode pengisian dengan memberi sinyal HHLL pada kaki
P3.7..P2.6.
3.
Dengan konfigurasi seperti ini,
data yang ada di Port 0 adalah data dari Flash PEROM di dalam chip yang
di-‘pilih’ lewat jalur alamat. Sehingga hanya mengatur kombinasi jalur alamat
A0..A13,
seluruh isi dari Flash PEROM bisa diambil byte demi byte.
Rancangan Rangkaian
Rangkaian dirancang bisa
dipakai untuk mengisi Flash PEROM pada 5 jenis MCS51 40 pin produksi Atmel, dari
5 jenis mikrokontroler itu AT89C55 mempunyai kapasitas Flash PEROM yang paling
besar, 20 KiloByte. Sehingga harus disediakan jalur alamat sebanyak 15 (A0..A14).
Di samping itu 4 jalur
untuk mengatur mode kerja Flash PEROM di dalam chip AT89C51/52 (P3.7,
P3.6,
P2.7
dan P2.6),
1 jalur untuk pulsa pemrograman (sinyal
PROG
di ALE),
1 jalur sumber tegangan pemrograman (Vpp
di EA)
ditambah dengan 8 jalur data, sehingga keseluruhan ada 29 jalur yang harus
diatur. Jumlah ini terlalu banyak kalau diatur dari Printer Port PC, seperti
halnya rangkaian AT89C2051 Flash PEROM Programmer.
Gambar 3 merupakan skema
rangkaian AT89C51/52 Flash PEROM Programmer yang dibuat, IC
U4
merupakan socket untuk menempatkan IC AT89C51/52 yang akan diisi, 29 jalur yang
dibicarakan di atas dikendalikan lewat satu chip AT89C51 (U1).
Untuk memudahkan pembuatan PCB, diusahakan kaki-kaki IC
U4
dihubungkan langsung ke kaki-kaki IC
U1
dengan nomor yang sama, sehingga yang terjadi adalah mem-parallel-kan
U1
dan U4.
Meskipun demikian ada
beberapa kaki yang tidak bisa dihubungkan langsung, misalnya sinyal
PROG
dibangkitkan di
P3.3
(kaki nomor 13
U1) yang dihubungkan ke
ALE
(kaki nomor 30
U4). Kaki
XTAL2
(kaki nomor 18
U1) yang merupakan output osilator
kristal dihubungkan ke
XTAL1
(kaki nomor 19
U4) yang merupakan input osilator.
Rangkaian reset yang
dibentuk dengan
C1
dan R2,
serta rangkaian osilator yang dibentuk dengan
C2,
C4
dan kristal
Y1, merupakan rangkaian baku bagi
MCS51, persis sama dengan rangkaian yang biasa dijumpai di AT89C2051.
Program yang diisikan ke
Flash PEROM diumpan dari PC, hubungan alat ini dengan PC dilakukan secara
komunikasi data seri. Level tegangan pada AT89C51 memenuhi standard TTL yang 5
Volt, sedangkan Serial Port PC memakai standard RS232 yang bisa mengayun antara
–12 Volt sampai +12 Volt, perbedaan tegangan antara 2 sistem ini diselaraskan
dengan IC MAX232 (U2),
C3,
C6,
C7
dan C8
merupakan kapasitor yang diperlukan MAX232.
Tegangan
VPP
merupakan tegangan tambahan yang diperlukan untuk mengisi Flash PEROM, tegangan
ini diumpankan ke
EA
(kaki 31) U4.
Tegangan Vpp
mempunyai 2 nilai, pada mode-mode kerja mengisi Flash PEROM, diperlukan tegangan
Vpp
sebesar 12 Volt, sedangkan pada mode-mode kerja pengambilan isi Flash PEROM
nilai Vpp
hanya sebesar 5 Volt.
Rangkaian pembangkit
tegangan Vpp
dibentuk dengan
U5
LM317, yang dilengkapi dengan resistor
R3,
R4,R5
dan R6,
kapasitor C10
serta transistor NPN
Q1
(Q1
bisa pakai transistor NPN kecil type apa saja).
P3.5
(kaki 15
U1) dipakai untuk membangkitkan
sinyal LowVPP,
jika sinyal
LowVPP =’1’
tegangan output LM317 menjadi 5 Volt, sebaliknya jika sinyal
LowVPP
=’0’
tegangan output LM317 menjadi 12 Volt.
Nilai tahanan
R3
R4
dan R5
termasuk ‘aneh’, nilai ini dipilih untuk menyesuaikan agar tegangan output
LM317
tepat 5 Volt atau 12 Volt. Meskipun demikian nilai
Vpp
boleh berkisar antara 11.5 sampai 12.5 Volt, nilai tahanan-tahanan tersebut
boleh sedikit berbeda asalkan tegangan
Vpp
yang dihasilkan masih memenuhi kriteria di atas.
Uji coba rangkaian bisa
dilakukan dengan cara memberi tegangan +5 Volt pada ujung resistor
R6
yang terhubung ke kaki 15
U1,
saat ini tegangan
Vpp
(kaki 31 U4)
berkisar 5 Volt, kemudian tegangan pada
R6
dilepas dan
Vpp harus bernilai 12 Volt.
Gambar 3
Skema Rangkaian AT89C51/52 PEROM Programmer
Program Pengendali
Program untuk alat ini
terdiri atas 2 bagian, bagian pertama adalah program yang terletak di dalam
Flash PEROM AT89C51 (U1),
yang berfungsi untuk mengatur pengisian Flash PEROM dan mengatur komunikasi data
seri antara PC dengan alat ini. Bagian kedua adalah program yang dijalankan di
PC yang ditulis dengan Turbo Pascal, berfungsi untuk mengendalikan alat ini,
terutama mengirimkan isi file yang akan di isikan ke '''Flash PEROM.
Alat ini bisa dipakai
mengisi Flash PEROM di dalam berbagai jenis MCS51 40 pin buatan Atmel, kapasitas
Flash PEROM yang terbesar terdapat dalam AT89C55, sebesar 20 KiloByte.
Kode-kode yang akan
diisikan ke Flash PEROM, satu blok demi satu blok dikirim PC lewat saluran
komunikasi seri RS232. Satu blok data tersebut di-isi-kan ke dalam Flash PEROM,
kemudian di-baca kembali untuk menguji apakah pengisian berhasil baik. Setelah
itu alat ini menghubungi PC untuk melaporkan hasil pengisian dan PC mengirimkan
lagi data untuk diisikan lebih lanjut.
Kapasitas satu blok data
yang dikirim PC ditentukan tidak lebih dari 32 byte, dengan demikian data
tersebut cukup ditampung dalam memori-data internal AT89C51 (U1),
sehingga alat ini tidak perlu dilangkapi memori-data eksternal untuk menampung
data yang akan diisikan ke Flash PEROM.
Komunikasi data seri
yang dipakai mengggunakan mode teks, artinya semua insformasi yang
dikomunikasikan memakai kode ASCII, termasuk perintah dari PC ke alat ini;
jawaban alat ini ke PC, bahkan kode-kode yang akan diisikan ke dalam Flash PEROM
juga dikirimkan dalam kode ASCII.
Format HEX dari Intel
Program-program
assembler, termasuk ALDS, menyimpan kode mesin hasil terjemahannya ke dalam file
teks dengan format khusus, format yang paling banyak dipakai assembler-assembler
MCS51 adalah ‘format HEX dari Intel’.
File kode mesin dengan
format HEX, merupakan baris-baris tulisan seperti terlihat dalam Gambar 4, file
semacam itu bisa dibaca dengan text editor biasa, misalnya
EDIT.COM
dalam DOS, atau
NOTEPAD
dalam Windows.
Gambar 4 Anatomi baris-baris dalam file
format HEX
Setiap baris mengandung
informasi tentang berapa banyak data dalam baris tersebut, alamat awal tempat
penyimpanan data dalam baris tersebut, jenis baris dan sarana untuk memastikan
kebenaran data yang dinamakan sebagai check sum. Dalam baris tersebut,
setiap huruf (kecuali huruf pertama) mewakili satu bilangan heksa-desimal,
dengan demikian setiap 2 huruf membentuk data satu byte yang terdiri dari 2
bilangan heksadesimal.
Rincian dari format
tersebut sebagai berikut :
1.
Huruf pertama dalam baris
selalu berisi tanda “:”,
merupakan kode identitas yang menyatakan baris tersebut berisikan kode-kode yang
disimpan dalam format HEX dari Intel.
2.
Huruf ke-2 dan ke-3 dipakai
untuk menyatakan banyaknya data dalam baris yang dinyatakan dengan bilangan
heksa-desimal, sehingga banyaknya data dalam 1 baris maksimal adalah 255 (atau
heksa-demimal FF).
3.
Huruf ke 4 sampai 7, merupakan
4 buah bilangan heksa-desimal yang dipakai untuk menyatakan alamat awal tempat
penyimpanan kode-kode dalam baris teks tersebut.
4.
Huruf 8 dan 9 dipakai untuk
menyatakan jenis teks data. Nilai 00 dipakai untuk menyatakan baris tersebut
berisikan data biasa, 01 menyatakan baris tersebut merupakan baris terakhir.
5.
Huruf ke 10 dan seterusnya
adalah data. Setiap 2 huruf mewakili data 1 byte, sehingga jumlah huruf pada
bagian ini adalah dua kali banyaknya data yang disebut pada butir 2 di atas.
6.
2 huruf terakhir dalam baris
merupakan check sum. Byte-byte yang disebut dalam butir 2 sampai 5 di
atas dijumlahkan, hasil penjumlahan di-balik (inverted) sebagai bilangan
check sum. (Hasil penjumlahan bisa menghasilkan nilai yang lebih besar dari
2 bilangan heksadesimal, namun hanya 2 bilangan heksa-desimal yang bobotnya
terkecil yang dipakai).
Pengiriman teks Intel HEX
Pengiriman kode-kode
yang akan disimpan ke dalam Flash PEROM, dengan mudah dilakukan dengan program
Pascal seperti terlihat dalam Potongan Program 1.
Pada baris 1,
NamaFile
adalah parameter yang menyatakan file mana yang akan dikirimkan, file tersebut
di-‘buka’ di baris 6, isi file tersebut diambil sebagai teks baris demi baris
pada baris 9 Potongan Program 1, kemudian satu baris teks tersebut dikirim ke
Flash PEROM Programmer secara seri lewat saluran RS232 dengan perintah pada
baris 10.
Flash PEROM Programmer
akan melaporkan hasil kerjanya dengan mengirim huruf ‘G’
ke PC kalau data yang baru diterima semuanya berhasil disimpan ke dalam Flash
PEROM, atau mengirimkan huruf ‘E’
kalau terjadi kesalahan pengiriman data, atau mengirim huruf ‘F’ kalau alamat
data yang dikirim di luar batasan Flash PEROM dalam chip yang diisi.
Laporan dari Flash PEROM
Programmer diterima oleh program Pascal ini dengan instruksi
C:=SerialIn
pada baris 11. Sebagai ilustrasi, kalau ternyata huruf jawaban ini bukan ‘G’
maka pada baris 13 dikirimkan pesan kesalahan.
Proses pengiriman ini
diulang terus sampai semua baris dalam file habis dikirim, pengulangan ini
dilakukan dengan kendali loop ‘while’
yang dibentuk dengan baris instruksi 7, 8 dan 16.
Potongan
Program 1 – Kirim teks Intel HEX
01: PROCEDURE KirimIntelHEX(NamaFile:STRING);
01: var T : TEXT;
02: L : STRING;
03: C : CHAR;
04: BEGIN
05: Assign(T,Nama); reset(T);
06: while not EOF(T) do
07: BEGIN
08: readln(T,L);
09: SerialOut(L);
10: C := SerialIn;
11: case C of
12: ‘E’ : writeln(‘Salah pengiriman’);
13: 'F' : writeln('Salah alamat');
14: end;
15: END;
16: Close(T);
17: END;
Sebagai program
komunikasi, Potongan Program 1 di atas mempunyai pasangan, yakni Potongan
Program 2 yang ditulis dengan bahasa assembly MCS51 yang berfungsi untuk
menerima kiriman data.
Baris 1 sampai 5
Potongan Program 2 dipakai untuk mendeklarasikan variabel yang dipakai, (instruksi
.data
di baris 1 artinya baris-baris berikut di bawah baris 1 menempati memori-data).
Variabel yang dipakai adalah
Buffer
kapasitasnya
$20 (tanda $ artinya heksa-desimal,
$20
= 32)
byte, dipakai untuk menampung data dari PC. Banyaknya data yang disimpan dalam
Buffer
bisa bervariasi, variable
JumlahByte
dipakai untuk menyatakan berapa byte yang saat itu disimpan di dalam
Buffer.
Variable
Alamat dipakai untuk mencatat data
di dalam
Buffer nantinya akan diisikan ke
Flash PEROM yang mana.
Baris 7,
.CODE
menyatakan baris-baris berikutnya merupakan program yang harus disimpan di
memori-program. Huruf pertama standard format Intel HEX adalah “:”,
hal ini diperiksa pada baris 9 dan 10, jika ternyata bukan “:’
maka dianggap sebagai kesalahan.
Berikutnya adalah
menerima kiriman 1 baris teks, sesuai dengan pembahasan format HEX dari Intel di
atas, pertama-tama diterima 2 huruf (baris 14) sebagai banyaknya data yang akan
diterima (baris 15), nilai ini disimpan di
R3
sebagai counter untuk penerimaan data di baris 36, disimpan juga ke variabel
JumlahByte
untuk keperluan yang sudah dibahas di atas (baris 16). Jika
JumlahByte=0
maka baris ini diabaikan (baris 17), jika
JumlahByte>20
dianggap sebagai kesalahan (baris 18,19).
Baris 21 sampai 24
menerima alamat yang merupakan bilangan biner sepanjang dua byte dan disimpan di
variabel
Alamat. Baris 26 dan 27 memeriksa
jenis baris teks yang diterima, baris teks yang jenisnya tidak sama dengan 0
tidak akan diterima.
Proses penerimaan data
dilakukan di baris 31 sampai 36. Data akan ditampung di variabel
Buffer
yang kapasitasnya 32 byte, untuk keperluan itu di baris 31 alamat dari varibael
Buffer
dicatat di R0.
Baris 33 menerima data dari PC byte demi byte, data ini disimpan ke varibel
Buffer
pada baris 34, di mana
R0
dipakai sebagai register indirect untuk menyimpan isi Akumulator
A.
Nilai R0
dinaikkan 1, agar penyimpanan data berikutnya tidak menindih data yang baru saja
disimpan. Proses ini ulang sampai nilai
R3=0
(baris 36). (Seperti diketahui pada baris 15
R3
diisi dengan banyaknya data yang akan diterima).
Setiap kali menerima
data dari sub-rutin
ReadByteSum,
data yang baru saja dibaca diakumulasikan ke
R6,
untuk keperluan ini
R6
di-nol-kan di baris 11. Dengan mikian nilai yang tersimpan dalam
R6
adalah Check Sum hasil perhitungan dari data yang diterima. Jika data
yang diterima tidak ada kesalahan, nilai
R6
akan sama dengan CheckSum yang dikirim PC (baris 38) hanya saja
berlawanan tanda, kalau hasil penjumlahan dua nilai ini (baris 39) tidak nol
berarti telah terjadi kesalahan pengiriman data (baris 40).
Potongan
Program 2 –menerima kiriman teks Intel HEX
01: .DATA
02: ORG $30
03: Buffer DS $20
04: JumlahByte DS 1
05: Alamat DS 2
06: ;
07: .CODE
08: DownLoad:
09: ACALL SerialIn
10: CJNE A,#':',Kesalahan
11: MOV R6,#0
12: ; ***
13: MOV R5,#'G' ; 'G'=Good
14: ACALL ReadByteSum ; Ambil banyaknya
byte
15: MOV R3,A ; R3 sebagai counter
16: MOV JumlahByte,A ; untuk penulisan
17: JZ ReadEOL ; Banyaknya=0?
Selesai
18: CJNE A,#$20,$+3 ; >$20?
19: JNC Kesalahan ; Ya, salah
20: ; ***
21: ACALL ReadByteSum ; Baca Alamat
baris ini
22: MOV Alamat+1,A ; A8..A15
23: ACALL ReadByteSum ; Baca lagi
24: MOV Alamat,A ; A0..A7
25: ; ***
26: ACALL ReadByteSum ; Baca Jenis
rekaman
27: JZ ReadEOL ; Kalau Jenis<>0
abaikan
28: ;
29: ; *** Baca Blok Data
30: ;
31: MOV R0,#Buffer ; Data disimpan ke
Buffer
32: LoopBaca:
33: ACALL ReadByteSum ; Ambil 1 byte data
34: MOV @R0,A ; Simpan ke RAM
35: INC R0 ; Buffer
berikutnya
36: DJNZ R3,LoopBaca ; Ulangi
sampai selesai
37: ; ***
38: ACALL ReadByte ; Ambil checksum
39: ADD A,R6 ; Jumlahkan
dengan
40: JNZ Kesalahan ; checksum
hitungan sendiri
41: TungguENTER:
42: ACALL SerialIn
43: CJNE A,#$0D,TungguENTER
44: RET
45: ;
46: Kesalahan:
47: MOV R5,#'E'
48: ReadEOL:
49: ACALL TungguENTER
50: MOV A,R5
51: AJMP SerialOut
Pengisian Flash PEROM
Bagian pengisian Flash
PEROM ini sangat tergantung pada rangkaian yang dibuat, proses tersebut
diselesaikan dengan Potongan Program 3. Saat memakai Potongan Program 3,
R6
dan R7
dipakai untuk menampung alamat Flash PEROM yang akan diisi ( R6 dipakai untuk
A0..A7,
R7
untuk A8..A14),
sehingga sebelum memakai sub-rutin WriteByte (baris 5) nilai variabel Alamat
yang dibicarakan di atas harus diisikan dulu ke
R6
dan R7.
Susunan kaki-kaki IC
dalam rangkaian alat ini sebagai berikut : Port 0 (kaki nomor 39 sampai 32)
berfungsi sebagai saluran-data (data bus)
D0..D7,
Port 1 (kaki nomor 1 sampai 8) berfungsi sebagai saluran-alamat (address bus)
A0..A7,
sebagian Port 2 (P2.0..P2.5,
kaki nomor 21 sampai 26) berfungsi sebagai saluran-alamat (address bus)
A8..A13.
Sesuai dengan susunan
kaki di atas, data yang akan diisikan ke Flash PEROM diumpankan ke P0 (baris 6).
Baris 8 sampai 16 berfungsi untuk menempatkan alamat Flash PEROM yang
dikehendaki (yang tersimpan di
R6
dan R7)
didistribusikan ke kaki-kaki U1, sesuai dengan susunan kaki di atas.
Baris 1 sampai 3
mendeklarasikan nama sinyal pada masing-masing kaki sesuai dengan yang ada di
rangkaian. Sinyal
PROG
(baris 1) merupakan pulsa ‘0’
dengan lebar minimum 2 mikro-detik, yang dipakai untuk memulai proses pengisian
Flash PEROM. Setelah
PROG
kembali menjadi ‘1’
sinyal READY
(baris 2) akan menjadi ‘0’
menandakan saat itu sedang terjadi proses pengisian Flash PEROM, setelah proses
pengisian selesai
READY
akan kembali menjadi ‘1’.
Sinyal
PROG
yang berupa pula ‘0’
dibangkitkan di baris 21 sampai 23, lebar pulsa yang terjadi sekitar 2
mikro-detik, memenuhi pesyaratan yang dikehendaki Atmel. Baris 25 menunggu
sampai proses pengisian Flash PEROM selesai, dengan cara memeriksa sinyal
READY,
selama sinyal
REAFY
masih =’0’
mikrokontroler akan tertahan di baris 25.
Potongan
Progam 3 – Pengisian Flash PEROM
01: PROG bit P3.3
02: READY bit P3.4
03: A14 bit P3.2
04:
05: WriteByte:
06: MOV P0,A ; Data ke P0
07: ;
08: MOV A,R6 ; A0..A7 ke P1
09: MOV P1,A
10: ;
11: MOV A,R7 ; A8..A14 ke Acc
12: MOV C,A.6 ; A14 ke C
13: MOV A14,C ; ditempatkan
14: ;
15: MOV C,P2.6 ; P2.6 disimpan ke A.6
16: MOV A.6,C
17: MOV C,P2.7 ; P2.7 disimpan ke A.7
18: MOV A.7,C
19: MOV P2,A ; kembalikan ke P2
20: ;
21: CLR PROG ; Pulsa '0' selama
22: NOP ; 2 mikro-detik
23: SETB PROG ; READY ='0'
24: ;
25: JNB READY,$ ; READY sudah ='1'?
26: RET
Penutup
Ada sebuah masalah,
program di atas adalah program yang dipakai untuk mengisi Flash PEROM dari
AT89C51 dan program itu harus diisikan ke dalam AT89C51 agar bisa dipakai,
pengisian program tersebut ke dalam AT89C51 memerlukan AT89C51 Flash PEROM
Programmer.
Dengan demikian bagi
pembaca yang belum punya Flash PEROM Programmer tidak mungkin membuat alat ini.
Untuk mengatasi ‘lingkaran setan’ bagi pembaca yang bermaksud membuat alat ini,
harap menghubungi Himpunan Mahasiswa Elektro Teknik, Sekolah Tinggi Teknik
Surabaya lewat email
mailto:alds@stts.edu.
Red: Bagi daerah Pwt dan sekitarnya
pengisian program gratis ke IC AT89C51 hub mail
Admin.