Gambar skematik untuk mengontrol saklar dan seven segment adalah sebagai berikut:
Dimana blok diagram dari penampil status saklar ke seven segment adalah sebagai berikut:
Proses pertama adalah membaca status saklar, selanjutnya data tersebut diubah dan disesuaikan dengan keadaan saklar yang sebenarnya, yaitu akan berlogik “1” jika tertutup dan berlogik “0” jika terbuka. Lalu dipilih instruksi CPL. Selanjutnya data tersebut akan diubah ke format seven segment dengan bantuan sub-program konversi. Akhirnya data tersebut akan dikirimkan ke seven segment.
Misalkan semua saklar (s1-s4) terbuka, maka pada display seven segment akan tampil angka “0”. Sedang jika semua saklar ditekan atau berlogik satu, maka display seven segment menampilkan angka “F”.
Adapun program dari aplikasi ini adalah:
------------------------------------------------------------------------------------------------------------------------
Adapun program dari aplikasi ini adalah:
------------------------------------------------------------------------------------------------------------------------
org 0h
baca: mov a,p2
cpl a
anl a,#0Fh
acall konv
cpl a
mov p2,a
sjmp baca
konv: inc a
movc a,@a+pc
ret
datassg: db 3Fh,06h,5Bh,4Fh,66h,6Dh,3Dh,07h,7Fh,6Fh
db 77h,3Ch,29h,3Eh,79h,71h
--------------------------------------------------------------------------------------------------------------------------
Logika programnya adalah sebagai berikut:
• org 0h
menyiapkan alamat 0h untuk penulisan program.
• mov a,p2
menyalin nilai atau data di port 2 ke a (akumulator). Atau dapat dikatakan juga sebagai pembacaan status saklar.
• cpl a
mengkomplemenkan nilai a, nilai 1 menjadi 0 dan sebaliknya.
• anl a,#0Fh
anl yaitu instruksi untuk melakukan operasi AND antara dua buah variabel dan menyimpannya di variabel tujuan. Variabel tujuannya adalah a, dan dilakukan operasi AND antara a yang berisi status saklar dengan 0Fh.
• acall konv
Melakukan lompatan ke suatu subroutine yang diberi nama konv. Dimana isi dari subroutine konv adalah :
• konv: inc a
movc a,@a+pc
ret
Perintah inc merupakan perintah penambahan satu pada isi a(akumulator).
Perintah movc a,@a+pc adalah melakukan pemindahan data dari memori program yang ditunjuk oleh PC (Program Counter) dengan indeks akumulator A menuju ke akumulator A. Atau baca datassg dengan alamat pc+a. Dimana datassg, yaitu:
• datassg: db 3Fh,06h,5Bh,4Fh,66h,6Dh,3Dh,07h,7Fh,6Fh
db 77h,3Ch,29h,3Eh,79h,71h
Perintah ret melakukan lompatan ke alamat yang disimpan dalam SP. Instruksi ini biasa digunakan pada saat kembali dari subroutine yang dipanggil dengan instruksi ACALL atau LCALL.
• cpl a
melakukan pengkomplemenan nilai a kembali, untuk mendapatkan pengaturan seven segment common anoda.
• mov p2,a
data kembali di salin, untuk menampilkannya di display seven segment.
• sjmp baca
melakukan lompatan kembali ke awal program, siap untuk perintah penekanan selanjutnya.
baca: mov a,p2
cpl a
anl a,#0Fh
acall konv
cpl a
mov p2,a
sjmp baca
konv: inc a
movc a,@a+pc
ret
datassg: db 3Fh,06h,5Bh,4Fh,66h,6Dh,3Dh,07h,7Fh,6Fh
db 77h,3Ch,29h,3Eh,79h,71h
--------------------------------------------------------------------------------------------------------------------------
Logika programnya adalah sebagai berikut:
• org 0h
menyiapkan alamat 0h untuk penulisan program.
• mov a,p2
menyalin nilai atau data di port 2 ke a (akumulator). Atau dapat dikatakan juga sebagai pembacaan status saklar.
• cpl a
mengkomplemenkan nilai a, nilai 1 menjadi 0 dan sebaliknya.
• anl a,#0Fh
anl yaitu instruksi untuk melakukan operasi AND antara dua buah variabel dan menyimpannya di variabel tujuan. Variabel tujuannya adalah a, dan dilakukan operasi AND antara a yang berisi status saklar dengan 0Fh.
• acall konv
Melakukan lompatan ke suatu subroutine yang diberi nama konv. Dimana isi dari subroutine konv adalah :
• konv: inc a
movc a,@a+pc
ret
Perintah inc merupakan perintah penambahan satu pada isi a(akumulator).
Perintah movc a,@a+pc adalah melakukan pemindahan data dari memori program yang ditunjuk oleh PC (Program Counter) dengan indeks akumulator A menuju ke akumulator A. Atau baca datassg dengan alamat pc+a. Dimana datassg, yaitu:
• datassg: db 3Fh,06h,5Bh,4Fh,66h,6Dh,3Dh,07h,7Fh,6Fh
db 77h,3Ch,29h,3Eh,79h,71h
Perintah ret melakukan lompatan ke alamat yang disimpan dalam SP. Instruksi ini biasa digunakan pada saat kembali dari subroutine yang dipanggil dengan instruksi ACALL atau LCALL.
• cpl a
melakukan pengkomplemenan nilai a kembali, untuk mendapatkan pengaturan seven segment common anoda.
• mov p2,a
data kembali di salin, untuk menampilkannya di display seven segment.
• sjmp baca
melakukan lompatan kembali ke awal program, siap untuk perintah penekanan selanjutnya.