BERBAGILAH DALAM HAL KEBAIKAN TERMASUK ILMU WALAU CUMA SETITIK....
Showing posts with label PROGRAM PEMBUATAN JAM DIGITAL. Show all posts
Showing posts with label PROGRAM PEMBUATAN JAM DIGITAL. Show all posts

1/15/2012

PROGRAM PEMBUATAN JAM DIGITAL

;===============*****************===================
; PROGRAM PEMBUATAN JAM DIGITAL
;===============*****************===================
;
Keydata Equ 30H
Nomor Equ 31H
Jam Equ 32H
Menit Equ 33H
Hari Equ 34H
Tanggal Equ 35H
Bulan Equ 36H
Tahun Equ 37H
Data_Area Equ 38H
E Bit P3.5
RS Bit P3.4
kolom1 Bit P1.3
kolom2 Bit P1.2
kolom3 Bit P1.1
baris1 Bit P1.7
baris2 Bit P1.6
baris3 Bit P1.5
baris4 bit P1.4
keyport Equ P1
;
;========**********==========
; AWAL PROGRAM
;========**********==========

ORG 0000H
Ljmp MULAI

ORG 0003H
Acall PENGATURAN
Reti

ORG 0013H
Acall INTERUPSIRTC
Reti
;
;===========************==========
; PROGARAM UTAMA
;===========************==========
MULAI:
Acall INISIALLCD
Acall Awalan
Mov A,#01H
Acall KirimPerintah
Acall PERSIAPANRTC
CLR IT1
SETB EX1
CLR IT0
SETB EX0
SETB EA
SETB PX0
CLR PX1
SJMP $
;
;=================================
;SUB-ROUTINE PENGHASIL DELAY
;=================================
DELAY:
Mov R6,#02FH
DELAY1:
Mov R5,#50H
Djnz R5,$
Djnz R6,DELAY1
RET
LDELAY:
Mov R2,#020H
LDELAY1:
Acall DELAY
Djnz R2,LDELAY1
Ret
;
;===============================================
;SUB ROUTINE PENULISAN INSTRUKSI DAN DATA KE LCD
;===============================================
KirimPerintah:
Clr RS
Mov P0,A ;intruksi ke LCD
Setb E
Clr E ;module
Acall delay
Ret

KirimASCII:
Setb RS
Mov P0,A ;intruksi ke LCD
Setb E
Clr E ;module
Acall delay
Ret
;
;============***********=============
; SUB_ROUTINE PERSIAPAN MENGAKSES RTC
;============***********=============
PERSIAPANRTC:

Mov A,#00101111B ;MENGHASILKAN FREK 4Hz
Mov Dpl,#0AH ;ADDRESS REGISTER A
Movx @Dptr,A

Mov A,#11111010B ;INTERUPSI LENGKAP
Mov Dpl,#0BH ; ADDRESS REGISTER B
Movx @Dptr,A

Mov A,#20H
Mov Dpl,#50
Movx @Dptr,A

Mov A,#01111010B ;INTERUPSI LENGKAP
Mov Dpl,#0BH ; ADDRESS REGISTER B
Movx @Dptr,A

Ret
;
;============***********=============
; SUB_ROUTINE MEMASUKKAN JAM KE RTC
;============***********=============
Proses_Data:
MOV A,#%11111010B ;INTERUPSI LENGKAP
MOV DPL,#0BH ; ADDRESS REGISTER B
MOVX @DPTR,A

Mov A,Jam
MOV DPTR,#04
MOVX @DPTR,A

Mov A,Menit
MOV DPTR,#02
MOVX @DPTR,A

Mov A,Hari
MOV DPTR,#06
MOVX @DPTR,A

Mov A,Tanggal
MOV DPTR,#07
MOVX @DPTR,A

Mov A,Bulan
MOV DPTR,#08
MOVX @DPTR,A

Mov A,Tahun
MOV DPTR,#09
MOVX @DPTR,A

Ret
;
;============*********==============
;SUB- ROUTINE INTRUPSI PADA RTC
;============*********==============
INTERUPSIRTC:
Mov DPTR,#0CH
Movx A,@DPTR
Jb ACC.4,GANTIDETIK
Ret
;
;===========**********==============
; INISIALAISASI LCD
;===========**********==============
INISIALLCD:
Acall Ldelay
mov A,#03Fh
Acall KirimPerintah
Acall KirimPerintah
Acall LDELAY
Mov A,#0DH
Acall KirimPerintah
Mov A,#06H
Acall KirimPerintah
Mov A,#01H
Acall KirimPerintah
Mov A,#0CH
Acall KirimPerintah
Ret
;
;=============*************=============
; SUB-ROUTINE GANTI DETIK
;=============*************=============
TAMPILKANBCD:
MOVX A,@DPTR ;AMBIL DATA PADA DS1287
SWAP A ;BIT 7..4 KE BIT 3..0
LCALL OUTDIGIT ;CETAK ANGKA KE LCD
MOVX A,@DPTR ;AMBIL DATA LAGI
LCALL OUTDIGIT
RET

OUTDIGIT:
ANL A,#0FH ;BUANG BITKE 7..4
ORL A,#030H ;JADIKAN DATA LCD
ACALL KirimASCII
RET

GANTIDETIK:
ACALL TAMPILKANWAKTU
ACALL TAMPILKAN_TANGGAL
Reti

TAMPILKANWAKTU:
MOV A,#84H
ACALL KirimPerintah


MOV DPTR,#4 ;DATA JAM PADA DS12C887
ACALL TAMPILKANBCD ;TAMPILAKAN JAM PADA LCD
MOV A,#3AH
ACALL KirimASCII

MOV DPTR,#2 ;DATA MENIT PADA DS12C887
ACALL TAMPILKANBCD ;TAMPILKAN MENIT PADA LCD
MOV A,#3AH
ACALL KirimASCII

MOV DPTR,#0 ;DATA DETIK PADA DS12C887
ACALL TAMPILKANBCD
RET


TAMPILKAN_TANGGAL:
Mov A,#0C1H
Acall KirimPerintah
Mov R0,#03
Mov DPTR,#6 ;DATA TANGGAL PADA DS1287

Tampil_tanggal_1:
Acall TAMPILKANBCD ;TAMPILAKAN PADA LCD
Mov A,#2DH
Acall KirimASCII
Inc Dptr
Djnz R0,Tampil_tanggal_1

Mov DPTR,#50 ;DATA ABAD PADA DS1287
Acall TAMPILKANBCD ;TAMPILKAN PADA LCD

Mov DPTR,#9 ;DATA TAHUN PADA DS1287
Acall TAMPILKANBCD ;TAMPILAKAN PADA LCD
Ret
;
;==========================================
; Instruksi Mengeluarkan Tampilan Awal
;==========================================
Awalan:

Mov DPTR,#Tampilan
barisc:
Mov R3,#16
Mov A,#80h
Acall KirimPerintah
tulis3:
Clr A
Movc A,@A+DPTR
Inc DPTR
Acall KirimASCII
Djnz R3,Tulis3
;
barisd:
Mov R3,#16
Mov A,#0C0h
Acall KirimPerintah
tulis4:
Clr A
Movc A,@A+DPTR
Inc DPTR
Acall KirimASCII
Djnz R3,Tulis4
Acall Ldelay
Ret
;
;==========================================
; Instruksi Mengeluarkan Menu
;==========================================
Pengaturan:
Mov Data_Area,#00H
Acall INISIALLCD
Mov R1,#2
Mov DPTR,#Menu1
barisa:
Mov R3,#16
Mov A,#80h
Acall KirimPerintah
tulis1:
Clr A
Movc A,@A+DPTR
Inc DPTR
Acall KirimASCII
Djnz R3,Tulis1
;
barisb:
Mov R3,#16
Mov A,#0C0h
Acall KirimPerintah
tulis2:
Clr A
Movc A,@A+DPTR
Inc DPTR
Acall KirimASCII
Djnz R3,Tulis2
Acall Ldelay
Djnz R1,barisa
;
;==========================================
; Instruksi Pendeteksi Keypad
;==========================================
scan_alpha_numerik:
Acall keypad
Mov A,keydata
Cjne A,#0FFh,key_pressed_1
Sjmp scan_alpha_numerik
;
key_pressed_1:
Cjne A,#0FH,key_pressed_2
Acall Proses_Data
Reti
;
key_pressed_2:
Orl A,#30h
Mov Nomor,A
Acall Tampil_key
Acall tunggu_tombol_dilepas
Ajmp scan_alpha_numerik
;
tunggu_tombol_dilepas:
Jnb baris1,$
Jnb baris2,$
Jnb baris3,$
Jnb baris4,$
Ret
;
Tampil_key:
Inc Data_Area
Mov A,Data_area
Cjne A,#01,Terus1
Mov A,#84H ;Tampilan Masukkan Jam
Acall Tampilkan_simpan
Swap A
Anl A,#0F0H
Mov Jam,A
Ret
;
Terus1:
Cjne A,#02,Terus2
Mov A,#85H
Acall Tampilkan_simpan
Anl A,#0FH
Orl A,Jam
Mov Jam,A
Ret
;
Terus2:
Cjne A,#03,Terus3
Mov A,#87H ;Tampilan Masukkan Menit
Acall Tampilkan_simpan
Swap A
Anl A,#0F0H
Mov Menit,A
Ret
;
Terus3:
Cjne A,#04,Terus4
Mov A,#88H
Acall Tampilkan_simpan
Anl A,#0FH
Orl A,Menit
Mov Menit,A
Ret
;
Terus4:
Cjne A,#05,Terus5
Mov A,#0C2H ;Tampilan Masukkan Hari
Acall Tampilkan_simpan
Anl A,#0FH
Mov Hari,A
Ret
;
Terus5:
Cjne A,#06,Terus6
Mov A,#0C4H ;Tampilan Masukkan Tanggal
Acall Tampilkan_simpan
Swap A
Anl A,#0F0H
Mov Tanggal,A
Ret
;
Terus6:
Cjne A,#07,Terus7
Mov A,#0C5H
Acall Tampilkan_simpan
Anl A,#0FH
Orl A,Tanggal
Mov Tanggal,A
Ret
;
Terus7:
Cjne A,#08,Terus8
Mov A,#0C7H ;Tampilan Masukkan Bulan
Acall Tampilkan_simpan
Swap A
Anl A,#0F0H
Mov Bulan,A
Ret
Terus8:
Cjne A,#09,Terus9
Mov A,#0C8H
Acall Tampilkan_simpan
Anl A,#0FH
Orl A,Bulan
Mov Bulan,A
Ret
;
Terus9:
Cjne A,#10,Terus10
Mov A,#0CCH ;Tampilan Masukkan Tahun
Acall Tampilkan_simpan
Swap A
Anl A,#0F0H
Mov Tahun,A
Ret
;
Terus10:
Mov A,#0CDH
Acall Tampilkan_simpan
Anl A,#0FH
Orl A,Tahun
Mov Tahun,A
Ret
;
Tampilkan_simpan:
Acall KirimPerintah
Mov A,Nomor
Acall KirimASCII
Ret
;
;====================================
; Instruksi Untuk Pembacaan
; Keypad
;====================================
Keypad:
mov keyport,#0FFh
clr kolom1
ul1: jb baris1,key1
mov keydata,#1
ret
key1: jb baris2,key2
mov keydata,#4
ret
key2: jb baris3,key3
mov keydata,#7
ret
key3: jb baris4,key4
mov keydata,#0Eh
ret
key4: setb kolom1
clr kolom2
jb baris1,key5
mov keydata,#2
ret
key5: jb baris2,key6
mov keydata,#5
ret
key6: jb baris3,key7
mov keydata,#8
ret
key7: jb baris4,key8
mov keydata,#0
ret
key8: setb kolom2
clr kolom3
jb baris1,key9
mov keydata,#3
ret
key9: jb baris2,key10
mov keydata,#6
ret
key10: jb baris3,key11
mov keydata,#9
ret
key11: jb baris4,key12
mov keydata,#0Fh
ret
key12: Mov keydata,#0FFh
Ret
;
;============================================
; Tampilan Setting Data
;============================================
Tampilan:
DB 'Proyek Pembuatan'
DB ' Jam Digital '
;
Menu1:
DB 'PENGATURAN WAKTU'
DB ' MASUKKAN DATA '
DB ' : :00 '
DB ' 0 - - -20 '
;
END
Share