Filename | MCS 51= Dasar Pemrograman AT89C2051 (Bagian 3) |
Permission | rw-r--r-- |
Author | NMI |
Date and Time | 12.57 |
Label | Elektronika |
Action |
Special Function Register (SFR) AT89Cx051
Random
Access Memory (RAM) dalam AT89Cx051 hanya 256 byte, hanya
setengahnya yang dipakai sebagai memori-data biasa, setengahnya lagi
dipakai untuk register-register untuk mengatur perilaku MCS51 dalam
hal-hal khusus, misalnya tempat untuk berhubungan dengan port
paralel P1 atau P3, dan sarana input/output lainnya, tapi tidak
dipakai untuk menyimpan data seperti layaknya memori-data.
Meskipun demikian, dalam hal penulisan program SFR diperlakukan
persis sama dengan memori-data.
Nomor memori-data yang disediakan untuk Special Function Register mulai dari $80 sampai dengan $FF,
area sebanyak 128 byte ini tidak semuanya dipakai, hal ini
digambarkan dalam Denah Special Function Register, Gambar 5.
Masing-masing register dalam Special Function Register mempunyai nomor dan nama.
Dianjurkan
agar nomor-nomor yang tidak dipakai jangan dipergunakan, karena
bisa mengakibatkan terjadinya sesuatu yang tidak terduga.
Sebagian register dalam Special Function Register
sudah dibicarakan sebagai Register Dasar, merupakan piranti dasar
untuk penulisan program. Register-register dasar tersebut antara lain adalah Akumulator (ACC), Stack Pointer Register (SP), Program Status Register (PSW), Register B, Data Pointer High Byte (DPH) dan Data Pointer Low Byte (DPL). Di dalam area Special Function Register. Register-register ini diperlakukan sebagai memori dengan nomor yang sudah tertentu.
Akumulator menempati memori-data nomor $E0, Stack Pointer Register menempati memori-data nomor $81, Program Status Register ada di $D0, Register B di $F0, DPL di $82 dan DPH di $83.
Kemampuan MCS51 untuk menomori memori-data dalam level bit, dipakai juga dalam Special Function Register. Secara keseluruhan nomor bit yang disediakan dalam MCS51 sebanyak 256, nomor bit 0 sampai 127 sudah dipakai untuk nomor bit memori-data nomor $20 sampai $2F, sisanya sebanyak 128 nomor dipakai di Special Function Register.
Special Function Register
yang bisa dinomori dengan nomor bit, adalah yang mempunyai nomor
memori dengan digit heksadesimal kedua adalah 0 atau 8, misalnya
nomor $80, $88, $90, $98..$F0 dan $F8.
Akumulator merupakan Special Function Register dengan nomor $E0, sehingga semua bit dalam Akumulator bisa di-nomor-i satu per satu. Dalam penulisan program bit 0 Akumulator bisa dituliskan sebagai A.0, bit 1 Akumulator ditulis sebagai A.1 dan seterusnya. Instuksi SETB A.0 mengakibatkan bit 0 dari Akumulator menjadi ‘1’ sedangkan bit-bit lainnya tidak terpengaruh. Instruksi CLR A.6 mengakibatkan bit 6 dari Akumulator menjadi ‘0’ tapi tidak memengaruhi bit-bit yang lain.
Pengelompokan SFR
Selain register yang berfungsi sebagai register dasar yang sudah dibicarakan diatas, register-register dalam SFR dipakai untuk mengatur Input/Output dari MCS51 yang dikelompokan menjadi :
· Register Penampung Data Input/Output, misalnya data yang diisikan ke register P1 akan diteruskan (di-output-kan) ke Port 1 yang terdapat di kaki IC AT89Cx051.
· Register Pengatur Input/Output dan Register Status Input/Output, misalnya register SCON dipakai untuk mengatur UART dan dipakai untuk memantau kondisi UART, register TCON dipakai untuk mengatur kerja Timer.
Uraian Singkat SFR
Berikut ini dibahas secara singkat fungsi dan sifat masing-masing register dalam Special Function Register, pembahasan secara rinci akan dilakukan dibagian lain.
P1 (Port 1, nomor $90, bisa dinomori dengan nomor bit):
merupakan sarana input/output port 1, masing-masing bit dalam
register ini setara dengan salah satu kaki IC AT89Cx051. Misalnya
bit 3 dari register P1 terhubung ke kaki P1.3 (kaki nomor 15 AT89Cx051), instruksi SETB P1.3 mengakibatkan kaki nomor 15 tersebut menjadi ‘1’ dan instruksi CLR P1.3 akan membuatnya menjadi ‘0’.
P3 (Port 3, nomor $B0, bisa dinomori dengan nomor bit):
merupakan sarana input/output port 3, masing-masing bit dalam
register ini setara dengan salah satu kaki IC AT89Cx051. Misalnya
bit 5 dari register P3 terhubung ke kaki P3.5 (kaki nomor 9 AT89Cx051), instruksi SETB P3.5 mengakibatkan kaki nomor 9 tersebut menjadi ‘1’ dan instruksi CLR P3.5 akan membuatnya menjadi ‘0’.
SBUF (Serial Buffer, nomor $99): Register Serial Buffer (SBUF) dipakai untuk mengirim data dan menerima data dengan UART yang terdapat dalam IC AT89Cx051. Angka yang disimpan ke SBUF akan dikirim keluar secara seri lewat kaki TXD (kaki nomor 3 IC AT89Cx051). Sebaliknya data seri yang diterima di kaki RXD (kaki nomor 2 IC AT89Cx051) bisa diambil di register SBUF. Jadi SBUF akan berfungsi sebagai port output pada saat register ini diisi data, dan SBUF akan menjadi port input kalau isinya diambil.
SCON (Serial Control, nomor $98, bisa dinomori dengan nomor bit): register SCON dipakai untuk mengatur perilaku UART
di dalam IC AT89Cx051, hal-hal yang diatur meliputi penentuan
kecepatan pengiriman data seri (baud rate); mengakitpkan fasilitas
penerimaan data seri (fasilitas pengiriman data seri tidak perlu
di atur), disamping itu register ini dipakai pula untuk memantau
proses pengiriman data seri dan proses penerimaan data seri.
TL0/TH0 (Timer 0 Low/High, nomor $8A/$8C):
Kedua register ini bersama membentuk Timer 0, yang merupakan
pencacah naik (count up counter). Perilaku kedua register ini
diatur oleh register TMOD dan register TCON.
Hal-hal yang bisa diatur antara lain adalah sumber clock untuk
pencacah, nilai awal pencacah, bilamana proses pencacahan mulai
atau berhenti, dan lain sebagainya.
TL1/TH1 (Timer 1 Low/High, nomor $8B/$8D):
Kedua register ini bersama membentuk Timer 1, yang merupakan
pencacah naik (count up counter). Perilaku kedua register ini
diatur oleh register TMOD dan register TCON.
Hal-hal yang bisa diatur antara lain adalah sumber clock untuk
pencacah, nilai awal pencacah, bilamana proses pencacahan mulai
atau berhenti, dan lain sebagainya.
TMOD (Timer Mode, nomor $89): register TMOD dipakai untuk mengatur mode kerja Timer 0 dan Timer 1,
lewat register ini masing-masing timer bisa diatur menjadi timer
16-bit, timer 13-bit, timer 8-bit yang bisa isi ulang secara
otomatis, atau 2 buah timer 8 bit yang terpisah. Di
samping itu bisa diatur agar proses proses pencacahan timer bisa
dikendalikan lewat sinyal dari luar IC AT89Cx051, atau timer dipakai
untuk mencacah sinyal-sinyal dari luar IC.
TCON (Timer Control, nomor $88, bisa dinomori dengan nomor bit): register TCON
dipakai untuk memulai atau menghentikan proses pencacahan timer
dan dipakai untuk memantau apakah terjadi limpahan dalam proses
pencacahan. Disamping itu masih tersisa 4 bit dalam register TCON yang tidak dipakai untuk mengatur Timer, melainkan dipakai untuk mengatur sinyal interupsi yang diterima di INT0 (kaki nomor 6) atau INT1 (kaki nomor 7), dan dipakai untuk memantau apakah ada permintaan interupsi pada kedua kaki itu.
IE (Interrupt Enable, nomor $A8, bisa dinomori dengan nomor bit): register ini dipakai untuk mengaktipkan atau me-non-aktipkan sarana interupsi, bit 0 sampai bit 6 dari register IE (IE.0..IE.6) dipakai untuk mengatur masing-masing sumber interupsi (sesungguhnya IE.6 tidak dipakai) sedangkan IE.7 dipakai untuk mengatur sistem interupsi secara keseluruhan, jika IE.7 =’0’ akan sistem interupsi menjadi non-aktip tidak mempedulikan keadaan IE.0.. IE.6.
IP (Interrupt Priority, nomor $B8, bisa dinomori dengan nomor bit):
register ini dipakai untuk mengatur perioritas dari masing-masing
sumber interupsi. Masing-masing sumber interupsi bisa diberi
perioritas tinggi dengan memberi nilai ‘1’
pada bit bersangkutan dalam register ini. Sumber interupsi yang
perioritasnya tinggi bisa menginterupsi proses interupsi dari
sumber interupsi yang perioritasnya lebih rendah.
PCON (Power Control, nomor $87): Register PCON
dipakai untuk mengatur pemakaian daya IC AT89Cx051, dengan cara
‘menidurkan’ IC tersebut sehingga memerlukan arus kerja yang sangat
kecil. Satu satu bit dalam register ini dipakai untuk menggandakan
kecepatan pengiriman data seri (baud rate) dari UART di dalam AT89Cx051.
Variasi dari SFR
Seperti
sering disebut, MCS51 merupakan satu keluarga IC mikrokontroler
yang terdiri dari ratusan macam IC, ratusan macam IC tersebut
umumnya mempunyai fasilitas input/output yang berlainan. Keragaman ini
ditampung dalam Special Function Register.
Register
baku dalam keluarga MCS51, ada yang tidak dimiliki oleh keluarga
AT89Cx051, register-register tersebut antara lain adalah :
P0 (Port 0, nomor $80, bisa dinomori dengan nomor bit):
merupakan sarana input/output port 0, masing-masing bit dalam
register ini setara dengan salah satu kaki IC AT89C51. Sifat Port 0 mirip sekali dengan sifat Port 1 dan Port 3 milik AT89Cx051.
P2 (Port 2, nomor $A0, bisa dinomori dengan nomor bit):
merupakan sarana input/output port 2, masing-masing bit dalam
register ini setara dengan salah satu kaki IC AT89C51. Sifat Port 2 mirip sekali dengan sifat Port 1 dan Port 3 milik AT89Cx051
Kaki
IC AT89Cx051 hanya 20, hanya setengah dari jumlah kaki AT89C51,
berkurangnya kaki ini mengakibatkan AT89Cx051 tidak punya Port 0 dan Port 2 dan dengan demikian juga tidak punya register P0 dan register P2.
Di samping dipakai sebagai port input/output, Port 0 dan Port 2 bisa pula dipakai untuk saluran-data (data bus) dan saluran-alamat (address bus) yang diperlukan AT89C51 untuk bisa menambah memori diluar chip.
0 komentar :
Posting Komentar