external. Sedangkan pada saat Flash Programming PROG berfungsi sebagai pulsa input selama proses pemrograman.
Pin 31
Berfungsi sebagai EAVPP. Pada kondisi low, pin ini akan berfungsi sebagai External Access Enable EA yaitu mikrokontroler akan menjalankan program
yang ada pada memori external. Jika kondisi high, pin ini akan berfungsi untuk menjalankan program yang ada pada memori internal. Pin ini juga berfungsi
sebagai masukkan tegangan pemrograman selama proses pemrograman.
Pin 32 – 39
Berfungsi sebagai D7 – D0 A7-A0. Pin 32 sampai 39 adalah port 0 yang merupakan saluran IO 8 bit open collector dan dapat juga digunakan sebagai
multiplex bus alamat rendah dan bus data selama adanya akses ke memori program external, pada mode ini port 0 mempunyai internal pull up. Saat
proses pemrograman dan verifikasi, port 0 membutuhkan eksternal pull up, dan digunakan sebagai saluran data.
Pin 40
Berfungsi sebagai VCC. Pin 40 merupakan masukkan sumber tegangan positif bagi mikrokontroler.
2.2 Organisasi Memori
Semua divais 8051 mempunyai ruang alamat yang terpisah untuk memori program dan memori data, secara logika dari memori program dan data,
mengijinkan memori data untuk diakses dengan pengalamatan 8 bit, yang dengan cepat dapat disimpan dan dimanipulasi dengan CPU 8 bit. Selain itu,
pengalamatan memori data 16 bit dapat juga dibangkitkan melalui register DPTR.
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
Memori program ROM, EPROM dan FLASH hanya dapat dibaca, tidak ditulis. Memori program dapat mencapai sampai 64K byte. Pada 89S51, 4K byte memori
program terdapat didalam chip. Untuk membaca memori program eksternal mikrokontroller mengirim sinyal PSEN program store enable .
Memori data RAM menempati ruang alamat yang terpisah dari memori program. Pada keluarga 8051, 128 byte terendah dari memori data, berada
didalam chip. RAM eksternal maksimal 64K byte. Dalam pengaksesan RAM Eksternal, mikrokontroller mingirimkan sinyal RD baca dan WR tulis .
Gambar 2.3 Struktur memori mikrokontroller keluarga MCS51
2.3 Dasar-dasar Pemrograman Bahasa Assembler
Dalam menjalankan program, mikrokontroler akan melakukan pembacaan data yang tersimpan dalam memori program internal atau eksternal. Alamat
memori yang harus dibaca disimpan dalam sebuah register yang dinamakan program counter PC. Data yang terbaca akan diartikan sebagai perintah yang
harus dikerjakan oleh mikrokontroler. Perintah ini bisa berbentuk pemindahan data data transfer, pengolahan data data processing atau mengubah alur
program program control. Setelah melaksanakan perintah, mikrokontroler akan
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
memperbaharui isi PC dengan alamat memori selanjutnya sehingga mikrokontroler bisa mengeksekusi perintah selanjutnya. Keluarga Atmel
AT89S51 memiliki instruksi yang kompatibel dengan instruksi MCS51 dari Intel.
Berikut ini dijelaskan beberapa instruksi dasar yang umum digunakan pada
pemrograman Mikrokontroller AT89S51. Andi Offset, 2007 MOV,MOVC dan MOVX
a Instruksi MOV digunakan untuk menyalin data antara 2 operand.
b Instruksi MOVC digunakan untuk menyalin data yang terdapat pada
memori program internal. c
Instruksi MOVX digunakan untuk menyalin data yang terdapat pada memori program external.
Tabel 2.3 Contoh Syntax Assembler MOV,MOVC dan MOVX
Contoh Syntax Keterangan
MOV A,R1 Salin nilai R1 ke akumulator
MOV A,R1 Salin isi lokasi yang ditunjukan R1 ke A
MOV A,P1 Salin data pada Port 1 ke akumulator
MOV P1,A Salin data pada akumulator ke Port 1
MOC A,X+DPRT Salin data int. yang di tunjuk DPTR ke A MOV A,DPRT
Salin data eks. Yang ditunjuk DPRT ke A MOVX DPTR,A
Salin data akumulator ke lokasi yang ditunjuk DPTR
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
ADD dan SUBB
a Instruksi ADD digunakan untuk melakukan operasi penjumlahan
akumulator dengar suatu operand dan hasilnya disimpan dalam akumulator.
b Instruksi SUBB digunakan untuk melakukan operasi pengurangan
akumulator dangan suatu operand dan hasilnya disimpan dalam akumulator.
Tabel 2.4 Contoh Syntax Assembler ADD dan SUBB
Contoh Syntax Keterangan
ADD A,20 A = A + 20
ADD A,RO A = A + [R0]
SUBB A,B A = A – B
SUBB A,10 A = A - 10
MUL AB dan DIV AB
a Instruksi MUL AB digunakan untuk melakukan operasi perkalian antara
akumulator dengan register B. Hasilnya berupa data 16 bit dengan low byte pada A dan high byte pada B.
a.
Contoh : misal
A = 50h B = A0h Mul
a,b Hasil = 3200h maka : A= 00h B = 32h
b Instruksi DIV AB digunakan untuk melakukan operasi pembagian antara
akumulator dengan register B. Hasilnya, pembagian disimpan pada akumulator dan sisa pembagian disimpan pada register B.
a.
Contoh: misal
A = FBh B = 12h Mul a,b
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
Hasil = 0Dh maka: A = 0Dh B = 11H
Karena, Fbh = 0d x 12 + 11
DEC dan INC
a Instruksi DEC digunakan untuk melakukan pengurangan sebesar satu pada
suatu operand. b
Instruksi INC digunakan untuk melakukan penambahan sebesar satu pada suatu operand.
Tabel 2.5 Contoh Syntax Assembler DEC dan INC
Contoh Syntax Keterangan
DEC A A = A – 1
DEC R0 [R0] = [R0] – 1
INC A A = A + 1
INC DPTR DPTR = DPTR + 1
ORL, ANL dan CPL
a Instruksi ORL digunakan untuk melakukan operasi OR antara dua
operand. b
Insrtuksi ANL digunakan untuk melakukan operasi AND antara dua operand.
c Instruksi CPL digunakan untuk melakukan operasi komplemen suatu
operand. Tabel 2.6 Contoh Syntax Assembler
ORL,ANL dan CPL
Contoh Syntax Akumulator
Register B Hasil
ORL A,B 0011 1010
1111 0000 1111 1010
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
Contoh Syntax Akumulator
Register B Hasil
ANL A,B 0011 1010
1111 0000 0011 0000
CPL A 0011 1010
---- ---- 1100 0101
RR, RL dan SWAP
a Instruksi RR digunakan untuk melakukan operasi pergeseran ke kanan
sebanyak 1 bit. b
Instruksi RL digunakan untuk melakukan operasi penggeseran ke kiri sebanyak 1 bit.
c Insrtuksi SWAP digunakan untuk melakukan operasi pertukaran data low
nible dan high nible. Tabel 2.7 Contoh Syntax Assembler
RR,RL dan SWAP
Contuh Syntax Akumulator
Hasil
RR A 0011 1010
0001 1101 RL A
0011 1010 0111 0100
SWAP A 0011 1010
1010 0011
SETB dan CLR
a Instruksi SETB digunakan untuk memberikan logic 1 pada bit operand.
b Instruksi CLR digunakan untuk memberikan logic 0 pada bit operand.
Contoh: Mulai:
Setb p2.0
Setb acc.0
Clr p2.1
Clr acc.1
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
PUSH dan POP
a Instruksi PUSH digunakan untuk menyimpan operand ke dalam stack.
b Instruksi POP digunakan untuk mengembalikan nilai operand dari
stack. Contoh :
PUSH 7
PUSH 6
PUSH 5
MOV R7,04H
LUPA: MOV R6,0FFH
LUPB: MOV
R5,0FFH djnz
R5, djnz
R6,LUPB POP
5 POP
6 POP
7
JMP, JB, JNB, JZ, JNZ dan CJNE
a JMP Jump digunakan untuk melakukan lompatan ke suatu blok program.
b JB Jump if Bit dan JNB Jump if Not Bit digunakan untuk melakukan
lompatan ke suatu blok program jika nilai operand 1 Bit atau 0 Not Bit. c
JZ Jump if Zero dan JNZ Jump if Not Zero digunakan untuk melakukan lompatan ke suatu blok program jika nilai operand 0 Zero
atau 0 Not Zero. d
CJNE Compare and Jump if Not Equal digunakan untuk melakukan pembandingan dua operand dan lompat ke blok program lain jika tidak
sama.
CALL dan RET
a Instruksi CALL digunakan untuk mamanggil prosedur tertentu dalam
program subprogram
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
b Instruksi RET digunakan untuk mengembalikan ke baris program yang
melakukan CALL. Contoh:
org 00h Kedip:
setb p2.0
call tunda
clr p2.0
call tunda
sjmp utama
tunda: mov
r7,20h la: mov r6,0ffh
lb: mov r50ffh djnz
r5, djnz
r6,lb djnz
r7,la ret
end
2.4 Liquid Crystal Display LCD