P=16F84
__CONFIG _XT_OSC&_WDT_OFF&_PWRTE_OFF
INCLUDE "P16F84.INC"
ORG 0X00
GOTO MULAI
MULAI
BSF STATUS,RP0 ; UNTUK SETTING REGISTER FILE
MOVLW B'00000001' ; ALAMAT PADA PORTB
MOVWF TRISB ; PORTB DI SET MENJADI OUTPUT & INPUT
MOVLW B'00011111' ; ALAMAT PADA PORTA
MOVWF TRISA ; PORTA DI SET MENJADI INPUT
BCF STATUS,RP0 ; UNTUK CLEAR REGISTER FILE
CLRF PORTB ; UNTUK CLEAR REGISTER FILE PADA OUTPUT
PROGRAM ; NAMA LABEL
BTFSS PORTA,1 ; PORTA,1 INPUT MENGGUNAKAN PUSH BOTTOM
CALL OFF ; MEMANGGIL LABEL OFF
BTFSS PORTA,0 ; PORTA,0 INPUT MENGGUNAKAN PUSH BOTTOM
BSF PORTB,3 ; PERINTAH MENYALAKAN PADA PORTB,3
BTFSS PORTA,2 ; PORTA,2 INPUT MENGGUNAKAN PUSH BOTTOM
BSF PORTB,4 ; PERINTAH MENYALAKAN PADA PORTB,4
BTFSS PORTA,3 ; PORTA,3 INPUT MENGGUNAKAN PUSH BOTTOM
BSF PORTB,5 ; PERINTAH MENYALAKAN PADA PORTB,5
BTFSS PORTA,4 ; PORTA,4 INPUT MENGGUNAKAN PUSH BOTTOM
BSF PORTB,6 ; PERINTAH MENYALAKAN PADA PORTB,6
BTFSS PORTB,0 ; PORTB,0 INPUT MENGGUNAKAN PUSH BOTTOM
BSF PORTB,7 ; PERINTAH MENYALAKAN PADA PORTB,7
GOTO PROGRAM ; KEMBALI KE LABEL PROGRAM
OFF ; NAMA LABEL
BTFSS PORTA,0 ; PORTA,0 ON
CALL LAMP1 ; MEMANGGIL LABEL LAMP1
BTFSS PORTA,2 ; PORTA,2 ON
CALL LAMP2 ; MEMANGGIL LABEL LAMP2
BTFSS PORTA,3 ; PORTA,3 ON
CALL LAMP3 ; MEMANGGIL LABEL LAMP3
BTFSS PORTA,4 ; PORTA,4 ON
CALL LAMP4 ; MEMANGGIL LABEL LAMP4
BTFSS PORTB,0 ; PORTB,0 ON
CALL LAMP5 ; MEMANGGIL LABEL LAMP5
GOTO OFF ; KEMBALI KE LABEL OFF
LAMP1 ; NAMA LABEL
BCF PORTB,3 ; PERINTAH UNTUK MEMATIKAN PORTB,3
CALL TIME ; MEMANGGIL WAKTU
GOTO PROGRAM ; KEMBALI KE LABEL PROGRAM
LAMP2
BCF PORTB,4 ; PERINTAH UNTUK MEMATIKAN PORTB,4
CALL TIME ; MEMANGGIL WAKTU
GOTO PROGRAM ; KEMBALI KE LABEL PROGRAM
LAMP3
BCF PORTB,5 ; PERINTAH UNTUK MEMATIKAN PORTB,5
CALL TIME ; MEMANGGIL WAKTU
GOTO PROGRAM ; KEMBALI KE LABEL PROGRAM
LAMP4
BCF PORTB,6 ; PERINTAH UNTUK MEMATIKAN PORTB,6
CALL TIME ; MEMANGGIL WAKTU
GOTO PROGRAM ; KEMBALI KE LABEL PROGRAM
LAMP5
BCF PORTB,7 ; PERINTAH UNTUK MEMATIKAN PORTB,7
CALL TIME ; MEMANGGIL WAKTU
GOTO PROGRAM ; KEMBALI KE LABEL PROGRAM
TIME ; NAMA LABEL < PERINTAH MENGGUNAKAN TIMER INTERNAL>
MOVLW D'255'
MOVWF 2EH
LOOP1
MOVLW D'255'
MOVWF 2DH
LOOP2
DECFSZ 2DH
GOTO LOOP2
DECFSZ 2EH
GOTO LOOP1
RETURN
END
0 komentar:
Posting Komentar