bahasa C merupakan bahasa pemrograman yang cukup populer dan sangat ampuh untuk pemrograman yang berhubungan dengan hardware. Lebih mudah dari assembly tapi gak kalah ampuh juga lo sama assembly. berikut ini merupakan sebuah tutorial bagi anda yang ingin mempelajari bahasa C.
struktur penulisan program:
=========================================================
#include
#define [nama][nilai]
[ global variable]
[function]
void main (void)
{
[deklarasi lokal variable]
[program utama]
}
==============================================================
penjelasan:
1. #include
disini kita memasukan file-file header seperti stdio.h, conio.h, delay.h dll
file file header ini dapat diibaratkan sebagai library dari bahasa c . tanpa adanya library mesin tidak akan bisa mengerti apa yang kita tulis. jadi pastikan anda meng-include library-library yang dibutuhkan dalam program anda
2. #define[nama][nilai] ex: #define juta 1.000.000
seperti artinya disini kita mendefinisikan suatu nilai dengan sebuah variable. hal ini dilakukan untuk menyederhanakan program yang kita buat
contoh: x = y * juta lebih baik daripada x= y * 1.000.000
3. global variable ex: char nama
adalah variable yang dapat dgunakan di seluruh fungsi .baik fungsi utama maupun tambahan.
4. function
disini kita bisa menambahkan fungsi tambahan diluar fungsi utama
5.void main (void)
ini adalah tempat program utama. disini kita juga bisa menambahkan variabel local. berbeda dengan variabel global yang berlaku di setiap bagian, variabel local ini hanya bisa berlaku di program utama saja
to be continued..............
Pengenalan Bahasa C: struktur
dimas, Sunday, June 14, 2009mengenal microcontroller 8051 part 3: SFR
dimas,SFR atau spesial function register adalah register-register dengan fungsi sangat khusus. SFR dapat dianalogikan sebagai tabel kontrol yang digunakan untuk menjalankan dan memonitor operasi mikroprocessor. ada sekitar 21 jenis SFR pada mikrokontroller keluarga mcs-51.
Register A(Accumulator)
Register ini berfungsi untuk menyimpan hasil sementara dari operasi. operand harus dimasukan ke accumulator sebelum intruksi aritmatik dilakukan. Ketika ALU (aritmatik logic unit) menjalankan operasi aritmatik, hasilnya akan disimpan di accumulator. jika data dipindahkan dari suatu rgister ke register lain, maka mereka harus melewati accumulator
Register B(Base)
register ini digunakan pada operasi perkalian dan pembagian, dimana operasi ini hanya dapat dijalankan ketika angka angka disimpan dalam register A dan B. untuk intruksi lainnya dapat menngunakan register ini sebagai pengganti register A
Register R(R0-R7)
Register-register ini digunakan untuk penyimpanan variabel dan hasil sementara. register ini disimpan dalam 4 bank RAM
PSW Register (Program Status Word)
Register ini berfungsi untuk memberitahu informasi tentang keadaan CPU.
P - Parity bit. berfungsi untuk mendeteksi genap atau ganjil suatu set dari bit pada accumulator. genap akan bernilai 1, ganjil akan bernilai 0. Misal 26 (11011 in binary), parity flag akan 1 karena jumlah 1 nya genap
- Bit 1. Tbit ini ada pada mikrokontroller selanjutnya.
OV Overflow terjadi ketika hasil dari operasi aritmatik lebih besar dari 255 (decimal), sehingga tidak dapat disimpan dalam satu register. Apa bila terjadi overflow maka bit akan bernilai (1). jika tidak ada maka akan bernilai (0).
RS0, RS1 - Register bank select bits. 2 bit register ini digunakan untuk memilih 1 dari 4 bank register dari ram. dengan memasukan logika 1 dan 0 ke register ini, maka r0 - r7 akan disimpan dalam salah satu bank register tadi.
RS1 RS2 Space in RAM
0 0 Bank0 00h-07h
0 1 Bank1 08h-0Fh
1 0 Bank2 10h-17h
1 1 Bank3 18h-1Fh
F0 - Flag 0. digunakan untuk general purpose
AC - Auxiliary Carry Flag dihunakan untuk operasi BCD
CY - Carry Flag digunakan untuk seluruh operasi aritmatika dan pergeseran.
DPTR Register (Data Pointer)
Register ini sebenarnya tidak ada secara fisik, register dptr ini terdiri dari dua register terpisah, Data Pointer High (DPH) dan Data Pointer Low. 16 bit inilah yang digunakan untuk pengalamatan memory eksternal. walaupun begitu, 16 bit ini dapat dianggap sebagai 2 8 bit register yang independen. mereka juga dapat digunakan sebagai tempat penyimpanan data dan hasil sementara yang tidak ada kaitannya dengan lokasi memori
SP Register (Stack Pointer)
nilai pada stack pointer memastikan bahwa stack pointer akan menunjuk valid RAM, dan memberikan ketersediaan stack. nilai stack pointer akan bertambah 1 setiap memulai subprogram dan berkurang 1 setiap mengakhiri subprogram. setiap kali direset maka stack pointer akan bernilai 7. ini artinya stack akan dimulai dari lokasi ini. apabila nilainya bukan 7, maka seluruh stack akan dipindahkan keposisi lain pada memori.
P0, P1, P2, P3 - Input/Output Registers
Pada register ini apabila pin dibuat 0, maka pin akan berfungsi sebagai ouput, sedangkan apabila diberi nilai 1 maka pin akan berfungsi sebagai output
source:
http://www.keil.com/support/man/docs/is51/
http://howtofriends.com/8051/
mengenal microcontroller 8051 part2: organisasi memory
dimas,Memori pada mikrokontroller dibagi 2, yaitu Program memory(ROM) dan Data memory(RAM). ROM digunakan untuk menyimpan permanen program. RAM digunakan untuk menyimpan sementara hasil dan variable yang terjadi selama mikrokontroller beroperasi. RAM awalnya mempunyai ukuran memory sebesar 256 lokasi (0-FFh), sementara pada versi selanjutnya terdapat 128 register tambahan.
RAM terdiri dari beberapa blok. Blok pertama (0-20h) terdiri dari 4 bank, masing-masing memiliki 8 register dari r0-r7. blok berikutnya (20h-2fh) merupakan bit-addresable memory, artinya masing masing bit mempunyai alamat sendiri dari 0-7f. karena ada 16 register maka terdapat 128 bit dengan alamat terpisah. blok ketiga(2fh-7fh) adalah register register. untuk lebih jelas bisa dilihat melalui gambar berikut....
ASCII (American standard code for information interchange)
Adalah kode biner standar untuk mengkodekan karakter alphanumeric. Kode ASCII menggunakan 7 bit untuk mengkodekan 128 karakter. 3 bit MSB adalah kolom, 4 bit LSB adalah baris.
Kode ASCII terdiri dari 96(32 – 127) printable character dan 32(0-31) non printing character yang terdiri dari Format effectors, information separators, communication controls
Dalam praktiknya data computer beroperasi pada satuan byte(8 bit) sehingga bit ke 8 sering kali di gunakan untuk kegunaan tertentu tergantung dari aplikasinya. Misal: penambahan simbol pada beberapa printer. kode tambahan inilah yang disebut extended ASCII codes.
Mengenal microcontroller 8051 part 1: arsitektur 8051
dimas,8051 adalah salah satu mikrokontroller yang berasal dari keluaga mcs 51. mikrokontroller ini sangat populer pada masanya, bahkan masih sering digunakan sampai saat ini. pada part 1 ini saya akan membahas arsitektur dari mikrokontroller 8051 ini. o iya untuk no pin nya dari p1.0-gnd adalah 1-20, dari p2.0-vcc adalah 21-40 Pin 9: RS apa bila diisi dengan logic 1, pin ini akan men-stop operasi dan menghapus isi hampir semua register,. apabila diisi dengan logic 0, maka pin akan memulai program dari awal. Pins10-17: Port 3 mirip dengan port 1, setiap pin dapat dikonfigurasi sebagai input/output. selain tu mereka juga memiliki fungsi lain: Pin 10: RXD Serial asynchronous/syncronous communication input Pin 11: TXD Serial asynchronous communication output atau Serial synchronous communication clock output. Pin 12: INT0 Interrupt 0 input Pin 13: INT1 Interrupt 1 input Pin 14: T0 Counter 0 clock input Pin 15: T1 Counter 1 clock input Pin 16: WR Signal untuk menulis RAM tambahan (eksternal) Pin 17: RD Signal untuk membaca dari RAM eksternal Pin 18, 19: X2, X1 input dan output internal oscillator. quartz crystal yang megatur frekuensi operasi mikrokontroller biasanya dihubungkan ke pin-pin ini. Pin 20: GND Ground Pin 21-28: Port 2 jika tidak menggunakan eksternal memory, maka pin2 ini berfungsi sebagai universal input-output. jika memory eksternal digunakan maka akan muncul pada port ini alamat byte yang lebih tinggi (contoh: a8-a15)these port pins are configured as universal inputs/outputs. In case external memory is used then the higher address byte, i.e. addresses A8-A15 will appear on this port. It is important to know that even memory with capacity of 64Kb is not used ( i.e. note all bits on port are used for memory addressing) the rest of bits are not available as inputs or outputs. Pin 29: PSEN jika external ROM digunakan untuk menyimpan program, maka pin ini mempunyai logic 0 setiap kali mikrokontroller membaca sebuah byte dari memory. Pin 30: ALE ALE (address latch enable), digunakan ketika multiple memory eksternal dihubungkan ke mikrokontroller dan hanya satu yang dibutuhkan. Pin 31: EA dengan memasukan logic 0 pada pin ini, p2 dan p3 digunakan untuk transmisi data dan alamat dengan tidak mengangggap adanya memory internal atau tidak. jika digunakan logic 1 maka mikrokontroller akan menggunakan 2 memory, internal dan eksternal.
keterangan:
Pins 1-8: Port 1 setiap pin dapat dikonfigurasi sebagai input/output
Mikrokontroller 8051 mempunyai 4 I/O port , setiap port memiliki 8 pin. berarti sebuah mikrokontroller 8051 32 pin input output. logic state dari pin menyatakan apakah sebuah pinberfungsi sebagai input atau output: 0=output, 1=input.
