; Modul 1 program menyalakan lampu dari PORTA, PORTA dan PORTB, PORTA PORTB PORTC,
; Kemudian terakhir mati semua

$MOD51
$TITLE(MODE 0 PPI 8255)

PORTA	EQU 2000H
PORTB	EQU 2001H
PORTC	EQU 2002H
CPORT	EQU 2003H
CW	ECU 0080H

        CSEG
        ORG     4000H
        AJMP    Start
        ORG     4100H

Delay:          MOV     R2,#0FFH
Dell:           MOV     R3,#0FFH
                DJNZ    R3,$
                DJNZ    R2,Dell
                RET

Start:          MOV     SP,#30H
                ACALL   Delay   ;TUNGGU 8255 SIAP

;           -----------------
;           INISIALISASI 8255
;           -----------------

                MOV     DPTR,#CPORT
                MOV     A,#CW
                MOVX    @DPTR,A

;       ------------------------------
;       LAMPU MENYALA A,B,C BERGANTIAN
;       ------------------------------

Loop:   MOV  DPTR,#PORTA         ;A AKTIF
        MOV  A,#0FFH             ;BIT BERNILAI 1
        MOVX @DPTR,A             ;PORT A MENYALA

        MOV  DPTR,#PORTB         ;B AKTIF
        MOV  A,#00H              ;BIT BERNILAI 0
        MOVX @DPTR,A             ;PORT B MATI

        MOV  DPTR,#PORTC         ;C AKTIF
        MOV  A,#00H              ;BIT BERNILAI 0
        MOVX @DPTR,A             ;PORT C MATI

        ACALL Delay              ;WAKTU TUNDA LED MENYALA
	ACALL Delay              ;WAKTU TUNDA LED MENYALA
	ACALL Delay              ;WAKTU TUNDA LED MENYALA
	

        MOV  DPTR,#PORTA         ;A AKTIF
        MOV  A,#0FFH             ;BIT BERNILAI 1
        MOVX @DPTR,A             ;PORT A MENYALA

        MOV  DPTR,#PORTB         ;B AKTIF
        MOV  A,#0FFH             ;BIT BERNILAI 1
        MOVX @DPTR,A             ;PORT B MENYALA

        MOV  DPTR,#PORTC         ;C AKTIF
        MOV  A,#00H              ;BIT BERNILAI 0
        MOVX @DPTR,A             ;PORT C MATI


        ACALL Delay              ;WAKTU TUNDA LED MENYALA
	ACALL Delay              ;WAKTU TUNDA LED MENYALA
	ACALL Delay              ;WAKTU TUNDA LED MENYALA


        MOV  DPTR,#PORTA         ;A AKTIF
        MOV  A,#0FFH             ;BIT BERNILAI 1
        MOVX @DPTR,A             ;PORT A MENYALA

        MOV  DPTR,#PORTB         ;B AKTIF
        MOV  A,#0FFH             ;BIT BERNILAI 1
        MOVX @DPTR,A             ;PORT B MENYALA

        MOV  DPTR,#PORTC         ;C AKTIF
        MOV  A,#0FFH             ;BIT BERNILAI 1
        MOVX @DPTR,A             ;PORT C MENYALA

        ACALL Delay              ;WAKTU TUNDA LED MENYALA
	ACALL Delay              ;WAKTU TUNDA LED MENYALA
	ACALL Delay              ;WAKTU TUNDA LED MENYALA

        MOV  DPTR,#PORTA         ;A AKTIF
        MOV  A,#00H              ;BIT BERNILAI 0
        MOVX @DPTR,A             ;PORT A MATI

        MOV  DPTR,#PORTB         ;B AKTIF
        MOV  A,#00H              ;BIT BERNILAI 0
        MOVX @DPTR,A             ;PORT B MATI

        MOV  DPTR,#PORTC         ;C AKTIF
        MOV  A,#00H              ;BIT BERNILAI 0
        MOVX @DPTR,A             ;PORT C MATI

        ACALL Delay              ;WAKTU TUNDA LED MENYALA
	ACALL Delay              ;WAKTU TUNDA LED MENYALA
	ACALL Delay              ;WAKTU TUNDA LED MENYALA


        AJMP Loop                ;JUMP KE Loop
        END

	
