Maulid Nabi Muhammad SAW

MESKI jarak waktu yang tidak kurang dari 15 abad menjadi pemisah antara kehidupan kita saat ini dengan kehidupan di masa Nabi Muhammad Shallallahu ‘alaihi Wassalam, namun beliau tidak menutup pintu dan kesempatan bagi siapa saja untuk bisa memperoleh kedudukan yang dekat dengan beliau pada hari kiamat..

Doa untuk mendapatkan jodoh yang terbaik

Dewasa ini menikah telah menjadi persoalan yang sangat pelik dan besar bagi banyak pihak. Persoalan yang mengganjal kemudahan dan kelancaran pernikahan tidak sebatas factor biaya pernikahan yang besar saja.

Syarat Seorang Anak Wajib Menafkahi Orang Tuanya

Birrul walidain dan berbuat baik ke kedua orang tua adalah amal kebaikan yang sangat mulia di dalam Islam. Kedudukannya disandingkan dengan perintah tauhid.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

Showing posts with label Microkontroller. Show all posts
Showing posts with label Microkontroller. Show all posts

Monday, January 23, 2012

Perintah Dasar Assembler

Mov
Perintah untuk mengisi, memindahkan, memperbaharui isi suatu register, variabel ataupun suatu lokasi memori.
Penulisan perintah:
MOV [operand A],[operand B]

Dengan ketentuan operand A merupakan register, variabel, lokasi memori dan ketentuan isi operand B berupa register, variabel, lokasi memori ataupun bilangan.
Operand B merupakan bilangan asal yang akan diisikan ke operand A, dengan kata lain operand A merupakan tujuan pengisian atau penduplikatan dari operand B.

Contoh:
MOV AH, AL

Operand A dari perintah diatas adalah register AH
Operand B dari perintah diatas adalah register AL
Hal yang dilakukan dari perintah diatas adalah menduplikatkan isi register AL ke register AH

MOV AH,02

Operand A dari perintah diatas adalah register AH
Operand B dari perintah diatas adalah bilangan 02
Hal yang dilakukan dari perintah diatas adalah memasukkan 02 ke register AH

Int (Interrupt)
Perintah Int (Interrupt) mempunyai cara kerja yang sama dengan perintah GOSUB pada BASIC, hanya pada Int, subrotine yang akan dipaggil sudah tersedia pada memori komputer. Subrotine yang dipanggil menggunakan perintah Int (interrupt) terdiri dari 2 jenis, yaitu:
Bios Interrupt yaitu Int yang disediakan oleh BIOS (Basic Input Output System). Interrupt yang termasuk dalam Interrupt BIOS adalah Int 0 hingga Int 1F hexa.
DOS Interrupt yaitu Int yang disediakan oleh DOS (Disk Operating System). Interupt yang termasuk dalam Interrupt DOS adalah Interrupt diatas Int 1F hexa. Misal: Interrupt 20 hexa, Interrupt 21 hexa dll.

Int 20
Int 20h merupakan salah satu dari DOS Interrupt. Tugas Int 20h adalah memberhentikan proses komputer terhadap suatu program COM. Bila pada semua program Com tidak terdapat Int 20h, maka sudah bisa dipastikan bahwa bila program diproses, maka akan terjadi hanging pada komputer. Hal ini terjadi karena komputer tidak menemukan perintah pemberhentian proses.
Int 21h Service 02
Int 21h juga merupakan salah satu dari DOS Interrupt. Int 21h mempunyai banyak tugas, maka tugasnya dibagi-bagi menjadi beberapa bagian. Untuk memanggil bagian-bagian itu, perlu disertakan nomor bagiannya yang disebut Service Number.
Untuk menjalankan fungsi Int 21h service 02 harus dipenuhi beberapa syarat:
Register AH, harus berisi service number dari Int 21h yang akan dijalankan (02h)
Register DL, harus berisi bilangan hexa dari karakter ASCII yang akan dicetak

Q (Quit)
Bila kita mengetik Q dan menekan Enter, maka akan segera kembali ke DOS Prompt.
Contoh:

A>DEBUG
-Q
A>

H (Hexa)
Perintah yang melaksanakan penjumlahan dan pengurangan terhadap dua bilangan hexa.
Bentuk Umum Instruksi:
H operand1  operand2

Contoh:

-H  2204   2012
4216 01F2

Pada perintah diatas terdapat dua bilangan. Bilangan sebelah kiri adalah penjumlahan kedua bilangan tersebut dan sebelah kanan adalah pengurangan kedua bilangan tersebut.

R (Register)
Perintah ini adalah untuk mengetahui isi masing-masing register pada saat mengetik R dan menekan Enter.
Contoh:

-R
AX=0000 BX=0000 CX=0000 DX=0000 SP=CE2E BP=0000 SI=0000 DI=0000
DS=0FD8 ES=0FD8 CS=0FD8 IP=0100     MV  UP  DI  PL  MZ  MA  PO  NC
0FD8:0100  E603        OUT    03,AL



A (Assembler)
Perintah ini berguna untuk tempat menulis program Assembler.
Contoh:

-A100
0fD8:100

Pada sebelah kiri bawah huruf A terdapat angka yang merupakan pernyataan segment dan offset dimana anda menempatkan program.

N (Name)
Perintah ini untuk memasukkan nama program setelah program dibuat.
Bentuk Umum Instruksi:
N [Drive]: [nama program]

Contoh:

-N B:COBA.COM

RCX (Register CX)
Perintah untuk mengetahui dan memperbaharui isi register CX yang merupakan tempat penampungan panjang program yang sedang aktif sebelum dijalankan (running).
Contoh:

-RCX
CX  0000
.
.
.

RIP (Register IP)
Peirntah yang memberitahu komputer untuk memulai proses program dari titik tertentu (selalu dimulai dari 100 hexa).
Contoh:

-RIP
IP 0100
.
.

W (Write)
Setelah selesai membuat program dan menentukan RCX dan RIP dari program yang dibuat, adalah menulis program itu dahulu sebelum memprosesnya.


Contoh:

-W
Writing 0008 bytes

G (Go)
Untuk memproses di dalam DEBUG ketik huruf G dan tekan Enter, maka program yang ditulis akan dijalankan.
Contoh:

-G
A
Program terminated normally

T (Trace)
Perintah ini untuk memproses sebaris program saja.
Contoh:

-T

AX=0200 BX=0000 CX=0008 DX=0000 SP=CE2E BP=0000 SI=0000 DI=0000
DS=0FD8 ES=0FD8 SS=0FD8 CS=0FD8 IP=0102 MV UP DI PL NZ NA PO NC
0FD8:0102 B241        MOV    DI,41

U (Unassemble)
Fungsi ini sama dengan fungsi LIST pada BASIC, yaitu untuk melihat ptogram yang sedang aktif saat itu, maka yang ditampilkan adalah program sepanjang 21h.
Contoh:

-U
0FD8:0102  B241        MOV        DI,41
0FD8:0104  CD21        INT            21
0FD8:0106  CD20        INT            20
0FD8:0108  D9B90300        FSTCW    [BX+DI+0003]
0FD8:010C F3            REPZ
0FD8:010D A4            MOVSB
0FD8:010E B020            MOV            AL,20
0FD8:0110 AA            STOSB
0FD8:0111 C3            RET
0FD8:0112 3C80            CMP            AL,80
0FD8:0114 7214            JB            012A
0FD8:0116 2C80            SUB            AL,80
0FD8:0118 1E            PUSH            DS
0FD8:0119 53            PUSH            DX
0FD8:011A BE1E9142        MOV            DS:[4291]
0FD8:011E C51E040C        LDS            BX,[0C04]
Untuk menentukan sendiri panjang program yang ingin dilihat dapat digunakan perintah L (Length) dibelakang U.
Bentuk Umum Instruksi:
U [tempat memulai Unassemble]  L [panjang program]

Contoh:

-U100  L 0D
0FD8:0100  B910000        MOV        CX,0010
0FD8:0103  B402            MOV        AH,02
0FD8:0105  B241            MOV        DL,41
0FD8:0107  CD21            INT        21
0FD8:0109  E2F8            LOOP        0103
0FD8:010B  CD20            INT        20

Monday, May 16, 2011

Cara mudah belajar microcontroller

Banyak orang ingin belajar microcontroller, namun setelah tahu bahasa pemogramannya berupa bahasa assembly yang nampak jelimet dan ruwet terpaksa mengurungkan niatnya untuk belajar. hal ini suatu keputusan yang salah, karena selain bahasa assembly ternyata microcontroller bisa di program menggunakan bahasa yang lain. Salah satunya adalah bahasa C.

Mengapa menggunakan bahasa C?

  1. Populer dan mudah di mengerti
  2. Sangat efficient
  3. Bagus dalam mengakses hardware menggunakan pointer
  4. Program bisa di buat terstruktur menggunakan fungsi dan modul
  5. Untuk pemograman logika dan aritmatika lebih simple
  6. dll.
Ingat ! Bahasa C bukan bahasa yang perfect untuk pemograman microcontroller, tetapi pilihan yang tepat untuk belajar microcontroller.

Tipe Variable

Variabel dalam microcontroller di representasikan dalam bentuk bit, byte, word dan lain sebagainnya. Contohnya adalah seperti berikut.
Variable bit Nilai
bit 1 bit 0 / 1
char 8 bit 0 s/d +127 atau 0 s/d -127
unsigned char 8 bit 0 s/d +255
int 16 bit 0 s/d +32768 atau 0 s/d -32768
unsigned int 16 bit 0 s/d +32768
long 32 bit 0 s/d +2.147483648x109 atau 0 s/d -2.147483648x109
unsigned long 32 bit 0 s/d +4.29496795x109
float 32 bit +/- 1.176E-38 s/d +/-3.4E+38
pointer 24/16/8 bit alamat variable

Struktur program bahasa C

struktur program bahasa C ada 3 point penting, yaitu :
1. Pre-Processor
2. Main Function
3. Function

Pre-Processor

Pada pemograman bahasa C setidaknya ada 2 syntax yang sering kita temukan pada header program, seperti :
1. #include
2. #define
#include berfungsi untuk memanggil library / prototype fungsi yang ada pada header file. Header file adalah file yang berisi prototype fungsi yang dipanggil oleh pre-processor pada waktu pertama kali program dijalankan. Header file bisa di kenali dengan cara melihat extention dari file tersebut, yaitu berupa *.h.  * adalah nama file, sedangkan h adalah header. untuk extention h bisa huruf kecil, juga bisa huruf besar.
Contoh.
#include<stdio.h> ----> Menyatakan pada compiler agar membaca file bernama stdio.h
#include<panas_dingin.h> ----> Menyatakan pada compiler agar membaca file bernama panas_dingin.h
#define berfungsi untuk mendefinikan konstanta-konstanta yang di gunakan dalam program. Dengan menggunakan syntax ini pemograman bisa di lakukan lebih mudah.
Misalnya :
#define LED P1_0   ---->LED = P1_0
maksud dari pendifinisan di atas adalah konstanta LED itu sama dengan P1.0 artinya dalam program tidak perlu menulis P1_0 cukup tulis LED.

Main Function

Fungsi ini merupakan fungsi utama dalam program dan di panggil pertama kali saat program di jalankan. Dalam fungsi ini bisa terdapat konstanta dan fungsi-fungsi lain.
Conntoh.
main()
{
//tulis program di sini
}
fungsi main() merupakan fungsi utama program. Tanda kurung ( ) setelah kata main menyatakan tidak ada argumen yang di lewatkan pada fungsi main. Sedangkan untuk tanda "{" merupakann pernyataan awal program dan tanda "}" merupakan perntaan akhir program.

Fungsi

Fungsi ini boleh di katakan fungsi pelengkap. fungsi ini bisa berupa fungsi yang di buat oleh user program dan bisa juga fungsi yang sudah ada dalam bahasa C. Fungsi ini bisa di panggil oleh fungsi lain dan bisa memanggil fungsi lain. Perbedaan dengan fungsi utama, fungsi utama tidak bisa di panggil oleh fungsi lain, tetapi bisa memanggil fungsi lain.
Contoh program lengkap bahasa C untuk pemograman microcontroller AT89S51 menggunakan software keil uvision3.
#include<AT89X51.h>
#include<stdio.h>
#define LED P1_0
void test_led();
void test_led()
{
P1=0;
LED=1; // P1.0=1;
}
main()
{
test_led();
}
Penjelasan program.
#include<AT89X51.h>
Menyatakan pada compiler agar membaca file header untuk microcontroller AT89S51 dengan nama file AT89X51.h
#include<stdio.h>
File header stdio.h digunakan untuk penanganan input / output standar seperti penulisan ke layar atau ke file atau pembacaan data dari keyboard atau file.
#define LED P1_0
Pendefinisian konstanta LED yang di definisikan sebagai Port 1 bit 0. Jika di program di tulis LED berarti sama dengan P1_0
void test_led();
Pendeklarasian dari prototype fungsi  test_led();
Penjelasan dari fungsi test_led() adalah sebagai berikut :
void test_led()  ---->nama fungsi;
{  ---->merupakan pernyataan awal dari fungsi test_led();
P1=0; ----> set port 1 microcontroller ke kondisi low. artinya Port 1 bit 0 s/d bit 7 di set 0
LED=1; // P1.0=1; set port 1 bit 0 ke kondisi high (1);
}  ---->merupakan pernyataan akhir / penutup dari fungsi test_led();
Penjelasan dari fungsi main() adalah sebagai berikut :
main()  --->fungsi utama main();
{  ----->Pernyataan awal program
test_led(); ---->memanggil dan menjalankan fungsi test_led();
}
Penjelasan jalannya program
  1. Complier membaca file pengarah pre-processor yang terdiri dari file AT89X51.h dan stdio.h
  2. Compiler membaca konstanta pengarah preprocessor #define LED P1_0
  3. Compiler membaca prototy[e fungsi test_led();
  4. Compiler menjalankan fungsi utama main();
  5. Saat fungsi utama di jalankan, fungsi uatama main() memanggil / menjalankan fungsi test_led()
  6. finish.
Setelah program di compile, file hex hasil compile bisa anda burning ke microcontroller menggunakan ISP programmer AT89/90 Series. Anda jalankan, lalu lihat hasilnya. Jika anda males untuk melakukan itu, anda bisa lakukan simulasi menggunakan keil C51 uvision3. Baca artikel saya sebelumnya yang berjudul "Berkenalan dengan keil C51 uvision3"
Sementara cukup di sini dulu. Tunggu tayangan berikutnya tentang pemograman microcontroller menggunakan bahasa C.