Home|Tutorial | ElecProject | KuliahElektro | Download | Link | Rupa2 | Ide| Skema Elektronik

 
 
 

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.

 

 Copyright (C) anekawarna.890m.com 2007
For problems or questions regarding this web contact [admin]
Last updated: Friday October 23, 2009 16:25:29.