Port-port mikrokontroler dilengkapi
pull up internal, sehingga kondisi default-nya adalah high. Untuk menjadikan
Port ini sebagai input, kita tinggal memberikan logika high atau membiarkannya
dalam kondisi default. Jika kita menginginkan sebuah masukan terbaca kita
sebaiknya menggunakan masukan berup sinyal Low.
Prinsip kerja hardware,
Saat kita
menekan tombol keypad maka signal reendah akan dikrim ke port 3 pada
mikrokontroler, Dengan demikian port ini akan mempunyai logika sesuai dengan penekanan
tombol
Hardware Conection
Pasang Modul Mikrokontroler, sambungkan
modul Keypad 8 tombol ke port 3
;---------------------------------------------------------------------
; Simulasi penekanan tombol pd P3.0 untuk menghidupkan
; dan P3.1 untuk mematikan LED pada Port 1
;----------------------------------------------------------------------
ORG 0H
MULAI:
MOV A,P3 ; Baca port 3 dan simpan isinya
; ke akumulator
CJNE A,#0FEH,TERUS ; Apakah isi akumulator = 11111110B
; (P3.0 ditekan)?
; Tidak! lompat ke TERUS
MOV P1,#0 ; Ya! Hidupkan lampu LED di port 1
SJMP MULAI ; Ulangi lagi dari awal (label MULAI)
TERUS:
CJNE A,#0FDH,MULAI ; Apakah isi akumulator = 11111101B
; (P3.1 ditekan)?
; Tidak! lompat ke awal (label MULAI)
MOV P1,#0FFH ; Ya! Matikan lampu LED di port 1
SJMP MULAI ; Ulangi lagi dari awal...
END
Penjelasan
Saat keypad yang terhubung P3.0 di tekan maka data pada port 3 adalah 11111110 Biner atau0FE Hexa, program akan mengetahuai dengan menengok isi port 3 jika datanya sama (0FE H)maka Led pada port 1 dinyalakan, jika terjadi penekanan P3.1 maka data pada port 3 11111101Biner atau 0FD Hexa, Program akan mengecek isi port 3 jika data tersebut di temukan maka Ledpada port 1 akan dimatikan
;----------------------------------------------------------------------
; Simulasi penekanan tombol pd P3.0 sebagai toggle switch
; untuk menghidupkan/mematikan lampu pada Port 1
;----------------------------------------------------------------------
ORG 0H
MULAI:
MOV A,P3 ; Baca tombol P3 dan simpan di akumulator
CJNE A,#0FEH,MULAI ; Apakah tombol P3.0 ditekan? (=11111110)
; Tidak! Ulangi lagi dari awal
CJNE R0,#0,TERUS ; Ya! Apakah R0=0
; (artinya lampu sedang mati)?
; Tidak! loncat ke proses mematikan
; lampu LED (TERUS)
MOV R0,#1 ; Ya! ubah status R0=1 (lampu menyala)
MOV P1,#0 ; dan hidupkan lampu LED di port 1
TUNGGU: ; Untuk menghindari bouncing
MOV A,P3 ; Tunggu hingga tombol P3.0 dilepas
CJNE A,#0FFH,TUNGGU ;
SJMP MULAI ; Ulangi lagi dari awal
TERUS:
MOV R0,#0 ; Ubah status R0=0 (lampu mati)
MOV P1,#0FFH ; dan matikan lampu LED di port 1
SJMP TUNGGU ; untuk menghindari bouncing, lompat ke
TUNGGU
END
;---------------------------------------------------------------------
; Simulasi penekanan tombol pd P3.0 untuk menghidupkan
; dan P3.1 untuk mematikan LED pada Port 1
;----------------------------------------------------------------------
ORG 0H
MULAI:
MOV A,P3 ; Baca port 3 dan simpan isinya
; ke akumulator
CJNE A,#0FEH,TERUS ; Apakah isi akumulator = 11111110B
; (P3.0 ditekan)?
; Tidak! lompat ke TERUS
MOV P1,#0 ; Ya! Hidupkan lampu LED di port 1
SJMP MULAI ; Ulangi lagi dari awal (label MULAI)
TERUS:
CJNE A,#0FDH,MULAI ; Apakah isi akumulator = 11111101B
; (P3.1 ditekan)?
; Tidak! lompat ke awal (label MULAI)
MOV P1,#0FFH ; Ya! Matikan lampu LED di port 1
SJMP MULAI ; Ulangi lagi dari awal...
END
Penjelasan
Saat keypad yang terhubung P3.0 di tekan maka data pada port 3 adalah 11111110 Biner atau0FE Hexa, program akan mengetahuai dengan menengok isi port 3 jika datanya sama (0FE H)maka Led pada port 1 dinyalakan, jika terjadi penekanan P3.1 maka data pada port 3 11111101Biner atau 0FD Hexa, Program akan mengecek isi port 3 jika data tersebut di temukan maka Ledpada port 1 akan dimatikan
;----------------------------------------------------------------------
; Simulasi penekanan tombol pd P3.0 sebagai toggle switch
; untuk menghidupkan/mematikan lampu pada Port 1
;----------------------------------------------------------------------
ORG 0H
MULAI:
MOV A,P3 ; Baca tombol P3 dan simpan di akumulator
CJNE A,#0FEH,MULAI ; Apakah tombol P3.0 ditekan? (=11111110)
; Tidak! Ulangi lagi dari awal
CJNE R0,#0,TERUS ; Ya! Apakah R0=0
; (artinya lampu sedang mati)?
; Tidak! loncat ke proses mematikan
; lampu LED (TERUS)
MOV R0,#1 ; Ya! ubah status R0=1 (lampu menyala)
MOV P1,#0 ; dan hidupkan lampu LED di port 1
TUNGGU: ; Untuk menghindari bouncing
MOV A,P3 ; Tunggu hingga tombol P3.0 dilepas
CJNE A,#0FFH,TUNGGU ;
SJMP MULAI ; Ulangi lagi dari awal
TERUS:
MOV R0,#0 ; Ubah status R0=0 (lampu mati)
MOV P1,#0FFH ; dan matikan lampu LED di port 1
SJMP TUNGGU ; untuk menghindari bouncing, lompat ke
TUNGGU
END
Tidak ada komentar:
Posting Komentar