Kamis, 02 Januari 2014

AKSES DATA SECARA LOOK UP TABLE


-Teori
Akses  data  ke  alamat  memori  dapat  dilakukan  secara  berurutan  (indeks)  dengan  melibatkan  register DPTR, A dan register pencacah data misal R0.
Contoh:
MULAI:  MOV DPTR,#DATALED  ; isi reg DPTR dengan alamat awal data
       MOV R0,#00H  ; siapkan R0 sbdg pencacah data
NEXT:  CLR A  ; kosongkan isi reg A
      MOVC A,@A+DPTR  ; copy data dari alamat data yg ditunjuk DPTR ke A
      INC DPTR  ; naikkan alamat
      INC R0  ; naikkan pencacah data
      CJNE R0,#08h,NEXT  ; apakah cacah data sudah 8, jika belum ke next data
Program I RUNNING LED MANUAL
$mod51
CSEG
                ORG  4000H
                LJMP START
                ORG  4100H
START:
                MOV P1,#00000001B
                ACALL TUNDA
                MOV P1,#00000010B
                ACALL TUNDA
                MOV P1,#00000100B
                ACALL TUNDA
                MOV P1,#00001000B
                ACALL TUNDA
                MOV P1,#00010000B
                ACALL TUNDA
                MOV P1,#00100000B
                ACALL TUNDA
                MOV P1,#01000000B
                ACALL TUNDA
                MOV P1,#10000000B
                ACALL TUNDA
                LJMP START
TUNDA: MOV R7,#01H
LUP1:    MOV R6,#0FFH
LUP2:    MOV R5,#0FFH
                DJNZ R5,$
                DJNZ R6,LUP2
                DJNZ R7, LUP1
                RET
END
Program 2 RUNNING LED DENGAN LOOP UP TABLE
; PROGRAM AKSES DATA (LOOK UP TABLE)
; AKSES DATA BERURUTAN YANG DI SIMPAN DI TABEL DATA
; DI AKSESES DGN BANTUAN REG DPTR, REG A dan RO
; ==============================================
$MOD51
                CSEG
                ORG 4000h
                LJMP MULAI
                ORG 4100h
MULAI:  MOV DPTR,#DATALED
                MOV R0,#00H
NEXT:  CLR A
                MOVC A,@A+DPTR
                CPL A
                MOV P1,A
                INC DPTR
                ACALL TUNDA
                INC R0
                CJNE R0,#08h,NEXT
                SJMP MULAI
;=======PROSEDUR TUNDA===
TUNDA:  MOV R7,#01h
LUP1:    MOV R6,#0FFh
LUP2:    MOV R5,#0FFH
                DJNZ R5, $
                DJNZ R6,LUP2
                DJNZ R7,LUP1
                RET
;=======PROSEDUR TUNDA==END
DATALED:
DB 00000001b
DB 00000010b
DB 00000100b
DB 00001000b
DB 00010000b
DB 00100000b
DB 01000000b
DB 10000000b
END

Tidak ada komentar:

Posting Komentar