Anda di halaman 1dari 27

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.
Gambar 5
Denah Special Function Register

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.

Arrange By Budhy Sutanto

Posted by generated at 8:31 PM

Tags: Mikrokontroller 0 comments

RAM dan Register dalam AT89Cx051

Bagi mereka yang sudah terbiasa memakai komputer, kapasitas Random


Access Memory (RAM) yang dimiliki AT89Cx051 ‘mengerikan’ karena sangat sedikit,
hanya 256 byte! Itupun tidak semuanya bisa dipakai sebagai memori penyimpan
biasa, lebih dari setengahnya merupakan memori dengan keperluan khusus yang
biasa dikenal sebagai register. Meskipun demikian bagi mikrokontroler kapasitas itu
sudah mencukupi.

Dalam pengertian MCS51, Random Access Memory dalam chip AT89Cx051


adalah memori-data, yaitu memori yang dipakai untuk menyimpan data, sedangkan
Flash PEROM merupakan memori penampung program pengendali AT89Cx051,
dikenal sebagai memori-program.
Karena kedua memori itu memang dibedakan dengan tegas, maka kedua memori itu
mempunyai penomoran yang terpisah. Memori-program dinomori sendiri, pada
AT89C2051 mulai dari nomor $0000 sampai $07FF. Sedangkan memori-data yang
hanya 256 byte dinomori dari nomor $00 sampai $FF.

Gambar 3
Denah Memori-data

Seperti terlihat dalam denah memori-data Gambar 3, memori-data dibagi


menjadi dua bagian, memori nomor $00 sampai $7F merupakan memori seperti RAM
selayaknya meskipun beberapa bagian mempunyai kegunaan khusus, sedangkan
memori nomor $80 sampai $FF dipakai sangat khusus yang dinamakan sebagai
Special Function Register (akan dibahas tersendiri dibagian lain).

Memori-data nomor $00 sampai $7F bisa dipakai sebagai memori penyimpan data
biasa, dibagi menjadi 3 bagian:
• Memori nomor $00 sampai $18 selain sebagai memori-data biasa, bisa pula dipakai
sebagai Register Serba Guna (General Purpose Register).

• Memori nomor $20 sampai $2F selain sebagai memori-data biasa, bisa dipakai untuk
menyimpan informasi dalam level bit.

• Memori nomor $30 sampai $7F (sebanyak 80 byte) merupakan memori-data biasa, bisa
dipakai untuk menyimpan data maupun dipakai sebagai Stack.

Register Serba Guna

Register Serba Guna (General Purpose Register) menempati memori-data nomor $00
sampai $18, memori sebanyak 32 byte ini dikelompokkan menjadi 4 Kelompok
Register (Register Bank), 8 byte memori dari masing-masing Kelompok itu dikenali
sebagai Register 0, Register 1 .. Register 7 (R0, R1, R2, R3, R4, R5, R6 dan R7).

Dalam penulisan program memori-memori ini bisa langsung disebut sebagai R0, R1,
R2, R3, R4, R5, R6 dan R7, tidak lagi dengan nomor memori. Dengan cara ini instruksi
yang terbentuk bisa lebih sederhana dan bekerja lebih cepat. Pengertian ini bisa
diperjelas dengan contoh 2 instruksi berikut :

MOV A,$04

MOV A,R4

Instruksi pertama mempunyai makna isi memori-data nomor 4 di-copy-kan ke


Akumulator A, sedangkan instruksi kedua artinya isi R4 di-copy-kan ke Akumulator A.
Karena R4 menempati memori-data nomor 4, jadi kedua instruksi itu berakibat sama
bagi Akumulator A.

Tapi saat diterjemahkan ke kode mesin, intruksi pertama dirubah menjadi E5 04


(heksadesimal) dan instruksi kedua menjadi E6 (heksadesimal), jadi instruksi kedua
lebih sederhana dari instruksi pertama.

Selain itu, khusus untuk Register 0 dan Register 1 (R0 dan R1) masih punya
mempunyai kemampuan lain, kedua register ini bisa dipakai sebagai register
penampung alamat yang dipakai dalam penyebutan memori secara tidak langsung
(indirect memori addressing), hal ini akan dibicarakan lebih lanjut di belakang.

Empat kelompok Register Serba Guna itu tidak bisa dipakai secara bersamaan, saat
setelah reset yang aktip dipakai adalah Kelompok Register 0 (Register Bank 0).

Kalau yang diaktipkan adalah Kelompok Register 1, maka yang dianggap sebagai R0
bukan lagi memori-data nomor 0 melainkan memori-data nomor 8, demikian pula
kalau yang diaktipkan Kelompok Register 3 maka memori-data nomor 18h yang
menjadi R0.

Kelompok Register yang aktip dipilih dengan cara mengatur bit RS0 dan RS1 yang ada
di dalam Register PSW (Program Status Word), hal ini akan dibicarakan lebih lanjut di
bagian lain.

Memori level Bit

Memori-data nomor $20 sampai $2F bisa dipakai menampung informasi dalam level
bit. Setiap byte memori di daerah ini bisa dipakai menampung 8 bit informasi yang
masing-masing dinomori tersendiri, dengan demikian dari 16 byte memori yang ada
bisa dipakai untuk menyimpan 128 bit (16 x 8 bit) yang dinomori dengan bit nomor
$00 sampai $7F.

Informasi dalam level bit tersebut masing-masing bisa di-‘1’-kan, di - ‘0’-kan dengan
instruksi.

Pengertian di atas bisa dipikirkan seolah-olah MCS51 mempunyai jenis memori yang
lain, tapi sesungguhnya kedua jenis memori itu tetap sama, hanya saja cara
penyebutannya saja yang berlainan.

Instruksi SETB $00 mengakibatkan memori-bit nomor 0 menjadi ‘1’, atau sama
dengan membuat bit nomor 0 dari memori-data nomor $20 menjadi ‘1’, sedangkan
bit-bit lainnya dalam memori nomor $20 tidak berubah nilai.
Sedangkan instruksi CLR $7F mengakibatkan memori-bit nomor $7F menjadi ‘0’,
satau sama dengan membuat bit nomor 7 dari memori-data nomor $2F menjadi ‘0’,
sedangkan bit-bit lainnya dalam memori nomor $2F tidak berubah nilai.

Pengertian ini dipertegas dengn intsruksi-instruksi berikut:

MOV $21,#$0F

Sama dengan hasil kerja instruksi-instruksi berikut :

SETB $08

SETB $09

SETB $0A

SETB $0B

CLR $0C

CLR $0D

CLR $0E

CLR $0F

Instruksi MOV $21,#$0F mempunyai makna mengisi memori-data nomor $21 dengan
nilai $0F (atau bilangan biner 00001111), berarti mengisi memori-bit nomor $0F
sampai $08 dengan bilangan biner 00001111 yang bisa dinyatakan dengan 8 baris
instruksi berikutnya.

Special Function Register (SFR)

Register Khusus (SFR - Special Function Register) adalah satu daerah RAM dalam
IC keluarga MCS51 yang dipakai 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 umum dipakai untuk menyimpan data seperti
layaknya memori-data.

Meskipun demikian, dalam hal penulisan program SFR diperlakukan persis sama
dengan memori-data. Untuk mengisi memori-data nomor $60 dengan bilangan $0F,
instruksi yang dipergunakan adalah :

MOV $60,#$0F

Sedangkan untuk memenyimpan $0F ke Port 1 yang di SFR menempati memori-data


nomor $90, instruksi yang dipergunakan adalah :

MOV $90,#$0F

Membandingkan kedua instruksi di atas bisa dimengerti dalam segi penulisan


program SFR diperlakukan persis sama dengan memori-data.

Meskipun demikian, dalam menyebut memori-data bisa dipakai dua cara, yakni
penyebutan nomor memori secara langsung (direct memory addressing) dan
penyebutan nomor memori secara tidak langsung (indirect memory addressing)
lewat bantuan R0 dan R1. Tapi untuk SFR hanya bisa dipakai penyebutan nomor
memori secara langsung (direct memory addressing) saja. Hal ini akan dibahas lebih
lanjut di bagian lain.

Register Dasar MCS51

Untuk keperluan penulisan program, setiap mikroprosesor/mikrokontroler selalu


dilengkapi dengan Register Dasar. Ada beberapa macam register merupakan register
baku yang bisa dijumpai disemua jenis mikroprosesor/ mikrokontroler, ada register
yang spesifik pada masing-masing prosesor.

Yang termasuk Register Baku antara lain Program Counter, Akumulator, Stack
Pointer Register, Program Status Register. MCS51 mempunyai semua register baku
ini.
Sebagai register yang khas MCS51, antara lain adalah Register B, Data Pointer High
Byte dan Data Pointer Low Byte. Semua ini digambarkan dalam Gambar 4.

Di samping itu MCS51 masih mempunyai Register Serba Guna R0..R7 yang sudah
disebut dibagian atas.

Dalam mikroprosesor/mikrokontroler yang lain, register-register dasar biasanya


ditempatkan ditempat tersendiri dalam inti prosesor, tapi dalam MCS51 register-
register itu ditempatkan secara terpisah.

• Program Counter ditempatkan ditempat tersendiri di dalam inti prosesor

• Register Serba Guna R0..R7 ditempatkan di salah satu bagian dari memori-data

• Register lainnya ditempatkan dalam Special Function Register (SFR).

Gambar 4
Susunan Register Dasar MCS51

Kegunaan dan pemakaian register-register dasar tersebut antara lain sebagai berikut:

Program Counter

Program Counter (PC) dalam AT89C2051 merupakan register dengan kapasitas 11 bit
(dalam AT89C51 atau keluarga MCS51 lainnya kapasitas PC adalah 16 bit). Di dalam
PC dicatat nomor memori-program yang menyimpan instruksi berikutnya yang akan
diambil (fetch) sebagai instruksi untuk dikerjakan (execute).
Saat setelah reset PC bernilai 0000h, berarti MCS51 akan segera mengambil isi
memori-program nomor 0 sebagai instruksi. Nilai PC otomatis bertambah 1 setelah
prosesor mengambil instruksi 1 byte. Ada instruksi yang hanya 1 byte, ada instruksi
yang sampai 4 byte, dengan demikian pertambahan nilai PC setelah menjalankan
instruksi, tergantung pada jumlah byte instruksi bersangkutan.

Akumulator

Sesuai dengan namanya, Akumulator adalah sebuah register yang berfungsi untuk
menampung (accumulate) hasil hasil pengolahan data dari banyak instruksi MCS51.
Akumulator bisa menampung data 8 bit (1 byte) dan merupakan register yang paling
banyak kegunaannya, lebih dari setengah instruksi-instruksi MCS51 melibatkan
Akumulator.

Instruksi-instruksi berikut memperjelas pengertian di atas :

MOV A,#$20

ADD A,#$30

Instruksi pertama menyimpan nilai $20 ke Akumulator, instruksi kedua menambahkan


bilangan $30 ke Akumulator, hasil penjumlahan sebesar $50 ditampung di
Akumulator.

Stack Pointer Register

Salah satu bagian dari memori-data dipakai sebagai Stack, yaitu tempat yang dipakai
untuk menyimpan sementara nilai PC sebelum prosesor menjalankan sub-rutin, nilai
tersebut akan diambil kembali dari Stack dan dikembalikan ke PC saat prosesor
selesai menjalankan sub-rutin.

Stack Pointer Register adalah register yang berfungsi untuk mengatur kerja stack,
dalam Stack Pointer Register disimpan nomor memori-data yang dipakai untuk
operasi Stack berikutnya.

Program Status Word


Program Status Word (PSW) berfungsi mencatat kondisi prosesor setelah
melaksanakan instruksi. Pembahasan tentang PSW secara rinci akan dilakukan
dibagian lain.

Register B

Merupakan register dengan kapasitas 8 bit, merupakan register pembantu Akumulator


saat menjalankan instruk perkalian dan pembagian.

DPH dan DPL

Data Pointer High Byte (DPH) dan Data Pointer Low Byte (DPL) masing-masing
merupakan register dengan kapasitas 8 bit, tapi dalam pemakaiannya kedua register
ini digabungkan menjadi satu register 16 bit yang dinamakan sebagai Data Pointer
Register (DPTR).

Sesuai dengan namanya, Register ini dipakai untuk mengalamati data dalam
jangkauan yang luas.

Arrange By Budhy Sutanto

Posted by generated at 8:16 PM

Tags: Mikrokontroller 0 comments

Pengetahuan Dasar Mikrokontroller AT89Cx051

Meskipun termasuk tua, keluarga Mikrokontroler MCS51 adalah


Mikrokontroler yang paling populer saat ini. Keluarga ini diawali oleh Intel yang
mengenalkan IC Mikrokontroler type 8051 pada awal tahun 1980-an, 8051 termasuk
sederhana dan harganya murah sehingga banyak digemari, banyak pabrik IC besar
lain yang ikut memproduksnya, tentu saja masing-masing pabrik menambahkan
kemampuan pada mikrokontroler buatannya meskipun semuanya masih dibuat
berdasarkan 8051. Sampai kini sudah ada lebih 100 macam mikrokontroler turunan
8051, sehingga terbentuklah sebuah ‘keluarga besar mikrokontroler’ dan biasa
disebut sebagai MCS51.

Belakangan ini, pabrik IC Atmel ikut menambah anggota keluarga MCS51.


Atmel merupakan pabrik IC yang sangat menguasai teknologi pembuatan Flash
PEROM, jadi sudah selayaknya kalau Atmel memasukkan Flash PEROM ke dalam
mikrokontroler buatannya. Usaha Atmel ini ternyatakan bagaikan menambah ‘darah’
baru bagi keluarga MCS51, dengan adanya Flash PEROM yang harganya murah
maka tercapailah angan-angan banyak orang untuk membuat alat berbasis
mikrokontroler yang sesederhana mungkin dan semurah mungkin.

Produksi mikrokontroler MCS51 Atmel dibagi dua macam, yang berkaki 40 setara
dengan 8051 yang asli, bedanya mikrokontroler Atmel berisikan Flash PEROM
dengan kapasitas berlainan. AT89C51 mempunyai Flash PEROM dengan kapasitas 2
Kilo Byte, AT89C52 4 Kilo Byte, AT89C53 12 Kilo Byte, AT89C55 20 Kilo Byte
dan AT89C8252 berisikan 8 Kilo Byte Flash PEROM dan 2 Kilo Byte EEPROM.

Yang berkaki 20 adalah MCS51 yang disederhanakan, penyederhanaan


dilakukan dengan cara mengurangi jalur untuk input/output paralel, kemampuan yang
lain sama sekali tidak mengalami pengurangan. Penederhanaan ini dimaksudkan
untuk membentuk mikrokontroler yang bentuk fisiknya sekecil mungkin tapi
mempunyai kemampuan sama. Atmel memproduksi 3 buah mikrokontroler ‘mini’ ini,
masing-masing adalah AT89C1051 dengan kapasitas Flash PEROM 1 Kilo Byte,
AT89C2051 2 Kilo Byte dan AT89C4051 4 Kilo Byte. Ketiga mikrokontroler ini
secara umum disebut sebagai AT89Cx051.
Gambar 1
Susunan kaki AT89Cx051 dan kontruksi dalam chip

Konstruksi AT89Cx051

Gambar 1 memperlihatkan susunan kaki AT89C2051, susunan kaki ini sama persis
dengan AT89C1051 dan AT89C4051. Demikian pula ketiga IC mempunyai
konstruksi di dalam chip yang sama persis, perbedaannya hanya terletak pada
kapasitas Flash PEROM.

IC AT89Cx051 hanya memerlukan tambahan 3 kapasitor, 1 resistor dan 1 Xtal serta


catu daya 5 Volt. Kapasitor 10 mikro-Farad dan resistor 10 Kilo Ohm dipakai untuk
membentuk rangkaian reset, dengan adanya rangkaian reset ini AT89Cx051 otomatis
di-reset begitu rangkaian menerima catu daya. Xtal dengan frekuensi maksimum 24
MHz dan 2 kapasitor 30 pico-Farad dipakai untuk melengkapi rangkaian oscilator
pembentuk clock yang menentukan kecepatan kerja mikrokontroler.

Memori merupakan bagian yang sangat penting bagi mikrokontroler, diperlukan 2


macam memori yang sifatnya berbeda.

Read Only Memory (ROM) yang isinya tidak berubah meskipun IC kehilangan catu
daya, dipakai untuk menyimpan program, begitu di-reset mikrokontroler akan
langsung bekerja dengan program dalam ROM tersebut. Sesuai dengan keperluannya,
dalam susunan MCS51 memori penyimpan program ini dinamakan sebagai MEMORI
PROGRAM.

Random Access Memory (RAM) isinya akan sirna begitu IC kehilangan catu daya,
dipakai untuk menyimpan data pada saat program bekerja. Di samping untuk data,
RAM dipakai pula untuk Stack. RAM yang dipakai untuk menyimpan data ini disebut
pula sebagai MEMORI DATA.

Ada berbagai jenis ROM. Untuk mikrokontroler dengan program yang sudah baku
dan diproduksi secara massal, program diisikan ke dalam ROM pada saat IC
mikrokontroler dicetak di pabrik IC. Untuk keperluan yang jumlahnya tidak banyak
biasanya tidak dipakai ROM, tapi dipakai ROM yang bisa di-isi-ulang atau
Programable-Eraseable ROM (disingkat menjadi PEROM atau PROM). Dulu banyak
dipakai UV-EPROM (Ultra Violet Eraseable Programable ROM) yang kemudian
dinilai mahal harganya dan ditinggalkan setelah ada Flash PEROM yang harganya
jauh lebih murah.

Jenis memori yang dipakai untuk Memori Program AT89Cx051 adalah Flash
PEROM, program untuk mengendalikan mikrokontroler diisikan ke memori itu lewat
bantuan alat yang dinamakan sebagai AT89Cx051 Flash PEROM Programmer.

Memori Data yang disediakan dalam chip AT89Cx051 sebesar 128 byte, meskipun
hanya kecil saja tapi untuk banyak keperluan memori kapasitas itusudah mencukupi.

Sarana Input/Output yang disediakan cukup banyak dan bervariasi. AT89Cx051


mempunyai 17 jalur Input/Output paralel. Jalur Input/Output paralel ini dikenal
sebagai Port 1 (P1.0..P1.7) dan Port 3 (P3.0..P3.5 dan P3.7).

AT89Cx051 dilengkapi UART (Universal Asynchronous Receiver/Transmiter) yang


biasa dipakai untuk komunikasi data secara seri. Jalur untuk komunikasi data seri
(RXD dan TXD) diletakan berhimpitan dengan P1.0 dan P1.1 di kaki nomor 2 dan 3,
sehingga kalau sarana UART ini dipakai maka P1.0 dan P1.1 tidak lagi bisa dipakai
untuk jalur input/output paralel.

Timer 0 dan Timer 1 masing-masing adalah untaian pencacah biner 16 bit (16 bit
binary counter) di dalam chip yang dipakai sebagai sarana input/output yang bekerja
menurut fungsi waktu. Clock penggerak untaian pencacah ini bisa berasal dari
oscilator kristal atau clock yang diumpan dari luar lewat T0 dan T1. T0 dan T1
berhimpitan dengan P3.4 dan P3.5, sehingga P3.4 dan P3.5 tidak bisa dipakai untuk
jalur input/output paralel kalau T0 dan T1 dipakai.

AT89Cx051 mempunyai 5 sumber pembangkit interupsi, 2 diantaranya adalah sinyal


interupsi yang diumpankan ke kaki INT0 dan INT1, kedua kaki ini berhimpitan
dengan P3.2 dan P3.3 sehingga tidak bisa dipakai sebagai jalur input/output paralel
kalau INT0 dan INT1 dipakai untuk menerima sinyal interupsi.

3 sumber interupsi yang lain berasal dan sarana komunikasi data seri dan dari sistem
Timer 0 dan Timer 1.
Port 1, Port 2, UART, Timer 0, Timer 1 dan sarana lainnya merupakan register yang
secara fisik merupakan RAM khusus, yang ditempatkan di Special Function Register
(SFR).

Dasar kerja program

Program untuk mengendalikan kerja dari mikrokontroler disimpan di dalam memori


program. Program pengendali tersebut merupakan kumpulan dari instruksi kerja
mikrokontroler, 1 instruksi MCS51 merupakan kode yang panjangnya bisa satu
sampai empat byte.

Sepanjang mikrokontroler bekerja, instruksi tersebut byte demi byte diambil ke CPU
dan selanjutnya dipakai untuk mengatur kerja mikrokontroler. Proses pengambilan
instruksi dari memori program dikatakan sebagai ‘fetch cycles’ dan saat-saat CPU
melaksanakan instruksi disebuat sebagai ‘execute cycles’.

Semua mikrokontroler maupun mikroprosesor dilengkapi sebuah register yang


berfungsi khsus untuk mengatur ‘fetch cycles’, register tersebut dinamakan sebagai
Program Counter. Nilai Program Counter secara otomatis bertambah satu setiap kali
selesai mengambil 1 byte isi memori program, dengan demikian isi memori program
bisa berurutan diumpankan ke CPU.

Saat MCS51 di-reset, isi Program Counter di-reset menjadi 0000. Artinya sesaat
setelah reset isi dari memori program nomor 0 dan seterusnya akan diambil ke CPU
dan diperlakukan sebagai instruksi yang akan mengatur kerja mikrokontroler. Dengan
demikian, awal dari program pengendali MCS51 harus ditempatkan di memori nomor
0, setelah reset MCS51 menjalankan program mulai dari memori-program nomor
0000, dengan melakukan proses ‘fetch cycles’ dan ‘execute cycles’ terus menerus
tanpa henti.

Jika sarana interupsi diaktipkan, dan tegangan di kaki INT0 (kaki nomor 6) merubah
dari ‘1’ menjadi ‘0’, maka proses menjalankan program di atas akan dihentikan
sebentar, mikrokontroler melayani dulu permintaan interupsi, selesai melayani
permintaan interupsi CPU akan melanjutkan mengerjakan program utama lagi.
Untuk melaksanakan hal tersebut, pertama-tama CPU menyimpan nilai Program
Counter ke Stack (Stack merupakan satu bagian kecil dari data memori – RAM),
kemudian mengganti isi Program Counter dengan 0003. Artinya MCS51 akan
melaksanakan program yang ditempatkan di memori program mulai byte ke 3 untuk
melayani interupsi yang diterima dari kaki INT0. Adalah tugas programer untuk
mengatur agar program yang dipakai untuk melayani interupsi lewat INT0 diletakkan
disitu.

Selesai melayani interupsi, nilai Program Counter yang tadi disimpan ke dalam Stack
akan dikembalikan ke Program Counter, dengan demikian CPU bisa melanjutkan
pekerjaan di program Utama.

Selain INT0, AT89Cx051 bisa menerima interupsi dari INT1, dari UART dan dari
Timer. Agar permintaan interupsi itu bisa dilayani dengan program yang berlainan,
maka masing-masing sumber interupsi itu mempunyai nomor awal program untuk
layanan interupsi yang berlainan. Nomor-nomor awal tersebut digambarkan dalam
Gambar 2.

Gambar 2
Peta Memori Program
Arrange By Budy Sutanto

Posted by generated at 7:53 PM

Tags: Mikrokontroller 1 comments

Interface Untuk Berbagai Tipe Handphone

Handphone saat ini bukanlah alat yang mewah, hampir semua memilikinya. Logo
maupun ring tonenya dapat diganti sesuai dengan keinginan user. Dan saat ini logo
pada handphone sudah tidak lagi menjadi sekedar tampilan tetapi sudah menjadi
tren.

Dunia komunikasi saat ini sudah semakin canggih. Alat komunikasi sekarang tidak
hanya sekedar untuk berkomunikasi saja namun telah menjadi alat bantu hitung,
organizer sebagai pengingat, maupun sebagai sarana penghibur dengan permainannya
yang cukup menarik. Tampilan muka berbagai merek handphone juga semakin
bervariasi dan semakin menarik.

Kemampuan handphone saat ini juga memungkinkan agar kita dapat mengganti ‘start
up logo’ , logo maupun ‘ring sound’-nya. Selain itu dengan perangkat lunak tertentu
maka isi daftar telepon didalam SIM Card dapat dibaca maupun diedit. Untuk kasus
tertentu, misalnya pada SIM Card yang dipassword (SIM Card Lock) dapat dibuka
kembali tanpa memerlukan passwordnya (pin). Semakin banyak merek handphone
saat ini juga menimbulkan masalah pada interface handphone dengan PC. Hal ini
dikarenakan interface antara PC dengan handphone tidak mempunyai standar. Tidak
seperti protokol komunikasi RS232 yang sudah distandarkan dalam IEEE. Oleh
karena itu agar sebuah PC dapat berkomunikasi dengan berbagai macam handphone
maka perlu diketahui koneksi pada setiap handphonenya.

Dalam kesempatan ini akan dibahas koneksi antara PC dan Samsung SGH600,
Samsung SGH2100. Koneksi antara PC dengan Siemens S10/S11 maupun S1088.
Koneksi antara PC dengan Siemens C25, S25, C35, S35 atau M35.
Koneksi dengan Samsung SGH600/2100
Tabel 1

Tabel Koneksi Samsung SGH600/2100

Konektor Samsung SGH600/2100 dengan PC mempunyai pin yang paling banyak,


terdapat 18 pin. Tidak seperti konektor anatar Nokia dengan PC yang hanya 9 pin.

Gambar 1

Koneksi Pada Handphone Samsung SGH600/2100

Untuk dapat berkomunikasi dengan handphone maka diperlukan sebuah level


konverter dari RS232 level ke TTL level. Seperti tampak pada gambar 2.
Gambar 2

Skematik Diagram Interface PC dengan Handphone SGH600/2100

Dioda D6 dan D9 digunakan untuk menyearahkan tegangan yang masuk ke LM7805


dan juga dapat berfungsi sebagai proteksi agar arus dari DTR tidak masuk kembali ke
pin RTS dan begitu pula sebaliknya.

Pada rangakaian ini tidak memerlukan poser supply eksternal karena sudah
menggunakan supply dari PC, yaitu dengan menggunakan supply dari pin RTS dan
DTR. Hal ini disebabkan karena rangkaian ini hanya menarik arus yang cukup kecil
pada saat beroperasi.

Koneksi dengan Siemens S25, S35, M35

Koneksi dengan handphone Siemens pada dasarnya dapat menggunakan rangkaian


yang hampir sama dengan skematik rangkaian pada gambar 2. Namun perbedaanya
adalah pada perangkat lunak yang berkomunikasi dengan handphone Siemens
tersebut.

Konektor handphone Siemens S25, S35, M35, C35 dapat dilihat pada gambar 3.

Gambar 3

Konektor Handphone S25, C35, M35, S35

Untuk penggunaan dari masing-masing pin dari konektor di atas dapat dilihat pada
tabel dibawah ini :

Tabel 2

Tabel Pinout Konektor S25, S35, M35, dan C35


Sedangkan untuk handphone Siemens yang lain yaitu SL10 fungsi dan hubungan pada
konektornya dapat dilihat pada gambar 4. Pada handphone SL10 tampak bahwa
konektor terletak pada bagian dalam handphone sehingga untuk jenis handphone ini
akan lebih sukar dalam menghubungkannya dengan PC. Selain itu dibutuhkan suatu
konektor khusus untuk menghubungkannya dengan PC. Tetapi pada tipe S10 maupun
SL11 konektornya terletak diluar badan handphone seperti tipe handphone Siemens
yang lain seperti S25. Konektor untuk tipe handphone ini daat dilihat pada gambar 5.

Gambar 5

Pinout Konektor S10/S11

Fungsi dari tiap-tiap pinout konektor tersebut dapat dilihat pada tabel 3 dibawah ini.

Tabel 3

Tabel Pinout Konektor Handphone S10/S11


Walaupun mempunyai jumlah pin yang banyak pada konektornya namun untuk
berkomunikasi dengan PC, S10 maupun S11 hanya menggunakan 3 pin saja yaitu pin
14 dari Max232 yaitu Data Out, Pin 3 Data In dan pin ground saja. Pin-pin yang
lainnya tidak digunakan untuk berkomunikasi dengan PC namun digunakan untuk
antena dan pin untuk baterai. Dari tabel juga terlihat bahwa dari ke-16 pin yang ada
hanya digunakan 11 pin saja dan pin yang lainnya tidak mempunyai fungsi.

Untuk meng-interface-kan handphone S10/S11 dapat digunakan skematik rangakain


seperti pada gambar 6.

Gambar 6

Skematik Diagram Interface S10 dan S11 dengan PC


Pada gambar di atas power supply untuk rangkaian tetap digunakan power supply dari
PC karena rangkaian ini hanya membutuhkan arus yang sedikit supaya dapat bekerja
dengan baik.

Gambar 7

Skematik Diagram Interface S25, C25, M35 dengan PC

Dari semua skematik yang ada dapat dilihat bahwa semuanya hampir sama baik
koneksi dengan RS232 port maupun pada bagian power supply-nya namun hanya
berbeda pada bagian koneksi di port handphone-nya. Dari kondisi demikian bukanlah
tidak mungkin dibuat suatu interface universal untuk berbagai tipe handphone dengan
menggunakan kabel interface khusus untuk tiap-tiap handphonenya.

Koneksi Handphone Nokia 3210, 8210, 8810

Gambar 8

Konektor Handphone Nokia 3210

Pada handphone Nokia 3210, 3310, 8810, ataupun Nokia 8210 letak konektornya
berada di bawah baterai sehingga untuk handphone tipe ini lebih sukar untuk meng-
interface-kannya dengan PC. Selain itu konektor yang digunakan ukurannya lebih
kecil dan khusus. Semua handphone Nokia mempunyai 2 protokol dalam
berkomunikasi dengan PC yaitu protokol M2BUS, yang lebih dikenal dengan MBUS
dan protokol FBUS.

MBUS merupakan protokol komunikasi antara handphone Nokia dengan PC yang


half-duplex hanya menggunakan 2 pin saja, pin MBUS dan GND sedangkan protokol
FBUS merupakan komunikasi half-duplex yang menggunakan 3 pin, TxFBUS,
RxFBUS dan GND. Protokol MBUS merupakan protokol yang pertama kali dibuat
oleh Nokia agar handphone Nokia dapat berkomunikasi dengan PC. Protokol FBUS
merupakan protokol yang lebih baru, yang menawarkan kecepatan transfer data yang
lebih cepat. Service dan ‘adjustment’ yang dahulu hanya bisa menggunakan protokol
MBUS saja sekarang bisa dilakukan dengan menggunakan protokol FBUS.

Gambar 9

Konektor Handphone Nokia 3210

Gambar 10

Konektor Handphone Nokia 8810


Interface yang diperlukan agar handphone Nokia dapat berkumunikasi dengan PC
tidak terlalu berbeda dengan interface yang telah diuraikan di atas. Perbedaannya
terletak pada rangkaian output setelah MAX232. Pada skematik rangkaian yang
terdahulu output dari MAX232 langsung dihubungkan ke konektor handphone tetapi
tidak pada handphone Nokia. Hal ini disebabkan karena handphone Nokia dengan
protokol MBUS, komunikasinya data (transfer/receive data) hanya menggunakan pin
MBUS saja. Oleh sebab itu digunakan 2 buah transistor yang digunakan untuk
mengatur data yang ditransferkan ke PC atau data yang ditransferkan ke handphone.

Gambar 11

Skematik Diagram Interface Handphone Nokia dalam Mode M2BUS

Oleh Wibisono Koselan

Posted by generated at 6:38 PM

Anda mungkin juga menyukai