Modul 13. Mengisi ROM internal 8051 MK : Mikroprosesor Jurusan Teknik Elektro Fakultas Teknik Industri Mikroprosesor Temu 13: Mengisi ROM Internal 8051 Oleh: Dipl.Ing Asril Jarin, MSc PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN MIKROPROSESOR 1 Modul 13. Mengisi ROM internal 8051 MK : Mikroprosesor Mengisi ROM Internal 8051 1. Definisi ROM ROM adalah Memori yang hanya bisa dibaca saat pengoperasiannya (Read Only Memory). Nilai-nilai yang tersimpan didalamnya berada tetap (tidak hilang) walaupun sistem dimatikan. Pada sistem PC di ROM biasanya disimpan BIOS (Basic Input Output System). Jenis-jenis ROM berdasarkan: Masked ROM : Informasi disimpan secara permanen pada saat produksi. Secara teknik menggunakan mask optik. Programable Read Only Memory : ROM yang memiliki komposisi logik memori secara array sehingga dapat diprogram. Program yang tersimpan tidak dapat dirubah lagi. Erasable Programable Read Only Memory : ROM yang dapat diprogram dan dapat dihapus kembali. Penghapusan dilakukan dengan Cahaya UV. Proses penghapusan cukup lama yakni: 10 sd 30 menit. EEPROM yang tidak dilindungi dari Matahari dapat merusak informasi data didalamnya. Pengembangan EPROM adalah EEPROM dan Flash EPROM. EEPROM : penghapusan dilakukan dengan menggunakan efek medan listrik. Perbedaannya dengan Flash EPROM, penghapusan pada Flash EPROM berjalan lebih cepat secara blok per blok, bukan byter per byte. AT89C51 memiliki ROM internal jenis Flash EEPROM dengan kapasitas 4KByte. PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN MIKROPROSESOR 2 Modul 13. Mengisi ROM internal 8051 2. MK : Mikroprosesor Mode Flash Programming ROM Internal 8051 Seperti kita telah ketahui, operasi atau kerja yang dilakukan sebuah prosesor sesuai dengan program yang dieksekusinya, biasanya program ini ditulis pada ROM. Prosesor Intel 8051 dilengkapi dengan ROM internal. Secara umum, pengisian program ke dalam ROM dilakukan dengan memasukkan informasi byte demi byte, setiap byte informasi diletakkan di alamat tertentu pada ROM internal. ROM internal Intel 8051 terdiri dari 4096 lokasi yang masing-masing berukuran 8-bit. Untuk memasukkan informasi biner, baik berupa instruksi maupun data permanen, harus ditentukan apa data yang akan diletakkan dan di mana diletakkan. 1. Data yang akan ditulis atau diletakkan dalam ROM internal ini harus berukuran 8-bit, 2. sedangkan Address atau alamatnya berukuran 12-bit. 3. Selain informasi Data dan Address tersebut, harus ditetapkan juga sinyal kendali yang tepat seperti tertera pada tabel berikut ini. Tabel 13.1. Mode Flash Programming. Seperti tampak pada tabel 13.1, untuk menulis kode biner ke dalam Rom internal, selain 12-bit address dan 8-bit data, diperlukan juga kode kendali tertentu. Terkait dengan gambar 13.1 dan 13.2, prosedur penulisan kode biner ke dalam ROM internal adalah sbb : PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN MIKROPROSESOR 3 Modul 13. Mengisi ROM internal 8051 MK : Mikroprosesor 1. Letakkan 12-bit address pada jalur alamat atau address line, yaitu pada 8-bit Port 1 dan 4bit Port 2 seperti tampak pada gambar 13.1. bagian kiri atas. 2. Letakkan 8-bit data pada jalur data, yaitu pada 8-bit Port 0, seperti tampak pada gambar 13.1, sisi kanan IC sebelah kiri. 3. Aktifkan 4-bit kombinasi sinyal untuk penulisan kode ke ROM internal, yaitu pin P2.6, P2.7, P3.6 dan P3.7 berurutan diberi kondisi LOW, HIGH, HIGH, HIGH, seperti tampak pada tabel 13.1. 4. Beri tegangan 5V atau 12V pada pin EA/Vpp, seperti tampak pada gambar 13.1. 5. Beri ‘pulsa LOW’ (bukan kondisi low) pada pin ALE/PROG yang durasinya sekitar 1,5 ms. Selain menunggu selama 1,5 ms, progres proses penulisan dapat dipantau melalui pin P3.4, jika pin ini dalam keadaan LOW berarti BUSY, proses penulisan masih berlangsung. Sedangkan jika pin ini dalam keadaan HIGH berarti READY, proses penulisan 1-byte tsb telah selesai. Urutan langkah penulisan ini diringkas hingga tampak seperti gambar 13.2. Untuk membaca isi ROM internal, urutan langkah yang harus dilakukan adalah sbb : 1. Letakkan 12-bit address pada jalur alamat atau address line, yaitu pada 8-bit Port 1 dan 4bit Port 2 seperti tampak pada gambar 13.1. bagian kiri atas. 2. Aktifkan 4-bit kombinasi sinyal untuk pembacaan kode dari ROM internal, yaitu pin P2.6, P2.7, P3.6 dan P3.7 berurutan diberi kondisi LOW, LOW, HIGH, HIGH, seperti tampak pada tabel 13.1. 3. Beri kondisi HIGH pada pin EA/Vpp dan pin ALE/PROG, seperti tampak pada gambar 13.1. 4. Pantau pin P3.4, jika pin ini HIGH atau READY, berarti 8-bit data pada jalur data siap diambil, yaitu pada 8-bit Port 0, seperti tampak pada gambar 13.1, sisi kanan IC sebelah kanan. Karena menggunakan Port 0, sebaiknya 8-pin ini dihubungkan dengan resitor pull up sebesar 10k untuk setiap bit. Urutan langkah inipun dapat dilihat dalam bentuk diagram waktu seperti tampak pada gambar 13.2. Untuk menghapus semua isi ROM internal sehingga seluruhnya berisi data FFH, maka prosedurnya dalah sbb : PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN MIKROPROSESOR 4 Modul 13. Mengisi ROM internal 8051 MK : Mikroprosesor 1. Aktifkan 4-bit kombinasi sinyal untuk pembacaan kode dari ROM internal, yaitu pin P2.6, P2.7, P3.6 dan P3.7 berurutan diberi kondisi HIGH, LOW, LOW, LOW, seperti tampak pada tabel 13.1. 2. Beri tegangan 5V atau 12V pada pin EA/Vpp, seperti tampak pada tabel 13.1. 3. Beri pulsa LOW pada pin ALE/PROG dengan durasi 10 ms, seperti tampak pada tabel 13.1. Untuk mengunci isi ROM internal, disediakan 3 level penguncian seperti tampak pada tabel 13.2 berikut ini. Penguncian mode kedua menyebabkan isi ROM internal tidak dapat diambil dengan cara eksekusi instruksi MOVC yang dilakukan dari ROM eksternal. Selain itu isi ROM tidak dapat dihapus atau diubah. Penguncian mode ketiga menyebabkan isi ROM internal juga tidak dapat dibaca dengan cara verifikasi. Sedangkan penguncian mode keempat sama dengan penguncian mode ketiga dengan tambahan prosesor hanya dapat mengeksekusi instruksi internal saja. Cara melakukan penguncian dapat dilihat pada tabel 13.1. Untuk mengetahui identitas IC, dapat dilakukan pembacaan signature byte yang terletak pada alamat 30H, 31H dan 32H dengan 4-bit kendali seperti tampak pada tabel 13.1. Tabel 13.2. Mode Proteksi Lock-Bit. PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN MIKROPROSESOR 5 Modul 13. Mengisi ROM internal 8051 MK : Mikroprosesor Gambar 13.1. Rangkaian Programming (kiri) dan Verifying (kanan) Gambar 13.2 Flash Programming and Verification Waveforms Untuk melakukan pengisian ROM internal diperlukan alat yang disebut downloader. Biasanya downloader dihubungkan dengan sebuah PC agar pengisian ROM internal dapat dilakukan dari sebuah PC. Terkait dengan PC, paling tidak ada 2 macam downloader, yaitu downloader yang terhubung melalui serial port DB9 dan downloader yang terhubung melalui paralel port DB25. Untuk mengoperasikan downloader diperlukan program yang running pada PC. Selain harus memiliki fasilitas akses paralel atau serial port, program pada PC ini juga harus dilengkapi dengan sarana membaca file dengan format Intel HEX serta sarana user interface seperti menu, under DOS maupun under Windows. Downloader yang menggunakan serial port harus dilengkapi dengan prosesor pengendali yang disebut IC master. IC master ini berperan untuk melakukan komunikasi serial dengan PC dan melakukan prosedur penulisan ke ROM internal pada IC slave. Tentu saja IC master ini harus sudah diisi program sebelum digunakan dalam downloader tsb. Downloader yang menggunakan paralel port memungkinkan semua kendali dilakukan oleh PC. Meskipun harus menggunakan pin konektor yang lebih banyak, yaitu 25-pin, downloader ini tidak perlu dilengkapi dengan IC master, karena semua prosedur pengisian ROM internal IC slave dilakukan oleh PC. Contoh downloader paralel port. PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN MIKROPROSESOR 6 Modul 13. Mengisi ROM internal 8051 MK : Mikroprosesor Berikut ini adalah contoh rangkaian downloader yang terhubung melalui paralel port. Seperti tampak pada gambar 13.3, catu daya untuk socket IC slave adalah VCZ yang besarnya dapat diatur oleh VCE (pin QH pada U3) dan VCS (pin O2 dari paralel port). Sedangkan catur data untuk IC digital lainnya berasal dari VCC yang merupakan output catu daya dengan regulator tegangan 7805. Untuk menentukan lokasi ROM internal, 15-pin address (A0 – A14) dari socket IC slave dihubungkan dengan 2 buah Shift Register satu arah (U4 dan U5) yang masing-masing berukuran 8-bit. Pin data 8-bit yang berasal dari socket IC slave (B0 – B7) dihubungkan dengan sebuah Shift Register 1 arah (U2). Sedangkan 4-bit pin kendali dari socket IC slave (P26, P27, P36, P37) dihubungkan dengan sebuah Shift Register 1 arah (U3). Sesuai dengan tabel 13.1, pin PSEN (pin ke-29) dari socket IC slave dihubungkan ke Ground, sedangkan pin RST di-pull up dengan resistor R6 ke catu daya socket IC slave, yaitu VCZ. Pin EA/VPP untuk socket IC slave diatur oleh VPE (pin O1 dari paralel port), sedangkan pin ALE/PROG untuk socket IC slave dihubungkan dengan output rangkaian clock yang terdiri dari 4 buah 2-input NAND schmitt trigger (U1). Input rangkaian klok ini adalah ST1 dan ST2 (pin O3 dan O0 dari paralel port). Seluruh pin SCK dari shift register 1 arah, yaitu U3, U4, U5, serta pin CLK dari shift register 1 arah, yaitu U2 mendapatkan input dari CK yang merupakan sadapan tegangan D1 (pin 14 dari paralel port) melalui resistor R2. Pin D (data serial) dari shift register U3, U4 dan U5 masing-masing mendapatkan input dari pin D6, D4 dan D5 pada paralel port. Pin D0 dari shift register U2 mendapatkan input dari pin D0 paralel port, sedangkan pin Q7 dari IC ini memberikan informasi serial ke pin I7 pada paralel port. Seperti tampak pada gambar 13.3, 8 dari 25 pin paralel port K1 dihubungkan ke ground, sedangkan sisanya dihubungkan ke berbagai pin pada rangaian downloader sesuai dengan lebelnya. Pin D0 sampai D7 dari paralel port K1 ini merupakan pin data output, sedangkan pin I7 merupakan pin data input. Pin O0 – O3 adalah pin output paralel port K1 yang merupakan pin kendali yang mengeluarkan informasi biner secara otomatis ketika PC mengirimkan data output melalui paralel port. Meskipun downloader seperti ini hanya membutuhkan 1 kali pemrograman, yaitu pada PC saja, perancang harus memahami seluk beluk hardware terkait dengan pengiriman dan pengambilan data melalui paralel port. PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN MIKROPROSESOR 7 Modul 13. Mengisi ROM internal 8051 MK : Mikroprosesor Gambar 13.3. Rangkaian lengkap downloader yang menggunakan paralel port PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN MIKROPROSESOR 8 Modul 13. Mengisi ROM internal 8051 MK : Mikroprosesor Contoh downloader serial port. Berikut ini adalah contoh rangkaian downloader yang terhubung melalui serial port. Seperti tampak pada gambar 13.4, rangkaian downloader ini terlihat jauh lebih sederhana dari rangkaian downloader yang menggunakan paralel port. Sebagai konpensasinya, rangkaian ini memerlukan IC master yang harus diisi program sebelum digunakan untuk mengendalikan operasi penulisan dan pembacaan pada downloader ini. Seperti tampak pada gambar tsb, untuk mengatur address IC slave, prosesor pada IC master menggunakan Port 1 dan Port 2. Untuk data digunakan port 0, sedangkan untuk 4-bit kendali digunakan 4-bit MSB pada port 3. Untuk memantau kesiapan IC slave, prosesor pada IC master menggunakan P3.2. Sedangkan untuk memberi pulsa negatif ALE/PROG pada IC slave, prosesor master menggunakan P2.7. Untuk mengatur besar tegangan Vpp dari IC slave, prosesor master menggunakan P3.3. Program yang ditanam pada prosesor master harus sesuai dengan program yang dibuat pada PC. Misalnya, jika PC mengirimkan satu baris Intel HEX pada setiap pengiriman serial. Maka PC harus menunggu kesiapan prosesor master sebelum melakukan kiriman baris berikutnya. Sebagai pasangan kerja PC, prosesor master harus menyimpan satu baris Intel HEX pada RAM internal sebelum proses penulisan pada ROM internal IC slave dimulai, sehingga semua data yang dikirim PC dapat diterima secara utuh, prosesor master tidak disibukkan oleh pekerjaan selain mengambil data dari saluran serial. Mengambil informasi dari file dengan format Intel HEX. Terkait dengan penggunaan downloader, selain pengetahuan berkenaan dengan pengiriman dan penagmbilan data melalui paralel port dan serial port, programmer PC harus dapat melakukan operasi baca dan tulis file yang menggunakan format intel HEX. Modul ke13 ini dilampiri dengan keterangan tentang file Intel HEX. Karena IC prosesor Intel yang digunakan dalam kuliah ini tidak melampaui address 16-bit, maka baris yang memiliki tipe extended address (tt = 02 atau tt = 04) tidak pernah digunakan. Yang akan ditemui hanya baris dengan tipe data record (tt = 00) atau baris dengan tipe end-of-file record (tt = 01). PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN MIKROPROSESOR 9 Modul 13. Mengisi ROM internal 8051 MK : Mikroprosesor Gambar 13.4. Rangkaian lengkap downloader yang menggunakan serial port PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN MIKROPROSESOR 10 Mikroprosesor, Semester 6 –Progr.Karyawan Univ.Mercu Buana INTEL HEX FILE FORMAT The Intel HEX file is an ASCII text file with lines of text that follow the Intel HEX file format. Each line in an Intel HEX file contains one HEX record. These records are made up of hexadecimal numbers that represent machine language code and/or constant data. Intel HEX files are often used to transfer the program and data that would be stored in a ROM or EPROM. Most EPROM programmers or emulators can use Intel HEX files. Record Format An Intel HEX file is composed of any number of HEX records. Each record is made up of five fields that are arranged in the following format: :llaaaatt[dd...]cc Each group of letters corresponds to a different field, and each letter represents a single hexadecimal digit. Each field is composed of at least two hexadecimal digits-which make up a byte-as described below: : is the colon that starts every Intel HEX record. ll is the record-length field that represents the number of data bytes (dd) in the record. aaaa is the address field that represents the starting address for subsequent data in the record. tt is the field that represents the HEX record type, which may be one of the following: 00 - data record 01 - end-of-file record 02 - extended segment address record 04 - extended linear address record dd is a data field that represents one byte of data. A record may have multiple data bytes. The number of data bytes in the record must match the number specified by the ll field. cc is the checksum field that represents the checksum of the record. The checksum is calculated by summing the values of all Date 29-Jun-08 by Dipl.Ing Asril Jarin, MSc Page 11 Mikroprosesor, Semester 6 –Progr.Karyawan Univ.Mercu Buana hexadecimal digit pairs in the record modulo 256 and taking the two's complement. Data Records The Intel HEX file is made up of any number of data records that are terminated with a carriage return and a linefeed. Data records appear as follows: :10246200464C5549442050524F46494C4500464C33 This record is decoded as follows: :10246200464C5549442050524F46494C4500464C33 ||||||||||| CC->Checksum |||||||||DD->Data |||||||TT->Record Type |||AAAA->Address |LL->Record Length :->Colon where: 10 is the number of data bytes in the record. 2462 is the address where the data are to be located in memory. 00 is the record type 00 (a data record). 464C...464C is the data. 33 is the checksum of the record. Date 29-Jun-08 by Dipl.Ing Asril Jarin, MSc Page 12 Mikroprosesor, Semester 6 –Progr.Karyawan Univ.Mercu Buana Extended Linear Address Records (HEX386) Extended linear address records are also known as 32-bit address records and HEX386 records. These records contain the upper 16 bits (bits 16-31) of the data address. The extended linear address record always has two data bytes and appears as follows: :02000004FFFFFC where: 02 is the number of data bytes in the record. 0000 is the address field. For the extended linear address record, this field is always 0000. 04 is the record type 04 (an extended linear address record). FFFF is the upper 16 bits of the address. FC is the checksum of the record and is calculated as 01h + NOT(02h + 00h + 00h + 04h + FFh + FFh). When an extended linear address record is read, the extended linear address stored in the data field is saved and is applied to subsequent records read from the Intel HEX file. The linear address remains effective until changed by another extended address record. The absolute-memory address of a data record is obtained by adding the address field in the record to the shifted address data from the extended linear address record. The following example illustrates this process.. Address from the data record's address field Extended linear address record data field 2462 FFFF -------- Absolute-memory address Date 29-Jun-08 FFFF2462 by Dipl.Ing Asril Jarin, MSc Page 13 Mikroprosesor, Semester 6 –Progr.Karyawan Univ.Mercu Buana Extended Segment Address Records (HEX86) Extended segment address records-also known as HEX86 records-contain bits 4-19 of the data address segment. The extended segment address record always has two data bytes and appears as follows: :020000021200EA where: 02 is the number of data bytes in the record. 0000 is the address field. For the extended segment address record, this field is always 0000. 02 is the record type 02 (an extended segment address record). 1200 is the segment of the address. EA is the checksum of the record and is calculated as 01h + NOT(02h + 00h + 00h + 02h + 12h + 00h). When an extended segment address record is read, the extended segment address stored in the data field is saved and is applied to subsequent records read from the Intel HEX file. The segment address remains effective until changed by another extended address record. The absolute-memory address of a data record is obtained by adding the address field in the record to the shifted-address data from the extended segment address record. The following example illustrates this process. Address from the data record's address field Extended segment address record data field 2462 1200 -------- Absolute memory address Date 29-Jun-08 00014462 by Dipl.Ing Asril Jarin, MSc Page 14 Mikroprosesor, Semester 6 –Progr.Karyawan Univ.Mercu Buana nd-of-File (EOF) Records An Intel HEX file must end with an end-of-file (EOF) record. This record must have the value 01 in the record type field. An EOF record always appears as follows: :00000001FF where: 00 is the number of data bytes in the record. 0000 is the address where the data are to be located in memory. The address in end-of-file records is meaningless and is ignored. An address of 0000h is typical. 01 is the record type 01 (an end-of-file record). FF is the checksum of the record and is calculated as 01h + NOT(00h + 00h + 00h + 01h). Example Intel HEX File Following is an example of a complete Intel HEX file: :10001300AC12AD13AE10AF1112002F8E0E8F0F2244 :10000300E50B250DF509E50A350CF5081200132259 :03000000020023D8 :0C002300787FE4F6D8FD7581130200031D :10002F00EFF88DF0A4FFEDC5F0CEA42EFEEC88F016 :04003F00A42EFE22CB :00000001FF Date 29-Jun-08 by Dipl.Ing Asril Jarin, MSc Page 15