Atmel 40 Pin MCS51 Flash PEROM Programmer
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’.
Proses pengisian Flash PEROM, dilakukan dengan urutan sebagai berikut :
- Pada kaki Vcc, kaki RESET dan kaki EA AT89C51/52 diberi catu daya 5 Volt dan PSEN diberi tegangan 0.
- AT89C51/52 disiapkan kerja pada mode pengisian dengan memberi sinyal HHHL pada kaki 7..P2.6.
- Selesai melakukan persiapan ini, tegangan di EA dinaikkan menjadi 12 Volt sebagai catu daya yang diperlukan untuk pengisian PEROM.
- Data yang akan diisikan disiapkan di Port 0 (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.
- 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 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.
- 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.
Proses pengambilan isi Flash PEROM, dilakukan dengan urutan sebagai berikut :
- Pada kaki Vcc, kaki RESET dan kaki EA AT89C51/52 diberi catu daya 5 Volt dan PSEN diberi tegangan 0.
- AT89C51/52 disiapkan kerja pada mode pengisian dengan memberi sinyal HHLL pada kaki 7..P2.6.
- 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 .A13, seluruh isi dari Flash PEROM bisa diambil byte demi byte.
Desain Rangkaian Atmel 40 Pin MCS51 Flash PEROM Programmer
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.
Program Pengendali Atmel 40 Pin MCS51 Flash PEROM Programmer
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.
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 :
- Huruf pertama dalam baris selalu berisi tanda “:”, merupakan kode identitas yang menyatakan baris tersebut berisikan kode-kode yang disimpan dalam format HEX dari Intel.
- 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).
- 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.
- 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.
- 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.
- 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 Pada Atmel 40 Pin MCS51 Flash PEROM Programmer
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
Semoga bermanfaat, Kami harap dengan uraian tentang Atmel 40 Pin MCS51 Flash PEROM Programmer diatas dapat menambah pengetahuan kita dibidang mikrokontroler.