Microcontroller aka uC (8051 family)
Welcome guest, is this your first visit? Create Account now to join.
  • Login:

Welcome to the CHIP Forum.

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed.

+ Reply to Thread
Page 1 of 3 1 2 3 LastLast
Results 1 to 10 of 24

Thread: Microcontroller aka uC (8051 family)
  
Bookmark and Share

  1. #1
    Join Date
    Jul 2005
    Location
    di atas tanah, di kolong langit
    Posts
    175
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    14

    Microcontroller aka uC (8051 family)



    Pengenalan:
    Pertama tama, Apa itu mikrokontroler?
    sesuai namanya mikrokontroler adalah kontroler berukuran kecil (mikro). Karena ukurannya yang kecil, maka satu kekurangan nya yang pasti adalah ia rentan terhadap kerusakan secara fisik. Namun demikian meski ukurannya kecil, bukan berarti ia memiliki fungsi yang kecil atau sedikit.

    Ok segitu aja pengenalan awal tentang mikrokontroler, selanjutnya kita mau kenal mikrokontroler secara teknis.
    Apa aja sih isinya mikrokontroler, dan mengapa ia punya kemampuan mengontrol?
    untuk yang sudah familiar dengan isi komputer, mikrokontroler tak lain adalah komputer kecil dengan fungsi dan bagian-bagian yang terintegrasi.
    Mikrokontroler punya prosesor untuk memproses data, memori (RAM) untuk mengingat data, dan yang port I/O untuk input dan output data. 3 hal ini adalah bagian yang pasti dimiliki setiap komputer.
    Sekarang kira-kira udah ada bayangan apa itu mikrokontroler. Ya

    merek produsen mikrokontroler yang cukup dikenal dan digunakan saat ini
    PIC dari Microchip
    AVR, ATmega, Xmega, dari Atmel
    ZilogDAFTAR

    dalam pemrograman mikrokontroler ada beberapa hal penting yang perlu diketahui:
    1. Port
    2. Register
    a. A (accumulator)
    b. B
    c. General Purpose Register
    d. Special Function Register
    3. RAM
    Fitur tambahan dari mikrokontroler yang memudahkan kita
    4. Timer
    5. USART
    6. WatchDog Timer
    7. dll
    Last edited by oetomo; 15-12-2010 at 22:35. Reason: naikin daftar ahh
    ketika sesorang melihat ketidak beresan,
    orang bijak akan mencari pemecahan masalah tersebut
    orang biasa akan mempermasalahkan permasalahan tersebut, seringkali dengan menyalahkan orang lain.

    my path is my path, only and always The One guiding me

    ADA BAHASAN TENTANG MIKROKONTROLER NIH (8051 family)

  2. #2
    Join Date
    Jul 2005
    Location
    di atas tanah, di kolong langit
    Posts
    175
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    14

    PORT 8051 family



    PORT
    Pada keluarga mikrokontroler 8051, biasanya dikenal 4 port yakni P0, P1, P2, P3. Masing-masing port terdiri atas 8 pin yang diwakili oleh satu bit tiap-tiap port nya. Jadi karena ada 4 port dan masing-masing terdiri atas 8 pin, maka ada 32 pin pada mikrokontroler yang dapat kita gunakan untuk Input atau Output (I/O). Masing-masing pin dinamai sesuai dengan nomor urutnya misalnya P0 dari msb (most significant bit) ke lsb (least significant bit) adalah sebagai berikut: P0.7; P0.6; P0.5; P0.4; P0.3; P0.2; P0.1; P0.0
    Tiap tiap port ini dapat diprogram sesuai dengan kebutuhan. Satu hal yang penting jika menghendaki port sebagai input, maka ia harus di program untuk selalu “high”.
    (Apa itu high, dan apa itu port?)
    Port adalah sekumpulan pin yang dapat berfungsi sebagai input atau output (I/O). Sedangkan pin adalah kaki fisik dari mikrokontroler. (Kalau lihat fisik nya mikrokontroler ada kaki-kaki logamnya tuh itu dia namanya pin) Fungsi pin ini macam-macam, mulai dari tempat sumber tegangan (+/Vcc), acuan tegangan (-/Ground), pin input dan output (I/O yang kalau dikumpulin jadilah satu port/8 pin), dan fungsi-fungsi lainnya.

    Apa itu “High” dan “Low”
    Dalam dunia digital, kita hanya mengenal 1 dan 0. Maka, 1 sering direpresentasikan dengan “high” dan 0 sering direpesentasikan dengan “low”

    Nah hubungan antara High, Low ini dengan pin apa donk?
    High (1) direpresentasikan dengan hadirnya tegangan 5V pada pin (terhadap ground)
    Low (0) direpresentasikan dengan hadirnya tegangan 0V pada pin (terhadap ground)

    Tegangan high tidak harus persis 5 volt atau 0 volt. Mereka memiliki rentang (5-4,5 volt misalnya), bahkan untuk mikrokontroler lain (selain keluarga 8051) definisi high-nya bisa jadi berbeda pula, biasanya definisi high nya sesuai dengan besarnya tegangan supply (Vcc) sedangkan definisi low biasanya gak jauh-jauh dari 0 (ground).

    Ada satu istilah lagi yang gak jauh jauh dari pin, namanya “Active Low
    Istilah ini artinya kalau kita punya pin, dimana pin ini aktif kalau dia memiliki nilai low (0) fungsinya macam macam,
    contohnya pin reset, jika pin reset ini memiliki karakteristik active low, maka mikrokontroler hanya dapat berjalan dengan normal ketika nilai pin ini high (1 / bertegangan 5V) dan mikrokontroler akan ter-reset jika pin ini bernilai low (0 / bertegangan 0V)
    Istilah ini nantinya akan sangat berguna, karena gak hanya dipakai di pin dan port saja, terkadang juga dipakai di register dan pemrograman (nanti akan kita bahas ini)
    contoh pemrograman ASM pada port:
    Mov P0, #0FFh
    Artinya port P0 akan dimasukan nilai FF heksa desimal

    (apa itu heksa desimal?)
    Supaya gampang heksa desimal adalah seperti berikut:
    Karena satu port mengandung 8 pin, maka dia memiliki 8 digit biner
    1111 1111b = FFh
    gimana cara ngitungnya?
    biner = heksa desimal
    0001b = 1h
    0010b = 2h
    0011b = 3h
    0100b = 4h
    0101b = 5h
    1111b = Fh
    dah ngerti blom?
    kalo blom ngerti ntar gw bikin post khusus untuk membahas hal hal yang berkaitan secara tidak langsung dengan pemrograman mikrokontroler ini.
    Kalau kita mau dapat input dari port misal P0, dengan jumlah pin 8 buah, maka begini contohnya:
    Mov A, P0

    maka nilai dari port 0 (sekumpulan pin dari port 0) dari mikrokontroler akan diambil dari port terkait, kemudian dimasukan dalam register A.
    Contohnya, ketika port 0 dijadikan input. Maka seperti sudah dibahas di atas, jika ingin menjadikan suatu port sebagai input. Port tersebut harus diberi nilai high. Dengan menggunakan perintah berikut:
    Mov P0, #0FFh ; masukkan nilai high ke semua pin pada port 0
    Mov A, P0 ; ini sama dengan yang di atas ya.

    kalau nilai dari port 0 itu 1111 1011b maka nilai ini akan diambil oleh mikrokontroler dan dimasukan ke register A.

    sekilas tentang A
    (Accumulator) adalah suatu register (memori) yang dapat melakukan semua operasi perhitungan dan semua instruksi yang dimiliki oleh prosesor dari mikrokontroler. Contohnya adalah operasi perkalian, penjumlahan, pengurangan, dan instruksi pengaksesan register lainnya, atau pengaksesan RAM.
    Last edited by oetomo; 15-12-2010 at 22:34. Reason: post ini blom selesai, sabar ya. saran dan kritik ditunggu.

  3. #3
    Join Date
    Jul 2005
    Location
    di atas tanah, di kolong langit
    Posts
    175
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    14

    REGISTER secara umum



    REGISTER
    Sedikit berbeda dengan memori (RAM) yang hanya memiliki fungsi menyimpan.
    Register memiliki fungsi menyimpan, sekaligus sebagai tempat “bekerja” dari prosesor.(Accumulator)
    Register juga memiliki fungsi lain jika tidak sebagai tempat untuk bekerja, ia juga sebagai tempat menyimpan “cepat” dimana hanya butuh satu instruksi agar data dapat langsung disimpan pada register. (General Purpose Register)
    Register sebagai penghubung antara prosesor dengan RAM
    Register sebagai penghubung antara prosesor dari mikrokontroler ke fitur tambahannya (Timer, USART, WatchDog Timer, dll)

    contoh register sebagai tempat “bekerja”:
    Mov A, #34h ; register A diisi nilai 34 heksadesimal
    Mov B, #45h ; register B diisi nilai 45 heksadesimal
    Add A, B ; isi dari register A dan B dijumlahkan, kemudian hasilnya ditaruh pada register A

    pada contoh di atas, baris pertama dan baris kedua. Baik register A dan register B berfungsi menyimpan suatu “nilai” atau “angka”. Namun pada baris ketiga, register A khususnya, berfungsi sebagai tempat bekerja dari prosesor (ALU) untuk menjumlahkan nilai yang terdapat pada register A dan B.

    contoh register sebagai tempat simpan “cepat”
    ; (lanjutan contoh sebelumnya)
    Mov R1, A ; isi dari register A disimpan dulu di register R1

    pada keluarga 8051 GPR ada 8 buah R0-R7. Fungsi GPR ini sebagian besar adalah sebagai tempat simpan cepat. Pertanyaannya kenapa GPR ini dibutuhkan? Karena register yang dapat berfungsi sebagai tempat bekerja Prosesor (ALU) biasanya hanya satu atau dua buah. Seperti pada keluarga mikrokontroler 8051 ini, hanya 2 register yang memiliki kemampuan “serba bisa” seperti bisa mengerjakan instruksi ADD, SUBB, MUL, DIV, MOV, XMOV, dan instruksi lainnya. Register lainnya belum tentu bisa mengerjakan instruksi yang rumit seperti yang telah disebutkan sebelumnya. Agar register A dapat digunakan untuk kegiatan lain, maka data dalam register A harus dipindahkan terlebih dahulu ke register lain. Data dapat juga dipindahkan ke RAM, jika data yang dipindahkan tidak diperlukan lagi dalam waktu dekat. Karena prosedur untuk mengakses RAM cenderung lambat dan rumit, jika dibandingkan akses ke GPR (terutama pada mikroprosesor dengan RAM yang relatif besar dan menggunakan DRAM). Serta kemampuan RAM yang hanya berfungsi sebagai tempat menyimpan, sedangkan GPR memiliki kemampuan mengerjakan instruksi sederhana seperti INC, DEC.

    Contoh perhitungan matematika sederhana (mengapa kita memerlukan tempat simpan cepat)
    misal kita mau menghitung (10+11)*(12+14) (dalam heksa desimal aja ya biar gampang)
    maka kira kira begini cara bikin programnya:
    Mov A, #10h ; masukkan nilai 10h ke A
    Mov B, #11h ; masukkan nilai 11h ke B
    Add A, B ; jumlahkan nilai pada A dengan nilai pada B
    Mov R1, A ; simpan hasil penjumlahan pada R1, karena A akan dipakai pada perhitungan berikutnya
    Mov A, #12h
    Mov B, #14h
    Add A, B
    Mov B, R1 ; Panggil lagi nilai penjumlahan sebelumnya
    Mul A, B ; kalikan nilai A dengan nilai B (hasilnya ada pada A dan B, dimana A adalah LSB dan B adalah MSB)
    sekilas tentang istilah pada heksa desimal, bit, byte, lsb, msb, LSB, MSB, dan kawan kawannya
    1 Byte = 8 bit
    Jika berada dalam singkatan, Byte biasanya diwakili dengan “B” huruf besar sedangkan bit diwakili “b” huruf kecil. Penggunaannya juga berbeda. Byte biasanya digunakan pada untuk mengukur kapasitas suatu alat yang memiliki kapasitas besar. Contohnya pada HDD, memori flash, DRAM (Dynamic RAM). Sedangkan bit biasanya digunakan pada kecepatan koneksi suatu jaringan, atau kapasitas alat yang kecil. Contohnya pada kecepatan koneksi internet, LAN, WAN, EEPROM, SRAM (Static RAM).

    Byte = 1 Byte
    Word = 2 Byte
    Dword = 4 Byte (Double Word)
    Qword = 8 Byte

    Biasanya digunakan untuk mengukur basis bilangan maksimum dari suatu sistem, atau pada saat membuat program. Pada mikrokontroler 8051, basis bilangan yang digunakan adalah byte, meskipun pada instruksi perkalian mikrokontroler ini masih mampu menghasilkan bilangan sebesar word. Pada komputer yang biasa kita gunakan (32 bit) maka basis bilangan nya adalah Dword. Pada mikroprosesor 32bit ini baik instruksi maupun datanya biasanya berbasis bilangan dword atau 32 bit, namun jika mikroprosesor tersebut memiliki instruksi SSE yang memiliki instruksi sebesar 64 bit dan data 64 bit maka instruksi ini akan diproses dalam 2 siklus mesin pada mikroprosesor 32 bit biasa.

    msb, lsb, MSB, LSB
    msb = most significant bit
    lsb = least significant bit
    MSB = Most Significant Byte
    LSB = Least Significant Byte

    Untuk mendapatkan pengertian “mendalam” dari ke-empat istilah di atas harus baca dari awal dari quotation ini. Karena harus tau apa bedanya bit dan Byte.
    Last edited by oetomo; 26-12-2010 at 22:06. Reason: POST 3 (modified 1)

  4. #4
    Join Date
    Jul 2005
    Location
    di atas tanah, di kolong langit
    Posts
    175
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    14

    SRAM, cara pengaksesannya: Immediate, Direct, Indirect access, External, dan External



    SRAM, cara pengaksesannya: Immediate, Direct, Indirect access, External, dan External code

    Keluarga 8051 awalnya hanya memiliki SRAM sebanyak 128 byte saja, dengan alamat 00h-7Fh. Alamat 80h diberikan untuk register register khusus (SFR/ Special Function Register). Cara pengaksesannya sangat mudah yakni:

    mov A, #78h
    mov 45h, A

    2 baris program di atas digunakan untuk mengisi nilai 78 heksadesimal ke dalam SRAM beralamat 45h. Pada keluarga 8051, kedua baris di atas bisa langsung digantikan dengan satu baris “immediate” di bawah ini. pada beberapa jenis / keluarga mikrokontroler lain, Prosedur penyimpanan ke dalam memori (SRAM) seringkali harus menggunakan 2 kali seperti di atas (contohnya pada keluarga AVR).

    mov 45h, #78h

    pada beberapa contoh kode ASM, kita sering melihat tanda “#” pada kolom ketiga dari baris yang mengandung instruksi “mov” mari kita lihat apa bedanya:

    mov A, #45h ; Artinya nilai 45 heksa desimal disimpan dalam register A
    mov A, 45h ; Artinya nilai yang tersimpan dalam SRAM beralamat 45h disimpan dalam register A (jika melihat contoh kode program sebelumnya, nilai yang tersimpan dalam SRAM beralamat 45h adalah 78h)

    instruksi yang memiliki karakter “#” dinamakan immediate. atau “langsung/seketika” immediate addresing
    instruksi pada baris kedua merupakan direct addresing

    pengalamatan SRAM tidak langsung indirect addresing:

    pada pengalamatan SRAM indirect kita akan mengenal karakter “@” mode ini memiliki kegunaan yang sangat banyak. Contohnya pada mikrokontroler AT89S52 yang memiliki SRAM sebanyak 256 byte, alamat RAM mulai 128 (80h) tidak dapat dialamatkan secara langsung seperti contoh sebelumnya, karena akan merujuk pada SFR. Ingat khan mulai alamat 80h itu alamat SFR. Nah kalau begitu bagaimana kita mengakses alamat SRAM 80h dan seterusnya? gunakan indirect addresing / pengalamatan tidak langsung. pengalamatan tidak langsung ini dapat berlaku pada SEMUA alamat SRAM tidak hanya 80h ke atas aja ya. OK kita langsung aja lihat contoh deh.

    mov R0, #45h ; alamat SRAM yang ingin dituju disimpan dalam R0
    mov A, #78h ; nilai yang ingin disimpan pada SRAM yang dituju disimpan dalam A
    mov @R0, A ; penulisan secara “tidak langsung” dilakukan disini

    Pada contoh di atas, dilakukan penulisan ke alamat SRAM 45h. Pada tahap pertama alamat yang dituju disimpan dalam R0. Kemudian nilai yang ingin disimpan dalam SRAM yang dituju disimpan dalam A. pada baris ketiga inilah instruksi indirect addressing dilakukan, yakni penulisan ke alamat SRAM yang dituju.

    mov R0, #45h
    mov A, @R0

    Contoh di atas memiliki fungsi kebalikan dari contoh sebelumnya. Jika contoh sebelumnya berfungsi menyimpan nilai secara tidak langsung ke alamat SRAM yang dituju maka contoh di atas berfungsi mengambil nilai secara tidak langsung dari alamat SRAM yang dituju.

    Selain berfungsi mengakses alamat SRAM 80h ke atas indirect addresing ini memiliki fungsi lainnya. Yakni memudahkan kita untuk menulis ke alamat RAM tertentu secara rekursif (berulang ulang) tanpa menulis program berulang ulang (yang sering bikin program pasti tau istilah LOOPING khan?) gimana cara pakainya? kita akan pelajari ini pada post berikutnya mengenai “percabangan” alias branch (bahasa kerennya di mikroprosesor)

    next External, dan External code
    External movx a, @dptr
    External code movc a, @a+dptr
    (dilanjut kalau ada kesempatan yah, jangan takut pasti dilanjut koq)
    Last edited by oetomo; 02-01-2011 at 23:11.

  5. #5
    Join Date
    Jul 2005
    Location
    di atas tanah, di kolong langit
    Posts
    175
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    14

    Re: Microcontroller aka uC (8051 family)



    4 reserved for next post

  6. #6
    Join Date
    Jul 2005
    Location
    di atas tanah, di kolong langit
    Posts
    175
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    14

    Re: Microcontroller aka uC (8051 family)



    5 reserved for next post

  7. #7
    Join Date
    Jun 2010
    Location
    Laboratory
    Posts
    137
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    4

    Re: Microcontroller aka uC (8051 family)



    mantabbbbb!
    thread yg kyk gini nih yg perlu di sticky

  8. #8
    Join Date
    Jun 2010
    Location
    Laboratory
    Posts
    137
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    4

    Re: PORT 8051 family



    Quote Originally Posted by oetomo View Post
    PORT
    Pada keluarga mikrokontroler 8051, biasanya dikenal 4 port yakni P0, P1, P2, P3. Masing-masing port terdiri atas 8 pin yang diwakili oleh satu bit tiap-tiap port nya. Jadi karena ada 4 port dan masing-masing terdiri atas 8 pin, maka ada 32 pin pada mikrokontroler yang dapat kita gunakan untuk Input atau Output (I/O). Masing-masing pin dinamai sesuai dengan nomor urutnya misalnya P0 dari msb (most significant bit) ke lsb (least significant bit) adalah sebagai berikut: P0.7; P0.6; P0.5; P0.4; P0.3; P0.2; P0.1; P0.0
    Tiap tiap port ini dapat diprogram sesuai dengan kebutuhan. Satu hal yang penting jika menghendaki port sebagai input, maka ia harus di program untuk selalu “high”.


    contoh pemrograman ASM pada port:
    Mov P0, #0FFh
    Artinya port P0 akan dimasukan nilai FF heksa desimal



    Kalau kita mau dapat input dari port misal P0, dengan jumlah pin 8 buah, maka begini contohnya:
    Mov A, P0

    maka nilai dari port 0 (sekumpulan pin dari port 0) dari mikrokontroler akan diambil dari port terkait, kemudian dimasukan dalam register A.
    Contohnya, ketika port 0 dijadikan input. Maka seperti sudah dibahas di atas, jika ingin menjadikan suatu port sebagai input. Port tersebut harus diberi nilai high. Dengan menggunakan perintah berikut:
    Mov P0, #0FFh ; masukkan nilai high ke semua pin pada port 0
    Mov A, P0 ; ini sama dengan yang di atas ya.

    kalau nilai dari port 0 itu 1111 1011b maka nilai ini akan diambil oleh mikrokontroler dan dimasukan ke register A.
    mungkin perlu ada gambar konfigurasi pin untuk para IC 8051 family dan 8052 family
    Last edited by WOLVER1NE; 16-12-2010 at 03:05.

  9. #9
    Join Date
    Jul 2005
    Location
    di atas tanah, di kolong langit
    Posts
    175
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    14

    Re: PORT 8051 family



    Betul bro, dari awal juga saya maunya pakai gambar, dan bagian bagian yang diquote, maunya di spoiler tapi masalahnya adalah saya ndak tau gimana caranya (dan blum ada waktunya untuk cari tau)

    supaya lebih cepat tolong dikasi tahu yah gimana caranya.

    hehehe
    trims.

    Quote Originally Posted by WOLVER1NE View Post
    mungkin perlu ada gambar konfigurasi pin untuk para IC 8051 family dan 8052 family

  10. #10
    Join Date
    Dec 2010
    Posts
    22
    Thanks
    0
    Thanked 1 Time in 1 Post
    Rep Power
    0

    Re: PORT 8051 family



    Quote Originally Posted by oetomo View Post
    Betul bro, dari awal juga saya maunya pakai gambar, dan bagian bagian yang diquote, maunya di spoiler tapi masalahnya adalah saya ndak tau gimana caranya (dan blum ada waktunya untuk cari tau)

    supaya lebih cepat tolong dikasi tahu yah gimana caranya.

    hehehe
    trims.
    reserved tempat dulu deh
    thread bagus nih, ramein lagi donk


 

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

     

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts