PERCOBAAN 2
Push Button dengan Mikrokontroler AT89S51
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.
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.
$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
$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
$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
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
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.