Percobaan 2 (Push Button)

PERCOBAAN 2
Push Button dengan Mikrokontroler AT89S51

Pada percobaan kali ini mikrokontroler AT89S51 akan ditambahkan komponen input push button, push button akan mengirimkan kondisi low "0" ketika ditekan dan kondisi high "1" ketika tidak ditekan.

Untuk menghindari pembacaan error dalam mikrokontroler pada penekanan push button diakibatkan ketidak stabilan tegangan dapat ditambahkan pull up resistor, sehingga kondisi high "1" ketika push button tidak ditekan akan tetap terjaga.

Langkah percobaan
Ketikan program berikut ini pada program Top View Simulator dan lakukan simulasi (cara melakukan simulasi klik disini)

Program 1 :
Dalam percobaan ini penekanan push button akan ditampilkan dengan nyala led.
org 0h
$mod51
start:
mov    a,p1   ; ambil data penekanan dari push button
mov    p0,a   ; kirim data dari akumulator pada led
sjmp    start   
end

Program 2 :
Lampu flip flop dengan tombol on off.
org    0h
$mod51

start:
SW1:    jb    p1.0,SW2    ; Cek SW1 apakah ditekan jika tidak cek PB2
        call    blink     ; jika SW1 ditekan led flip flop
SW2:    jb    p1.1,SW1    ; Cek SW2 apakah ditekan jika tidak cek SW1
        mov    p0,#0ffh   ; jika SW2 ditekan led off
sjmp    start

blink:
mov    p0,#00001111b      ;LED D5-D8 On D1-D4 off
call    delay             ;Panggil Delay (jeda waktu)
mov    p0,#11110000b      ;LED D1-D4 On D5-D8 off
call    delay
sjmp    start             ;kembali ke start

;-------------------------------
;---Sub rutin waktu tunda-------
;-------------------------------
delay: mov R1,#255
ret1: mov R2,#255
ret2: djnz R2,ret2
      djnz R1,ret1
      ret
end

Program 3:
Kontrol led dengan push button dan register geser 

org    0h
$mod51
mov    a,#11111110b
start:
SW1:    jb    p1.0,SW2      ; Cek SW1 apakah ditekan jika tidak cek SW2
        call    kiri        ; jika SW1 ditekan panggil led geser kiri
SW2:    jb    p1.1,SW3      ; Cek SW2 apakah ditekan jika tidak cek SW3
        call    kanan       ; jika SW2 ditekan panggil led geser kanan
SW3:    jb    p1.2,SW1      ; CEK SW2 apakah ditekan jika tidak cek SW1
        mov    p0,#0ffh     ; Jika SW3 ditekan led off
sjmp    start
;------------led geser kiri--------
kiri:
mov    p0,a
rl    a
call    delay
sjmp    start
;------------led geser kanan-------
kanan:
mov    p0,a
rr    a
call    delay
sjmp    start

;-------------------------------
;---Sub rutin waktu tunda-------
;-------------------------------
delay: mov R1,#255
ret1: mov R2,#255
ret2: djnz R2,ret2
      djnz R1,ret1
      ret
end
Jika tidak ada masalah led akan bergeser ke kiri ketika SW1 ditekan, bergeser ke kanan ketika SW2 ditekan dan off ketika SW3 ditekan.

Konfigurasi PIN Mikrokontroler AT89S51

Susunan pin-pin mikrokontroler AT89S51 memperlihatkan pada gambar dibawah ini.:
 
Konfigurasi pin mikrokontroler AT89S51


Penjelasan dari masing-masing pin adalah sebagai berikut :
  1. Pin 1 sampai 8 (Port 1) merupakan port pararel 8 bit dua arah (output-input).
  2. Pin 9 (Reset) adalah input reset (aktif tinggi). Pulsa transisi dari rendah ke tinggi akan me-reset AT89S51.
  3. Pin 10 sampai 17 (Port 3) adalah port pararel 8 bit dua arah (output-input) yang memiliki fungsi pengganti. Fungsi pengganti meliputi TxD (Transmision Data), RxD (Received Data), Int 0 (Interupsi 0), Int 1 (Interupsi 1), T0 (Timer 0), T1 (Timer 1), WR (Write) dan RD (Read). Bila fungsi pengganti tidak dipakai, pin-pin ini dapat digunakan sebagai port pararel 8 bit serba guna.
  4. Pin 18 dan 19 (XTAL 1 dan XTAL 2) adalah pin input kristal, yang merupakan input clock bagi rangkaian osilator internal.
  5. Pin 20 (Ground) dihubungkan ke Vss atau Ground.
  6. Pin 21 sampai 28 (Port 2) adalah port pararel 2 selebar 8 bit dua arah. Port 2 ini mengirimkan byte alamat bila dilakukan pengaksesan memori eksternal.
  7. Pin 29 adalah pin PSEN (Program Strobe Enable) yang merupakan sinyal pengontrol yang membolehkan program memori eksternal masuk ke dalam bus selama proses pemberian/pengambilan instruksi.
  8. Pin 30 adalah pin output ALE (Address Latch Enable) yang digunakan untuk menahan alamat memori eksternal selama pelaksanaan instruksi.
  9. Pin 31 (EA). Bila pin ini diberi logika tinggi, maka mikrokontroler akan melaksanakan instruksi dari ROM ketika isi program counter kurang dari 4096. Bila diberi logika rendah, maka mikrokontroler akan melaksanakan seluruh instruksi dari memori program diluar.
  10. Pin 32 sampai 39 (Port 0) merupakan port pararel 8 bit open drain dua arah. Bila diberi logika rendah, mikrokontroler akan melaksanakan seluruh instruksi dari memori program luar.
  11. Pin 40 (Vcc) dihubungkan ke Vcc (+5 Volt).

Spesifikasi Mikrokontroler AT89S51

Mikrokontroler AT89S51 termasuk dalam MCS-51TM dari Intel. Sebuah mikrokontroler tidak dapat bekerja bila tidak diberi program kepadanya. Program tersebut memberitahukan mikrokontroler apa yang harus dilakukan. Salah satu keunggulan dari AT89S51 adalah dapat diisi ulang dengan program lain sebanyak 1000 kali pengisian. Instruktur-instruktur perangkat lunak berbeda untuk masing-masing jenis mikrokontroler. Instruksi-instruksi hanya dapat dipahami oleh jenis mikrokontroler yang bersangkutan. Instruksi-instruksi dikenal sebagai bahasa pemrograman sistem mikrokontroler.Sebuah mikrokontroler tidak dapat memahami instruksi-instruksi yang berlaku pada mikrokontroler lain. Sebagai contoh, mikrokontroler buatan Intel dengan mikrokontroler buatan Motorolla memiliki perangkat instruksi yang berbeda.
Mikrokontroler AT89S51 memiliki beberapa fasilitas, diantara lain sebagai berikut:
  • 4K Bytes In-System Programmable (ISP) Flash Memori
  • Range operasi 4,0 V ke 5,5 V.
  • Operasi Secara penuh Statis: 0 Hz ke 33 MHZ.
  • Tiga Level Program Memori Lock.
  • 128 x 8-bit RAM Internal.
  • 32 jalur I/O Programmable.
  • Dua 16-bit Timer/Counters.
  • Enam Sumber Interrupt.
  • UART Full Duplex Saluran Serial.
  • Low-Power Idle dan Power-Down Modes.
  • Interrupt Recovery dari Power-Down Modes
    Dengan fasilitas seperti diatas, pembuatan alat menggunakan AT89S51 menjadi lebih sederhana dan tidak memerlukan IC pendukung yang banyak. Agar lebih jelasnya dapat dilihat pada gambar 2.1 dibawah ini.
Gambar 2.1  Diagram Blok Mikrokontroler AT89S51

Organisasi Memori Mikrokontroler AT89S51

Semua mikrokontroler dalam keluarga MCS-51 memiliki pembagian ruang alamat (address space) untuk program dan data. Pemisahan memori program dan memori data membolehkan memori data untuk diakses oleh alamat 8 bit. Meskipun demikian, alamat data memori 16 bit dapat dihasilkan melalui register DPTR (Data Pointer Register). Memori program hanya dapat dibaca tidak bisa ditulis, karena disimpan dalam Flash Memori. Memori program sebesar 64 Kbyte dapat dimasukkan dalam EPROM eksternal. 

Sinyal yang membolehkan pembacaan dari memori program eksternal adalah pin PSEN. Memori data yang terletak pada ruang alamat terpisah dari memori program. RAM ekternal 64 Kbyte dapat dialamati dalam ruang memori data eksternal. CPU menghasilkan sinyal read dan write selama menghubungi memori data eksternal.
 Mikrokontroler AT89S51 memiliki  5 buah ruang alamat, yaitu :
a. Ruang alamat kode (Code Address Space) sebanyak 64 Kbyte, yang seluruhnya merupakan ruang alamat kode eksternal.
b. Ruang alamat memori data internal yang dapat dialamati secara langsung, yang terdiri atas :
1.   RAM sebanyak 128 byte. 
2.   Hardware register sebanyak 128 byte  
c. Ruang alamat memori data internal yang dialamati secara tidak langsung sebanyak 128 byte, seluruhnya diakses dengan pengalamatan tidak langsung.
d. Ruang alamat memori data eksternal sebanyak 64 Kbyte yang dapat ditambahkan oleh pemakai.
e. Ruang alamat bit. Dapat diakses dengan pengalamatan langsung.  

AT89S51 memiliki ruang pengalamatan memori data dan memori program yang terpisah. Gambar 2.3 memperlihatkan peta dari memori pada AT89S51 yang terdiri dari 4K byte internal (0000H sampai 0FFFH) memori dan 60K byte eksternal memori (1000H sampai FFFFH). Total 64K byte data memori eksternal dapat dialamatkan langsung AT89S51 ke dalam chip.
AT89S51 memiliki 128 byte internal RAM ditambah alamat dari Special Function Register (SFR) seperti yang diperlihatkan gambar 2.4.

Gambar 2.4 menunjukkan SFR dan pengalamatan langsung (direct) RAM memiliki alamat yang sama, yaitu 80H sampai 0FFH. Akan tetapi, keduanya berada pada daerah yang berlainan yang diakses dengan cara yang berbeda pula.

Fungsi dan alamat SFR dapat dilihat pada tabel 2.2 berikut ini.
Tabel 2.2.  Alamat SFR

Simbol
Nama
Alamat



ACC
Accumulator
0E0H
B
Register B
0F0H



PSW
Program Status Word
0D0H



SP
Stack Pointer
81H



DPTR
Data Pointer 2 Bytes




DPL
Low Byte
82H



DPH
High Byte
83H
P0
Port 0
80H



P1
Port 1
90H



P2
Port 2
0A0H



P3
Port 3
0B0H



IP
Interrupt Priority Control
0B8H



IE
Interrupt Enable Control
0A0H
TMOD
Timer/Counter Mode Control
89H



TCON
Timer/Counter Control
88H



TH0
Timer/Counter 0 High Byte
8CH



TL0
Timer/Control 0 Low Byte
8AH



TH1
Timer/Counter 1 High Byte
8DH



TL1
Timer/Counter 1 Low Byte
8BH
SCON
Serial Control
98H



SBUF
Serial Data Buffer
99H



PCON
Power Control
87H



 
 
Sementara itu, 128 byte RAM pada AT89S51 dapat diakses secara langsung (direct) atau tidak langsung (indirect). Peta memori RAM dibagi menjadi tiga area seperti disebutkan di bawah ini.

1.      Register Bank 0 – 3.

Memiliki alamat dari 00H sampai 1FH (32 byte). Tiap register bank terdiri dari 8 register (R0 sampai R7). Untuk memilih register bank yang dipakai, bit RS0 dan RS1 pada Program Status Word (PSW) dapat diatur. Bentuk dan isi PSW dapat dideskripsikan seperti dalam gambar 2.5.

MSB






LSB
CY
AC
F0
RS1
RS0
OV
-
P

Gambar 2.5.  Susunan bit register PSW

Fungsi-fungsi bit pada PSW dapat dipaparkan sebagaimana dalam tabel 2.3 berikut ini.

Tabel 2.3. Fungsi – Fungsi Bit pada PSW

Simbol
Alamat Bit
Fungsi



CY
PSW.7
Carry flag



AC
PSW.6
Auxillary carry flag
F0
PSW.5
User flag 0



RS1
PSW.4
Register bank selector bit 1



RS0
PSW.3
Register bank selector bit 0



OV
PSW.2
Overflow flag



-
PSW.1
Untuk perancangan tambahan



P
PSW.0
Parity flag

Sementara itu, konfigurasi bit ketiga dan keempat, yaitu RS0 dan RS1, dapat dilihat pada tabel 2.4.

Tabel 2.4.  Konfigurasi Bit RS0 dan RS1

RS1
RS0
Register Bank
Alamat



0
0
0
00H-07H

0
1
1
08H-0FH

1
0
2
10H-17H

1
1
3
18H-1FH


2.      Bit Addressable Area.

Terdapat 16 byte alamat dari 20H sampai 2FH yang membentuk total 128 alamat bit.

3.      Scrath Pad Area.

Byte dari alamat 30H sampai 7FH digunakan sebagai data RAM.

Peta memori RAM yang dibagi menjadi tiga area seperti disebutkan di atas dapat divisualisasikan dalam gambar 2.6 pada halaman berikut ini.