AT89C1051

advertisement
Lab Elektronika Industri
Mikrokontroler - 1
AT89C1051
I. FITUR AT89C1051
• Kompatibel dengan produk MCS51
• 1k byte program flash ROM yang dapa diprogram ulang hingga 1000 kali
• Tegangan operasi 2.7 volt hingga 5 volt
• Frekuensi kristal (Oscilator) dari 0 – 24 MHz
• Dua level penguncian memori program
• 64 byte memori data SRAM
• 15 input/output yang dapat diprogram
• Satu 16 bit Timer/Counter
• Tiga sumber interupsi
• Output yang bisa mengendalikan LED secara langsung
• Mempunyai pembanding (comparator) di dalamnya
• Adanya Low Power Idle dan mode Power Down
II. KETERANGAN
AT89C1051 adalah 8 bit CMOS (Complementary Metal Oxide Semiconductor) mikrokomputer
performansi tinggi, mempunyai tegangan operasi rendah, 1K byte Flash PEROM
(Programmable and Erasable Read Only Memory). Chip AT89C1051 dimanufaktur dengan
teknologi memori nonvolatile kepadatan tinggi ATMEL yang kompatibel dengan instruksi
mikrokontroler standard industri MCS51. Dengan kombinasi CPU 8 bit dan flash memori pada
satu chip monolithic, AT89C1051 adalah mikrokomputer yang powerful yang
mengkombinasikan solusi tingkat fleksibilitas tinggi dengan biaya yang efektif untuk berbagai
keperluan aplikasi sistem kontrol.
AT89C1051 mempunyai fitur standar sebagai berikut: 1K byte Flash, 64 byte SRAM, 15 I/O
line, satu 16 bit Timer/Counter, tiga sumber dua level interupsi, satu comparator analog yang
presisi, rangkaian clock dan oscilator pada chip. Dan sebagai tambahan, AT89C1051 didesain
dengan logika statik yang beroperasi pada frekuensi serendah 0 Hz dan mendukung dua mode
operasi hemat daya listrik yang dipilih dengan software. Mode Idle akan menghentikan kerja
CPU sementara membolehkan RAM, timer/counter, port serial dan sistem interupsi masih tetap
beroperasi. Mode Power Down akan mengamankan isi RAM tetapi membekukan oscilator
sehingga akan mematikan fungsi-fungsi lainnya sampai terdapat reset secara hardware.
III. KONFIGURASI PIN
IV. KETERANGAN PIN
VCC Tegangan supply
GND Ground
Iwan B Pratama 5/9/2006
Lab Elektronika Industri
Mikrokontroler - 2
Port 1
Port 1 adalah port input/output (I/O) dua arah 8 bit. Pada port 1 pin P1.2 hingga P1.7 sudah
dilengkapi resistor pull-up internal, sedang P1.0 dan P1.1 perlu ditambahkan resistor pull-up
secara eksternal. P1.0 juga sebagai input posistif bagi comparator analog (AIN0) dan P1.1
sebagai input negatif analog comparator (AIN1). Output port 1 mampu menarik arus hingga
20mA sehingga langsung dapat mengendalikan LED seri dengan resistor pembatas arus. Jika
port 1 dibuat berlogika 1, port ini dapat dipakai sebagai input. Ketika P1.2 hingga P1.7 dipakai
sebagai input dan diberikan logika rendah, port ini akan mampu mengeluarkan arus 50µA karena
adanya resistor pull-up internal.
Port 1 juga berfungsi untuk menerima data selama proses pengisian program flash ROM dan
proses verifikasi.
Port 3
Port 3 dengan P3.0 hingga P3.5 dan P3.7 (catatan P3.6 dihilangkan) adalah port input/output 7
bit dua arah dengan resistor pull-up internal. P3.6 secara internal dihubungkan ke output
comparator analog tetapi tidak disediakan pin keluarnya. Port 3 mampu menarik arus hingga
20mA. Jika port 3 dibuat berlogika 1, port ini dapat dipakai sebagai input. Ketika P3 dipakai
sebagai input dan diberikan logika rendah, port ini akan mampu mengeluarkan arus 50µA karena
adanya resistor pull-up internal.
Port 3 juga mempunyai beberapa fungsi seperti tabel berikut:
Port
P3.2
P3.3
P3.4
Fungsi Alternatif
INT0 (interupsi eksternal 0)
INT1 (interupsi eksternal 1)
T0 (input clock eksternal Timer 0)
Port 3 juga berfungsi untuk menerima beberapa sinyal kontrol selama proses pengisian program
flash ROM dan proses verifikasi.
RST
Input reset. Semua port I/O akan diset ke 1 segera setelah input reset dibuat logika 1. Reset
terjadi jika pin RST diset 1 selama paling tidak 2 siklus mesin. Satu siklus mesin membutuhkan
12 pulsa clock atau 12 pulsa oscilator.
XTAL1
Input ke inverting oscilator amplifier atau input ke rangkaian clock internal.
XTAL2
Output dari inverting oscilator amplifier
KARAKTERISTIK OSCILATOR
XTAL1 dan XTAL2 adalah input dan output dari inverting amplifier yang bisa dikonfigurasi
sebagai rangkaian oscilator on-chip seperti terlihat pada rangkaian di bawah. Kristal quartz atau
resonator keramik bisa digunakan untuk keperluan ini.
Jika dinginkan sumber clock dari eksternal, pin XTAL2
dibiarkan tak tersambung dan pin XTAL1 untuk masuk clock
eksternal seperti gambar di bawah. Clock eksternal tidak
memerlukan pulsa dengan duty cycle 50% karena akan
melewati T-FF (T-flip flop) yang akan membagi dua frekuensi
dengan duty cycle 50%.
Komponen kapasitor C1 dan C2 disarankan 30pF ± 10pF untuk
kristal quartz dan 40pF ± 10pF untuk resonator keramik.
Iwan B Pratama 5/9/2006
Lab Elektronika Industri
Mikrokontroler - 3
Jika memakai eksternal clock perlu diperhatikan bahwa pulsa
tinggi memiliki tegangan minimum 2.7V dan maksimum 5.2V
sedang pulsa rendah memiliki tegangan maksimum 0.3V dan
tegangan minimum 0V.
Diagram blok AT89C1051 terlihat seperti gambar di bawah:
V. REGISTER FUNGSI KHUSUS
Special Function Register (SFR) atau register fungsi khusus dalam AT89C1051 terdiri dari:
SP
: Stack Pointer
Address
: 081H
Reset : 07H
SP adalah register penunjuk stack ketika ingin menyimpan data sementara ke dalam stack
(memori) yang terdapat di RAM internal. Untuk menyimpan data ke stack digunakan istruksi
Iwan B Pratama 5/9/2006
Lab Elektronika Industri
Mikrokontroler - 4
PUSH dan untuk mengambil data dari stack dengan instruksi POP. Ketika direset penunjuk stack
adalah memori 07H. Jadi instruksi pertama
PUSH A
;akan menyimpan isi A ke memori 07H
setelah instruksi ini, isi SP akan dinaikkan 1 jadi akan menunjuk ke alamat 08H. Jika kemudian
ada instruksi PUSH lagi maka akan disimpan ke alamat 08H dan SP = 09H.
Instruksi POP akan mengurangi isi SP dengan 1 dan kemudian membaca isi memori itu. Jadi
misal POP B
; B akan berisi memori di alamat 08H. Begitu seterusnya.
Dengan ini, kita mempunyai memori yang digunakan untuk menyimpan data secara FILO (first
in last out) data yang masuk duluan akan dikeluarkan belakangan.
DPL : Data Pointer Low byte
Address
: 082H
Reset : 00H
Data pointer untuk byte rendah yang bersama dengan DPH digunakan untuk membuat alamat 16
bit yang akan mengakses (membaca) data yang disimpan dalam memori program (flash ROM).
DPH : Data Pointer High byte
Address
: 083H
Reset : 00H
Data pointer untuk byte tinggi yang bersama dengan DPL membentuk alamat 16 bit untuk
mengakses (membaca) data yang disimpan dalam flash ROM. Penggunaan DPH + DPL biasa
dikenal dengan register DPTR (data pointer) yang penggunaannya bersamaan dengan instruksi
MOVC (lihat set instruksi).
PCON : Power Control
Address
: 087H
Reset : 0xxx0000b
PCON digunakan untuk mengatur penggunaan power (tenaga listrik) untuk mengaktifkan Mode
Idle dan/atau Mode Power Down. Selain itu terdapat bit SMOD untuk mengatur frekuensi clock
internal bagi timer/counter (lihat pangaturan baudrate serial port dengan timer/counter).
TCON : Timer Control Register
Address
: 088H
Reset : 00H
Timer control digunakan untuk mengendalikan timer/counter. Bit TR0 digunakan untuk menstart atau men-stop timer. Bit TF0 digunakan untuk memantau kondisi timer/counter telah terjadi
overflow (melimpah).
TMOD: Timer Mode Register
Address
: 089H
Reset : 00H
Timer mode adalah register untuk mengatur kerja timer 0 dalam AT89C1051 bekerja di mode 0,
1, 2 atau mode 3. Mode 0 adalah mode pencacah biner 13 bit, mode 1 adalah pencacah biner 16
bit, mode 2 adalah counter 8 bit isi ulang otomatis dan mode 3 adalah sebagai dua counter 8 bit.
TL0 : Timer 0 Low
Address
: 08AH
Reset : 00H
TL0 adalah register yang digunakan sebagai counter biner 8 bit rendah. Melalui register ini
kondisi counter dapat dibaca atau diisi data tertentu.
TH0 : Timer 0 High
Address
: 08CH
Reset : 00H
TH0 adalah register yang digunakan sebagai counter biner 8 bit tinggi. Melalui register ini
kondisi counter dapat dibaca atau diisi data tertentu. TH0 + TL0 membentuk pencacah 13 bit
atau 16 bit.
P1
: Port 1
Address
: 090H
Reset : 0FFH
P1 adalah register port 1. Melalui port 1 dapat digunakan sebagai saluran data masuk/keluar.
IE
: Interrupt Enable
Address
: 0A8H
Reset : 0xx00000b
Adalah register untuk mengatur sistem interupsi. Sumber mana saja yang bisa mengakibatkan
terjadi interupsi.
P3
: Port 3
Address
: 0B0H
Reset : 0FFH
P1 adalah register port 3. Melalui port 3 dapat digunakan sebagai saluran data masuk/keluar.
P3.6 tidak mempunyai sambungan keluar IC tetapi secara internal disambungkan ke output dari
comparator analog.
IP
: Interrupt Priority
Address
: 0B8H
Reset : xxx00000b
Iwan B Pratama 5/9/2006
Lab Elektronika Industri
Mikrokontroler - 5
IP digunakan untuk mengatur prioritas dari sumber insterupsi.
PSW : Program Status Word
Address
: 0D0H
Reset : 00H
PSW berisi status dari program. Terdapat bit C (carry bit). Digunakan juga untuk mengatur bank
alamat register R0 hingga R7
ACC : Accumulator
Address
: 0E0H
Reset : 00H
Acc sering disebut hanya register A adalah register utama dalam operasi aritmatika dan logika.
B
: Register B
Register tambahan.
Address
: 0F0H
Reset : 00H
VI. PEMBATASAN PADA BEBERAPA INSTRUKSI
AT89C1051 hanya mempunyai flash ROM sebesar 1Kbyte. Keadaan ini harus dipahami oleh
programmer yang menggunakannya sedemikian rupa semua instruksi lompatan (jump) dan
pencabangan (branching) masih jatuh dalam lokasi ruang memori 1Kbyte. Ruang memori flash
yang valid adalah dari 000H hingga 3FFH bagi AT89C1051. Mencoba mengakses lokasi memori
diluar ini akan menyebabkan program berjalan tanpa dapat diketahui.
1. Instruksi Pencabangan :
LCALL, ACALL, LJMP, AJMP, SJMP, JMP
@A+DPTR
Instruksi di atas harus menjaga agar selalu hanya menjangkau lokasi memori dalam ruang
1Kbyte yaitu dari 000H hingga 3FFH. Usaha menjangkau lokasi memori diluar 1Kbyte akan
menyebabkan program berjalan tanpa bisa diketahui.
CJNE [....], DJNZ [....], JB, JNB, JC, JNC, JBC, JZ, JNZ
Instruksi ini juga memakai aturan seperti di atas.
2. Instruksi berkaitan dengan MOVX
AT89C1051 hanya dilengkapi dengan 64byte RAM. Instruksi yang melibatkan RAM bararti
hanya terbatas pada ruang dari alamat 00H hingga 3FH. Ukuran stack juga hanya maksimum
adalah 54byte (64byte – 8byte). AT89C1051 tidak dilengkapi dengan kemampuan untuk
mengakses memori data eksternal dan memori program eksternal. Sehingga instruksi MOVX [...]
tidak diperbolehkan pada AT89C1051.
VII. BIT-BIT PENGUNCI MEMORI PROGRAM
Bit pengunci program (LB, Lock Bit) terdapat dua yaitu LB1 dan LB2 yang bisa dibiarkan tak
diprogram (U, unprogrammed) atau dapat diprogram (P, programmed).
Iwan B Pratama 5/9/2006
Lab Elektronika Industri
Mikrokontroler - 6
VIII. MODE IDLE
Pada mode idle, CPU dibuat berhenti (sleep) sementara semua periferal lainnya tetap aktif. Mode
idle diaktifkan dengan software. Isi RAM dan isi semua register fungsi khusus masih tidak
berubah selama mode idle. Mode idle dapat dihentikan dengan adanya interupsi atau mereset
hardware.
P1.0 dan P1.1 sebaiknya direset ke 0 jika tidak ada resistor pull-up eksternal dan diset ke 1 jika
diberi resistor pull-up eksternal. Jika mode idle dihentikan dengan reset hardware, akan
memerlukan 2 siklus mesin sebelum mikrokontroler akan memulai lagi melaksanakan program
dari mana ketika ditinggalkan. Dalam kondisi idle sebaiknya jangan mengakses RAM tetapi
masih boleh mengakses port.
IX. MODE POWER DOWN
Pada mode power down, oscilator akan dihentikan dan instruksi yang mengaktifkan mode power
down adalah instruksi terakhir yang dieksekusi. Isi RAM dan register fungsi khusus masih
dipertahankan sampai mode power down dihentikan. Satu cara untuk menghentikan mode power
down adalah dengan reset hardware. Setelah reset diberikan, isi register fungsi khusus akan
kembali ke keadaan awal tetapi isi RAM masih tetap akan dipertahankan. Reset untuk
menghentikan power down jangan dilakukan sebelum tegangan VCC dikembalikan lagi ke 5V.
P1.0 dan P1.1 sebaiknya direset ke 0 jika tidak diberikan resistor pull-up eksternal dan diset ke 1
jika diberikan resistor pull-up eksternal.
X. MEMPROGRAM FLASH ROM
AT89C1051 mempunyai 1K byte flash PEROM yang saat keluar dari pabrik dalam kondisi
terhapus isinya (semua berisi 0FFH) yang siap untuk diprogram. Pengisian program dikerjakan 1
byte setiap satu waktu tertentu. Sekali diisi program, PEROM dalam kondisi tidak kosong (nonblank) dan harus dihapus semua isi PEROM terlebih dahulu sebelum diprogram ulang.
Internal Address Counter
Internal address counter atau pencacah alamat internal adalah fasilitas didalam PEROM untuk
mengalamati PEROM selama proses pengisian program. Isi internal address counter akan direset
ke 000H ketika input RST diberi logika 1. Isi internal address counter akan dinaikkan satu ketika
ada pulsa naik pada pin XTAL1 (pin 5).
Algoritma Pengisian Program
Urutan memprogram AT89C1051 adalah sebagai berikut:
1. Urutan Pemberian Listrik: Berikan daya listrik pada VCC dan GND. Buat RST dan XTAL1
ke 0.
2. Set RST ke 1 dan Pin P3.2 juga ke 1.
3. Berikan kombinasi logika 1 atau 0 ke P3.3, P3.4, P3.5 dan P3.7 untuk memilih berbagai
kombinasi operasi pemrograman PEROM seperti tabel di bawah.
4. Sediakan data Code yang akan diisikan pada lokasi 000H ke P1.0 hingga P1.7
5. Naikkan pin RST ke 12V untuk membolehkan pengisian program
6. Berikan pulsa rendah di P3.2 untuk memprogram/mengunci flash PEROM. Proses pengisian
PEROM telah diatur secara internal dan akan memakan waktu sekitar 1.2 milidetik.
Kombinasi port 3 lihat tabel.
7. Untuk memverifikasi data yang telah diisikan, buat RST turun dari 12V ke 5V dan berikan
kombinasi port 3 seperti tabel. Data yang diprogram dapat dibaca dari port 1.
8. Untuk memprogram 1 byte pada lokasi address berikutnya, berikan pulsa naik ke pin XTAL1
sekali untuk menaikkan isi Internal Address Counter. Sediakan data baru ke port 1.
Iwan B Pratama 5/9/2006
Lab Elektronika Industri
Mikrokontroler - 7
9. Ulangi langkah 5 sampai 8 dengan memberikan data yang sesuai ke port 1 dan memberikan
pulsa ke XTAL1 untuk menaikkan address counter hingga maksimum 1K byte lokasi atau
data yang diisikan habis.
10. Urutan mematikan listrik: buat XTAL1 ke 0, input RST ke 0 dan matikan listrik.
a. Polling Data
AT89C1051 mengeluarkan polling data untuk mengindikasikan akhir dari siklus pengisian 1
byte ke flash ROM. Selama penulisan data ke flash, jika dilakukan pembacaan 1 byte data
yang telah diprogramkan ke flash akan menghasilkan komplemen dari P1.7 yang
diprogramkan sebelumnya. Jika siklus penulisan telah komplit maka data yang benar akan
muncul di port 1 untuk proses verifikasi dan siklus penulisan data berikutnya bisa dimulai.
Sinyal polling data ini bisa muncul kapan saja setelah siklus penulisan ke flash telah dimulai.
b. Ready/Busy
Proses penulisan data ke flash ROM juga bisa dipantau dari adanya sinyal Ready/Busy ini.
P3.1 akan 0 untuk menandakan sedang terjadi penulisan ke flash (BUSY) setelah P3.2
dikembalikan ke 1. P3.1 akan diset ke 1 lagi ketika proses penulisan ke flash telah selesai dan
siap untuk proses penulisan berikutnya (READY).
Iwan B Pratama 5/9/2006
Lab Elektronika Industri
Mikrokontroler - 8
c. Verifikasi Penulisan
Jika bit pengunci LB1 dan LB2 tidak diprogram, isi flash ROM dapat dibaca dari port 1 untuk
proses verifikasi. Prosedurnya adalah:
1. Reset internal address counter ke alamat 000H dengan membuat pin RST dari 0 ke 1.
2. Berikan kombinasi logika untuk mode pembacaan isi flash ROM dan data dapat dibaca
dari port 1.
3. Berikan 1 pulsa ke XTAL1 untuk menaikkan address counter
4. Baca isi flash ROM berikutnya dari port 1
5. Ulangi langkah 3 dan 4 sampai semua isi flash telah dibaca.
Bit pengunci (lock bit) sendiri tidak bisa diverifikasi.
d. Penghapusan Isi Flash (Erase)
Seluruh isi flash ROM (1Kbyte) dan dua lock bit dapat dihapus dengan kombinasi untuk mode
penghapusan isi ROM dan memberikan pulsa rendah ke P3.2 selama 10 milidetik. Proses
penghapusan membuat isi ROM akan diset ke 1 semua (semua berisi 0FFH). Proses
penghapusan harus dilakukan dulu sebelum isi flash ROM diprogram ulang.
e. Membaca Signature Byte
Pembacaan signature byte dilakukan dengan cara yang sama dengan proses verifikasi pada
lokasi 000H, 001H dan 002H kecuali bahwa P3.5 dan P3.7 juga direset ke 0. Data yang
terbaca akan mempunyai arti sbb:
[000H]
= 1EH menandakan chip dibuat oleh ATMEL
[001H]
= 11H menandakan chip adalah AT89C1051
Iwan B Pratama 5/9/2006
Lab Elektronika Industri
Mikrokontroler - 9
Iwan B Pratama 5/9/2006
Download