Monday, November 7, 2011

Compailer SDCC dan Editor

SDCC (Small Device C Compailer), ini adalah compailer C yang dikhususkan untuk mikrokontroller Intel 8051, Maxim 80DS390Zilog Z80Z180Rabbit 2000, Motorola 68HC08Microchip PIC16PIC18 series. SDCC ini gratis dan tentunya Open Source dan didistribusikan dibawah GNU General Public License (GPL).

Untuk Editor banyak yang mendukung dengan SDCC, saya menggunakan Mide-51MCU 8051 IDE dan Elclipse, untuk editor Mide-51 dan MCU 8051 IDE langsung include dengan SDCC, Dan Eclipse disini Tutorialnya



MIDE-51
MCU 8051 IDE
Eclipse-cpp-galileo-SR2

Tips untuk Eclipse
Setelah anda unzip folder eclipse tempatkan folder tersebut di program file seperti C:\program file/eclipse
lalu download sdcceclipse 1.0.0 dan unzip lagi, setelah di unzip didalam folder ada 2 folder lagi yaitu features dan plugins copy semua file didalam folder features, lalu masuk di C:\program file/eclipse/features,
lakukan hal yang sama juga dengan file yang didalam plugins.

jika sudah anda buat project langkahnya:
1. file -> New -> C Project. Pastikan seperti dibawah ini


2. Tuliskan project anda klik Next -> pastikan kedua opsi itu tercetang lalu pilih ->Advenced settings
3. Pilih C/C++ Build -> didalam tab Builder Settings -> Builder type -> combo box pilih Internal builder 
4. expand C/C++ Builder -> Settings -> pilih tab Build Artifact ->Artifact extention : pilih hex.
    seperti dibawah :


5. ok jika scriptnya siap, tekan icon hammer, pastikan release tercentang.
6. silahkan cek di folder project anda.

Selamat Mencoba :)

Thanks

Saturday, November 5, 2011

Pembacaan dan Penulisan Port pada 8051

Assalamualaikum
Salam
Ok sekarang kita akan membahas tentang Pembacaan dan Penulisan Port pada microkontroller MCS 51 series

Simple Teory
Microkontroller 8051 / MCS 51 mempunyai 4 buah Port ini tergantung series micro-nya, port ini difungsikan sebagai masukkan dan keluaran. Pengubahan fungsi keluaran dan masukan pada port tidak perlu ada proses inisialisasi. 4 port ini berada di Spesial Fungtion Register (SFR ). no port dan nama serta alamat dapat dilihat table dibawah ini.

NoNamaAlamat
1P10x80
2P20x90
3P30x0A
4P40x0B

semua port dilengkapi dengan resistor Pull-Up, kecuali P0 yang open drain. Oleh kerena itu P0 membutuhkan resistor Pull-Up secara eksternal.
Port dapat diakses (baca atau tulis) secara byte (8 bit) atau bit( 0 dan 1). operasi yang berhubungan dengan operasi baca tulis port dapat berupa operasi Bitwise atau logika.
nah untuk pembacaan port dan penulisan port ini sering digunakan mengambil keputusan. salah satu cara mengambil keputusan dengan metode ifelseelse if.
contoh :

if (penyeleksian)
{
  Pernyataan1;
}
else if (penyeleksian)
{
Pernyataan2;
}
else
{
pernyataan3;
}
ok langsung aja anda bisa langsung melihat video dan pembahasan dibawah ;)

ok dibawah ini simple scriptnya
#include <at89x51.h> //preprocessor atau register untuk 8051
void main()
{
unsigned char buffer; // deklarasi var buffer type char takbertanda -> di video "bertanda"  heheh males ralatnya disini aja di ralat :D
while(1) // dieksekusi terus-menerus
{
buffer = P1;  //nilai Port 1 di berikan pada buffer
P2 = buffer;  // lalu Port 2 kerjakan apa yang diperintahkan Port 1 -> di video "port 1" heheh males ralatnya disini aja di ralat :D
}
}


Pengambilan Keputusan dengan if
/*
Pembacaan dan penulisan port
Bitwise dan penyeleksian if
adhyrasade.wordpress.com
*/
#include <at89x51.h>//preprocessor atau register untuk 8051
 int main()
{
unsigned char buffer;
char A,B,C;
A=P2_0; //P1_0 ini contoh untuk mengakses Port per bit
B=P2_1;
C=P2_2;
for(;;) // sama dengan while(1)
{
  if(A&B) //a dan b bernilai 1 maka akan menjalakan pernyataan didalam kalang.
  {
  buffer = 0x0f;
  P2 = buffer;  //P2 = 00001111
  buffer = 0;
  return 0;
  }
  else if((A&B)|(B&C)) //ab = 0, bc =0 pernyataan tidak dijalakan
  {  P2 = 2;  }                        //ab = 0, bc =1 pernyataan didalam kalang dijalakan P2 = 00000010
                                                 //ab = 1, bc =0 pernyataan didalam kalang dijalakan
                                                 //ab = 1, bc =1 pernyataan didalam kalang dijalakan
  else
  {  P2 = 0;  }    // P2 = nol logic low
 } //end for(;;)
}//end

Perlengkapan
Editor dan Simulator Menggunakan Keil uv4
semoga bermanfaat :)
thanks







Organisasi Komputer

Pengenalan Komputer


Komputer adalah sebuah mesin hitung elektronik yang secara cepat menerima informasi masukan digital dan mengolah informasi tersebut menurut seperangkat instruksi yang tersimpan dalam komputer tersebut dan menghasilkan keluaran informasi yang dihasilkan setelah diolah. Daftar perintah tersebut dinamakan program komputer dan unit penyimpanannya adalah memori komputer.
Dalam bentuk yang paling sederhana komputer terdiri dari lima bagian utama yang mempunyai fungsi sendiri-sendiri. Unit-unit tersebut adalah: masukan, memori, aritmetika dan logika, keluaran dan kontrol seperti pada gambar dibawah ini.
  • Unit masukan menerima informasi yang yang dikodekan dari operator manusia lewat alat-alat elektromekanik seperti papan ketik pada suatu terminal video, atau dari komputerkomputer lain lewat jalur komunikasi digital.
  • Informasi yang diterima dan disimpan dalam memori untuk dipergunakan kelak, atau langsung diolah oleh rangkaian aritmetika dan logika untuk melaksanakan operasi yang diinginkan.
  • Langkah-langkah pengolahan ditentukan oleh program yang disimpan dalam memori.
  • Akhirnya hasil-hasil yang diperoleh dikirimkan kembali keluar melalui unit keluaran. Seluruh kegiatan ini dikoordinasi oleh unit kontrol.
Sejarah Singkat Komputer
  • Generasi Pertama : Tabung Vakum (1945 – 1955) ENIAC
ENIAC (Electronic Numerical Integrator And Computer), pada tahun 1946 dirancang dan dibuat oleh John Mauchly dan John Presper Eckert di Universitas Pennsylvania merupakan komputer digital elektronik untuk kebutuhan umum pertama di dunia. ENIAC dibuat di bawah lembaga Army’s Ballistics Research Laboratory (BRL). Sebuah badan yang bertanggung jawab dalam pembuatan jarak dan tabel lintasan peluru kendali senjata baru. Sebelumnya tugas ini dilakukan oleh kurang lebih 200 personil dengan menggunakan kalkulator untuk menyelesaikan persamaan matematis peluru kendali yang memakan waktu lama.
ENIAC mempunyai berat 30 ton, bervolume 15.000 kaki persegi, dan berisi lebih dari
18.000 tabung vakum. Daya listrik yang dibutuhkan sebesar 140 KW. Kecepatan operasi
mencapai 5.000 operasi penambahan per detik. ENIAC masih merupakan mesin desimal,
representasi data bilangan dalam bentuk desimal dan arimetiknya dibuat dalam bentuk desimal.
Memorinya terdiri atas 20 akumulator, yang masing – masing akumulatornya mampu
menampung 10 digit desimal. Setiap digit direpresentasikan oleh cincin yang terdiri atas 10 buah
tabung vakum. Kekurangan utama mesin ini adalah masih manual pemrogramannya, yaitu
dengan menyetel switch – switch, memasang dan menanggalkan kabel – kabelnya. ENIAC
selesai pada tahun 1946 sejak proposal diajukan tahun 1943, sehingga tahun 1946 merupakan gerbang bagi zaman baru komputer elektronik.
  • Pengembangan ENIAC
John Van Neumann seorang ahli matematika yang merupakan konsultan pembuatan ENIAC pada tahun 1945 mencoba memperbaiki kelemahan ENIAC dengan rancangan komputer barunya, bernama EDVAC (Electronic Discrete Variable Computer) dengan konsep program tersimpan (storedprogram concept).

  • Tahun 1946 komputer dengan stored-program concept dipublikasikasikan, yang kemudian di kenal dengan Komputer IAS (Computer of Institute for Advanced Studies). Struktur komputer IAS terlihat pada gambar diatas. Komputer ini terdiri :
  1. Memori Utama, untuk menyimpan data maupun instruksi.
  2. Arithmetic Logic Unit (ALU), untuk mengolah data binner.
  3. Control Unit, untuk melakukan interpretasi instruksi – instruksi di dalam memori
  4. sehingga adanya eksekusi instruksi tersebut.
  5. I/O, untuk berinteraksi dengan lingkungan luar.
Memori IAS terdiri atas 1.000 lokasi penyimpanan yang disebut word. Word terdiri atas
40 binary digit (bit). Data maupun instruksi disimpan dalam memori ini, sehingga data maupun
instruksi harus dikodekan dalam bentuk biner. Format memori terlihat pada gambar 2.2. Setiap
bilangan terdiri atas sebuah bit tanda dan 39 bit nilai. Sebuah word terdiri atas 20 bit instruksi
dengan masing – masing 8 bit kode operasi (op code) dan 12 bit alamat.


Struktur detail komputer IAS serperti  gambar dibawah.



Gambar ini menjelaskan:
bahwa baik unit kontrol maupun ALU berisi lokasi – lokasi penyimpanan, yang disebut register,
yaitu :
  • Memory Buffer Register (MBR), berisi sebuah word yang akan disimpan di dalam memori atau digunakan untuk menerima word dari memori.
  • Memory Address Register (MAR), untuk menentukan alamat word di memori untuk dituliskan dari MBR atau dibaca oleh MBR.
  • Instruction Register (IR), berisi instruksi 8 bit kode operasi yang akan dieksekusi.
  • Instruction Buffer Register (IBR), digunakan untuk penyimpanan sementara instruksi sebelah kanan word di dalam memori.
  • Program Counter (PC), berisi alamat pasangan instruksi berikutnya yang akan diambil dari memori.
  •  Accumulator (AC) dan Multiplier Quotient (MQ), digunakan untuk penyimpanan sementaraoperand dan hasil ALU. Misalnya, hasil perkalian 2 buah bilangan 40 bit adalah sebuah bilangan 80 bit; 40 bit yang paling berarti (most significant bit) disimpan dalam AC dan 40 bit lainnya (least significant bit) disimpan dalam MQ.
IAS beroperasi secara berulang membentuk siklus instruksi. Komputer IAS memiliki 21
instruksi, yang dapat dikelompokkan seperti berikut ini :
  •  Data transfer, memindahkan data di antara memori dengan register – register ALU atau antara dua register ALU sendiri.
  •  Unconditional branch, perintah – perintah eksekusi percabangan tanpa syarat tertentu.
  •  Conditional branch, perintah – perintah eksekusi percabangan yang memerlukan syarat tertentu agar dihasilkan suatu nilai dari percabangan tersebut.
  •  Arithmetic, kumpulan operasi – operasi yang dibentuk oleh ALU.
  •  Address Modify, instruksi – instruksi yang memungkinkan pengubahan alamat saat di komputasi sehingga memungkinkan fleksibilitas alamat yang tinggi pada program.
Ini dulu yah nanti dilanjutkan ;)

Programmer USBAsp for MCS-51 Series AT89s5X & AT89sXXXX

Akhirnya selesai juga USB ASP, oh iya ini donwloader hanya untuk keluarga MCS 51, gara2 project ini nich ampe ane g ngumpul tugas microkontroller padahal program ne udah jadi tinggal diprogram aja masuk ke chip ane, masalah ane nyari tutorialnya kesana-kemari :)

Part List:
  1. resistor 1kΩ           1/4w     5%  x2
  2. resistor 1.5kΩ       1/4w     5%
  3. resistor 68Ω          1/4w     5%  x2
  4. dioda Zener 3.6 v
  5. Led Merah 3mm
  6. Led Hijau 3 mm
  7. ATmega 8
  8. USB Connector type B
  9. Capasitor 22pf     x4
  10. Elco 4.7uf  16v
  11. Elco 1 uf 16v
  12. Crystal 12Mhz     x2
  13. Pin Header (1/4 sendok makan hahahahahaa :) canda dikit ;) ) biasanya 1 set ada 40 pin

dibawah ini gambar schematic Usb Asp yang di design menggunakan eagle
dan ini hasil routing nya untuk PCB
dan yang ini hasilnya ;)

untuk PCB nya ane menggunkan double layer. tapi ini juga bisa ko menggunakan single layer.
wire yang berwarna merah itu layer atas dan yang berwarna biru itu layer bawah.
jika anda ingin mencoba double layer jangan lupa layer atas diprint mirror yah!,  biar vias bawah dan atas  di gabung bisa nyambung.
ok untuk schematic bisa didownload disini
dan frimware + driver win 7 + program masuk disini, jangan bingung yah klo dah didalam situsnya ?????? :D kiding dikitlah.
ok ini langsung aja ga perlu masuk situs orang. disni aja di download
Proses Instalasi dan Pemakaian
sambil ente nyetak PCB + nyolder ane ngopi dulu yah sambil ngerokok ;)
ok langsung saja tahapnya :
  1. didalam folder progisp172 include firmware atmega 8. ada file main.hex ini file firmware untuk dimasukkin ke chip atmega 8 usbasp. caranya masukkin ke chip,  ente pinjam programmer yang untuk AVR di teman ente lalu masukin file main.hex ke dalam chip. atau PC ente tersedia port parallel sialakan kunjungin disini.

    Setting Fuse Bit
    Sebelum download firmware ke chip harap diikut instruksi setting fuse berikut agar chip berjalan dengan baik.

    Fuse Hi-Byte = 0xC9 (RstDisbl=1, WdtOn=1, SpiEn=0, CkOpt=0, EESave=1, BootSz1=0, BootSz0=0, BootRst=1), and
    Fuse Lo-Byte = 0xEF (BodLevel=1, BodEn=1, Sut1=1, Sut0=0, CkSel3=1, CkSel2=1, CkSel1=1, CkSel0=1).

  2.  jika proses ke 1 ente blom ngerjain, qt hanya bisa berdoa moga-moga main.hex nya masuk sendiri di dalam chip heheeehe :D
  3. ok ane dah anggap proses ke 1 berhasil. lalu proses selanjutnya sambungkan kabel usb dari komputer ke programmer usbasp yang anda telah buat. jika firmware-nya berhasil tampilannya seperti dibawah ini.
dan jika blom berhasil seperti dibawah ini:
ini bisa saja karena mungkin ente salah masang chip atau wire di pcb ada yang cross. di cek terlebih dahulu.
4. Ok lanjutkan Seperti gambar dibawah ini:


4a. lalu Pilih Browse my computer for driver software seperti gambar dibawah ini:



4b. selajutnya cari file "progisp172 include firmware atmega 8" yang telah di download cari folder seperti pada gambar dibawah ini:


4c. selanjutnya klik  "Install this driver software anyway" seperti gambar dibawah ini:


sabar yah... lagi proses.......
setelah selesai kabbommmmm :D Berhasill.......


Proses penggunaan

5a. jalankan program progisp v1.72  jika programmer usbasp anda masih terhubung dengan komputer, perhatikan petunjuk  gambar dibawah.


seperti petunjuk pada gambar bahwa program progips v1.72 dan programmer usbasp anda telah terhubung dengan baik.
jika blom coba anda angkat usbasp anda sekitar 1 meter lalu lepaskan.. heheeheheehe :D kiding serius amat sih bacanya.. :D
ok..ok serius lagi yah, ini mungkin anda salah driver coba ulang langkah ke 4b.

5b. Jika ente menggunakan chip AT89s52 atau yang lainnya dikonfigurasi dulu di progisp pilih select chip lalu klik RD (read signature) ini proses untuk pengenalan chip dengan progisp jika berhasil maka hasilnya Read ID Succesfully (10/31/2011 6:41:35PM).

5c. Proses download program ke chip.
pastikan Read Signature anda berhasil, lalu pilih file -> load file cari file hex anda yang ingin di masukkin ke dalam chip, lalu pilih Command -> Write Flash,  dibawah ini hasil proses sampai ke Read Flash


Ok Semoga bermanfaat

Thanks
Sumber :
www.zhifengsoft.com
www.fischl.de/usbasp/
http://yusisukmalia.wordpress.com/category/usb-asp/
http://www.8051projects.info/blogs/post/USB-8051AVR-programmer.aspx
http://dsaprojects.110mb.com >> special thanks David Setya Atmaja

Mengontrol Led berbasis Client Server menggunakan Port Parallel

Sebenarnya tutorial ini saya buat udah sekitar 3 bulan yang lalu dihitung sejak postingan ini tentunya. dan ini adalah tugas dari kampus yang harus dikumpulkan di youtube. ok langsung saja untuk pemograman visual saya menggunakan borland c++ builder dan metodenya saya menggunakan pemograman socket.

ok saya tidak akan menulis banyak karna video saya yang akan berbicara :D

InsyaAllah jika ada waktu nanti saya akan membahas secara detail dengan tulisan tentunya ;)


semoga  bermanfaat
jika ada pertanyaan silahkan tinggalkan pesan :)

Tipe Data dan Kelas Memory pada bahasa C/C++ Pemograman Mikrokontroller 8051

Type Data

Setiap bahasa pemrograman pasti mempunyai type data, dan kali ini saya akan membahas type data yang umum didalam C / C++ .
Lalu apa itu type data? dan apa gunanya type data itu?

Lalu apa itu type data?
Type data adalah suatu Storage (Peyimpanan) yang mempunyai ukuran dan satuan, masing-masing type data mempunyai rentang ukuran berbeda-beda dan tentunya satuannya pasti bit, selama yang saya tau satuannya hingga mencapai byte( 8bit ) tergantung anda mendeskripsikan bagaimana untuk masalah satuannya!.


Lalu guna dari type data itu apa ? 
Gunanya / tujuanya adalah agar data yang akan diproses disimpan terlebih dahulu didalam memory sebelum di proses oleh CPU, lihat pada table dibawah type data dan rentang ukuran ruang peyimpanan masing-masing type data tersebut didalam memory , sesuai dengan yang dibahas diatas type data itu pasti nilainya berbeda-beda, Contohnya jika seorang programmer ingin menyimpan data lebih dari 1 byte berarti dia harus menggunakan type data yang lebih besar dari 1 byte berarti dia harus menggunakan type data "int (4byte)" bukan "char (1byte)".
Table 11.10.31 Ukuran Penyimpanan dan Rentang Nilai type data integer standart.

Type
Storage size
Minimum value
Maximum value
char
One byte
-128
255
unsigned char
one byte
0
255
signed char
one byte
-128
127
int
two bytes or four bytes
-32,768 or -2,147,483,648
32,767 or 2,147,483,647
unsigned int
two bytes or four bytes
0
65,535 or 2,147,483,647
short
two bytes
-32,768
32,767
unsigned short
two bytes
0
65,535
long
four bytes
-2,147,483,648
2,147,483,647
unsigned long
four bytes
0
4,294,967,295
long long(C99)
eight bytes
-9,223,372,036, 854,775,808
9,223,372,036, 854,775,807
unsigned long long (C99)
eight bytes
0
18,446,744,073, 709,551,615
Void


Tidak bertipe

Mari kita telusuri size dari tipe data masing-masing dengan menggunakan script simpel berikut:

#include <stdio.h>
#include <windows.h>
#include <winsock.h>
#include <String.h>
#include <iostream>

using namespace std;

int main()
{
  printf(" type int \t\t%d byte \r\n",sizeof(int));
  printf(" type char \t\t%d byte \r\n",sizeof(char));
  printf(" type float \t\t%d byte \r\n",sizeof(float));
  printf(" type long \t\t%d byte \r\n",sizeof(long));
  printf(" type double \t\t%d byte \r\n",sizeof(double));
  printf(" type bool \t\t%d bit \r\n",sizeof(bool));
  printf(" type long double \t\t%d byte \r\n",sizeof(long double));
  printf(" type WORD \t\t%d byte \r\n",sizeof(WORD));
  printf(" type WSADATA \t\t%d byte \r\n",sizeof(WSADATA)); // lib winsock
  printf(" type DWORD \t\t%d byte \r\n",sizeof(DWORD)); //lib windows
  printf(" type SOCKET \t\t%d byte \r\n",sizeof(SOCKET)); //winsock
  printf(" type LPVOID \t\t%d byte \r\n",sizeof(LPVOID)); //windows
  printf(" type LPDWORD \t\t%d byte \r\n",sizeof(LPDWORD)); //windows
  getchar();
  return 0;
}


Result


dan yang dibawah ini adalah type data khusus untuk Microkontroller MCS-51
Type Data Khusus untuk MCS-51
No
Type Data
Lebar Data
Jangkauan
1
bit
1 bit
0 atau 1
2
sfr
8 bit
0 - 255
3
sbit
1 bit
0 atau 1

Kelas Memory
  1. code (memori program)
  2. data (memori data internal)
  3. idata (memori data internal)
  4. bit (memori data internal)
  5. sfr (Special Fungtion Register)
  6. sbit (Special Fungtion Register)
  7. pdata (Memori data eksternal)
  8. xdata (Memori data eksternal)
Sumber:
Totok Budioko, “Belajar Dengan Mudah Dan Cepat Pemrograman Bahasa Dengan SDCC  pada
Mikrokontroler AT89X051/AT89C51/52 Teori, Simulasi dan Aplikasi “ Cetakan
Pertama GAVA MEDIA, Yogyakarta, 2005.

Pengenalan Mikrokontroller 8051 series MCS-51

Mikrokontroller 8051 dikembangkan oleh Intel pada tahun 1980 hingga 1990, Mikrokontroller 8051 jauh sebelum dikembangan, pendahulunya adalah 8048 yang digunakan didalam system keyboard pertama oleh PC IBM. Bahkan uC ini digunakan sebagai bahan utama untuk industry aplikasi controller yaitu PLC (Programmable Logic Controller). Mikrokontroller 8051 adalah 8-bit processor ini artinya Processor tersebut berkerja dengan 8 bit data dalam suatu waktu. uC 8051 ini mempunyai
  1. 8-bit ALU, Accumulator dan 8-bit register
  2. 8-bit Bus Data - Hal ini dapat mengakses 8 bit data dalam satu operasi
  3. 16-bit alamat bus
  4. 128 byte RAM
  5. 4 kbyte kapasitas ROM
  6. 2 timer (16 bit timer/counter)
  7. 1 serial
  8. 4 Port I/O
  9. 6 Interrupt sumber ini tergantung versi uC.
Didalam Mikrokontroller pada umumnya terdapat bagan-bagan seperti gambar dibawah, mari kita mengulas satu per satu dari bagan yang terlihat seperti dibawah
sebelum kita membahas bagan uC diatas terlabih dahulu kita membahas tentang Register :)
Register
8051 mempunyai 8 bit register
Register ini berfungsi sebagai tempat penyimpanan sementara informasi , dan infromasi ini dapat berupa sebuah byte data yang akan di proses, atau alamat yang menunjuk ke data yang akan diambil.
Ok D0 – D7 itu kita sebut saja Data 0 – Data 7, dengan jumlah register hanya 8 bit ini, tidak mungkin dapat menampung data yang akan diolah lebih besar dari 8 bit, maka jika data yang akan diolah lebih besar dari 8 bit akan di pecah sebelum di proses.
Register yang sering digunakan adalah
  • A(Accumulator) untuk intruksi perhitungan aretmatik dan logika
  • B, R0, R1, R2, R3, R4, R5, R6, R7
  • DPTR (data pointer), and PC (program counter)
Program Counter
Saya punya tutor dikit nih kita akan menguji program sederhana dan melacak program tersebut setelah dimasukkan didalam ROM.
1    0000                       ORG 0H ;start dari 0H
2    0000     7D25        MOV R5,#25H               ;tampung 25H di R5
3    0002      7F34        MOV R7,#34H               ;tampung 34H di R7
4    0004     7400         MOV A,#0                      ;isikan 0 ke A
5    0006      2D            ADD A,R5                       ;nilai R5 ini berisi 25H = 37d dan A = 0 berarti sekarang  A = A + R5
6    0007      2F            ADD A,R7                        ;tambahkan isi dari R7 to A sekarang A = A + R7
7    0008     2412         ADD A,#12H                  ;tambakan nilai 12h ke A berarti A = A + 12H
8    000A    80EF       HERE: SJMP HERE      ;shortjump mengulang terus
9    000C                      END ;end of asm source file
Jika ditablekan kita lihat seperti ini

Step by step penjelasan proses kerja 8051.
PC (program counter) untuk keluarga 8051 ini adalah register 16 bit yang mampu mengakses data sebesar 216 = 65536 = 64kbyte opcode.
Saat uC mulai dari mendapatkan supplay listrik, PC(Program Counter) berada pada 0000h dan mulai mengambil opcode (Operation Code) pertama dari lokasi ROM.
  • Setelah menjalankan opcode 7D, CPU mengambil nilai 25 dan ditempakatkan di R5
  • Sekarang satu intruksi selesai, dan kemudian PC menaikkan untuk menunjuk alamat ke 0002, yang berisi opcode 7F
  • Setelah menjalankan opcode 7F, nilai 34H dipindahkan ke R7
  • Dan sekarang PC bertambah menjadi 0004.
  • Setelah eksekusi 1-byte instruksi pada lokasi 0006, PC = 0007
  • Setelah eksekusi instruksi ini 1-byte di 0007, PC dinaikkan ke 0008
  • Proses ini berlangsung sampai semua instruksi di dieksekusi
1.      CPU (Central Procesing Unit)
Central Processing Unit (CPU),berfungsi sebagai pengoprasian dan pengontrolan infromasi yang tersimpan didalam Memory computer, dan untuk pengolahan fungsi-fungsi computer, biasanya CPU disebut juga dengan procesesor, CPU ini mempunyai bagan-bagan penting lagi didalamnya anda bisa lihat disini.
2.      RAM (Random Acces Memory)
Inilah tempat penyimpanan data anda sementara saat computer hidup. "tunggu ulasannya"
3.      ROM (Read Only Memory)
Berisi program dan informasi penting untuk pengelohan computer, informasi yang terdapat didalam ROM tidak dapat diubah oleh pengguna, dan tidak hilang karena memory tersebut bersifat nonvolatile.
4.      I/O (Input Output)
Berfungsi sebagai sarana untuk berkomunikasi dengan cpu , dan  memindahkan data ke lingkungan luar atau perangkat lainnya.
5.      Timer/counter (Pewaktuan/pencacahan)
Timer digunakan untuk melakukan “hard delay” penunda keras. Dalam 8051 memiliki 2 timer yaitu timer 0 dan 1, dan timer ini juga diset sebagai counter yang berfungsi untuk pencahahan / menghitung peristiwa yang terjadi diluar Mikrokontroller, misal anda menggunkan sensor ultrasonic yang akan menghitung jarak suatu benda dan  dipantulkan kembali ke sensor, untuk mengakusisi data ini menggunakan timer/counter dari mikrokontroller.
6.      Serial (Mode Pengiriman data serial)
Sebenarnya sih komunikasi computer terdapat 2 cara yaitu Parallel dan Serial, ok saya hanya akan membahas sedikit tentang parallel biar kita tau perbedaan dikit antara parallel dan serial.
Parallel
Biasanya menggunakan  8  kawat (conductor) atau bias juga lebih,  yang akan mentrasmiskan data dari satu tempat ke tempat lainya, dan kekurangan parallel ini tidak dapat mentransmisikan data dalam beberapa meter.Dengan transmisi parallel, bit-bit yang berbentuk karaketer dikirim secara bersamaan melewati sejumlah penghantar yang terpisah, dalam transmisi parallel terjadi procedure yang dikenal sebagai handshaking, yaitu prosedur yang diperlukan untuk mengakomodasi ketepatan waktu pengiriman data antara computer dengan terminal atau alat peripheral lainnya. Sesuai dengan kesepakatan, kita hanya akan membahas tentang komunikasi Serial ;D
Serial  
Komunikasi data yang menggunakan serial ini mentrasmisikan data dengan jarak yang bermeter-meter dan ini sangat efektif dari pada pengiriman data dengan komunikasi parallel, hanya dengan 2 jalur komunikasi yang disebut TX(Transmiter) dan RX (Receiveer).


Komunikasi Data Serial menggunakan 2 metode yaitu :
1. Metode Asinkron (Asynchronous)
Metode ini digunakan untuk mencegahnya aliran data pada saat ditransmisikan dalam waktu yang panjang tidak terjadi putus-putus dengan mengirim per karakter pada satu waktu, panjang karakter biasanya dikirim 5 sampai 8 bit dalam satu waktu. Pengirim harus menggunakan Timing atau didelay diantara karakter yang dikirim, waktu delay yang diberikan pengirim ini harus dimanfaatkan oleh penerima agar mengsinkronkan data yang telah dikirim.




Gambar 11.4.11 : Contoh pengiriman metode asinkron
Gambar a, ketika tidak ada transmisi karakter, jalur antara transmitter dan receiver dalam keaadaan (idle) nganggur. Idle ini digunakan untuk pensinyalan untuk logic 1. Awal dari suatu karakter adalah “start bit” dengan logic 0, kemudian diikuti oleh 5 sampai 8 karakter per bit, bit dari karakter tersebut ditransmisikan dengan diawali dari LSB (Least Significant Bit) bit yang paling kecil, lalu didalam pengiriman itu disisipkan parity bit yang berada di posisi MSB (Most Significant Bit) bit yang paling besar.

Parity Bit ini diset 1 berarti mengunakan event parity (paritas genap). Setelah parity adalah element stop (Stop pengiriman) yang diset 1 panjang minimum bit stop ini 1/1,5  atau 2 kali durasi dari bit. Sedangkan maksimumnya dispesifikasikan dengan data yang akan dikirim, karena bit stop ini = kondisi idle (nganggur) maka transmisi akan melanjutkan sinyal stop sampai siap untuk mengirim karakter berikutnya.

Pada gambar 11.4.11.C memperlihatkan efek kesalahan pewaktuan (timing  error) yang menyebabkan kesalahan pada penerimaan. Di sini dianggap bawahwa kecepatan datanya 10000 bps. Oleh karena itu tiap bit mempunyai durasi 0,1 milidetik atau atau 100 detik. Anggaplah penerima “receiver” terlambat 7 persen atau 7 detik per bit time “bps”. Dengan demikian receiver mengambil sampel karakter yang masuk setiap 93 detik berdasarkan pada clock transmitter. Seperti terlihat, sampel terakhir mengamlami kesalahan. Sebenarnya kesalahan ini ada dua macam: pertama, sample bit terakhir diterima tidak tepat; kedua, perhitungan bit sekarang keluar dari kesepakatan.

Jika bit ke 7 adalah 1 dan bit k 8 adalah 0 maka bit 8 akan dianggap start bit, kondisi ini diistilahkan Framing error, yaitu karakter plus start  dan stop bit yang kadang-kadang dinyatakan suatu frame. Framing error juga terjadi jika beberapa kondisi noise menyebabkan munculnya kesalahan dari suatu start bit selama kondisi idle.

Kesimpulan

Komunikasi Serial Asinkron (Asynchronous), ini sederhana dan murah tetapi memerlukan tambahan 2 sampai 3 bit per karakter untuk operasional sinkronisasi. Presentase tambahan dapat dikurangi dengan mengrim blok-blok bit yang besar antara bit start dan bit stop, tetapi akan memperbesar kesalahan pewaktuan kumulatig. Solusinya yaitu transmisi sinkron.

2. Metode Synkron (Synchronous)
Dengan metode ini data tidak dikirimkan per byte melainkan frame blok yang besar, ukuran dari frame ini bervariasi, mulai dari byte rendah sampai byte tinggi (1500 byte untuk Ethernet atau 4096 byte untuk system frame relay). Informasi clocking disertakan dalam data yang telah dikodekan atau diberikan dalam jalur-jalur clock terpisah. Dengan demikian pengiriman dan penerimaan selalu sinkron selama transmitter frame terjadi,  Ada beberapa level lain dari transmisi sinkronus (synchronous) ini yang diperlukan agar penerima (receiver) dapat menentukan awal dan akhir suatu blok data. Untuk itu tiap blok dimulai dengan pola preamble bit dan di akhiri dengan preamble bit. Pola-pola ini adalah control informasi.

Frame adalah data plus control informasi. Format yang tepat dari frame tergantung metode transmisinya, yaitu:
  1. Transmisi Character-Oriented (lihat Gambar 11.4.11.17(a) )
  2. Block data diperlukan sebagai rangkaian karakter (biasanya 8 bit karakter)
Semua control informasi dalam bentuk karakter. Frame dimulai dengan 1 atau lebih. Karakter sinkronisasi yang disebut SYN, yaitu pola bit khusus yang member sinyal ke pesawat penerima bahwa ini adalah awal suatu blok. Sedangkan untuk postamble-nya juga dipakai karakter khusus. Jadi penerima diberitahu bahwa suatu blok data sedang masuk, oleh karakter SYN, dan menerima data tersebut sampai terlihat karakter postamble. Penerima kemudian menunggu pola SYN yang berikutnya. Alternative yang lain dengan panjang frame sebagai bagian dari control informasi. Penerima mengunggu karakter SYN, menentukan panjang frame, membaca tanda sejumlah karakter frame berikutnya.
  1. Transmisi bit-Oriented (lihat Gambar 11.4.11.17(b))
Blok data diperlakukan sebagai serangkaian bit. Kontrol informasi dalam bentuk 8 bit karakter. Pada transmisi ini preamble bit panjangya 8 bit dan dinyatakan sebagai suatu flag sedangkan postamble-nya memaakai flag yang sama pula. Pesawat penerima mencari pola flag pada sinyal start dari frame yang diikuti oleh sejumlah control field. Kemudian sejumlah data field, control field dan akhirnya diulangi.
Yang dapat disimpulkan dari Synkron (Synchronous) diatas keuntungan-nya yaitu:
Keuntungan Transmisi Sinkron:
  1. Efisiensi dalam ukuran blok data; transmisi asinkron memerlukan 20% atau lebih tambahan ukuran.
  2. Control informasi kurang dari 100 bit.
Dari 2 metode Transmisi Prallel dan serial mempunyai kelemahan dan kelebihan masing-masing yaitu
Kekurangan:
Parallel:
  • Tidak efektif untuk mentransmisikan data jarak jauh.
  • Membutuhkan penghantar “kabel”  yang banyak untuk mentransmisikan data.
Serial
  • Membutuhkan waktu yang lama untuk mentransmisikan data karena butuh penyesuaian transmisi yaitu:
  1. Penyesuaian bit
  2. Penyesuaian karakter
  3. Penyesuaian blok
Kelebihan :
Parallel
  • Parallel mentransmisikan data lebih cepat dari serial karna dalam satu waktu parallel dapat mengirim 5 sampai 8 bit data / karakter, berbeda dengan serial harus mengirim perbit karakter
Serial
  • Dengan transmisi serial pengiriman  data jarak jauh menjadi lebih efektif debandingkan dengan parallel.
  • Saluran seri pengiriman setiap karakter per element hanya diperlukan satu atau dua penghanta “kabel” yaitu TX(Transmiter) dan RX(Receiver).
Sumber :
Totok Budioko, “Belajar Dengan Mudah Dan Cepat Pemrograman Bahasa Dengan SDCC  pada
Mikrokontroler AT89X051/AT89C51/52 Teori, Simulasi dan Aplikasi “ Cetakan
Pertama GAVA MEDIA, Yogyakarta, 2005.
Ariyus Doni & Andri Rum, Komunikasi Data, Andi Offset, 2008
A.P. Godse & D.A.Godse, Microprosessor and Microcontroller System,Technical Publication Pune
Muh. Ali Mazidi The 8051 Microcontroller and Embedded Systems Using Assembly and C-2nd-ed
http://en.wikipedia.org/wiki/Intel_MCS-51
http://en.wikipedia.org/wiki/Intel_MCS-48
http://en.wikipedia.org/wiki/Instructions_per_second
http://en.wikipedia.org/wiki/Asynchronous_serial_communication
http://upload.wikimedia.org/wikipedia/commons/1/1f/Serial_Programming.pdf
http://upload.wikimedia.org/wikipedia/commons/d/d8/Communication_Systems.pdf

untuk pembasan dengan pemograman insyaAllah akan saya bahas dan belajar bersama pada postingan yang lain dan masih di page Mikrokontroller mcs51, yang akan dibahas yaitu.
I/O (Input Output)
Timer/counter (Pewaktuan/pencacahan)
Serial (Mode Pengiriman data serial)
Parallel
Thanks
semoga bermanfaat.
to be continue :)