 0000                 .DATA 
     ;===== VARIABEL YANG DIGUNAKAN
 0050                 ORG   50H
 0050 CounterDisplay: DS    1                      ;Variabel penghitung jumlah data yang
     ;telah ditampilkan dalam 1 baris
 0051 PointerGrafik:  DS    2                      ;Pointer penunjuk alamat data yang
     ;ditampilkan pada LCD Grafik

     ;===== RUTIN-RUTIN DST51
 0000                 .CODE 
 0157=Writeext_memory EQU   0157H
 01B8=Init_Serial     EQU   01B8H
 01C8=Serial_Out      EQU   01C8H
 01D0=Serial_In       EQU   01D0H
 01D8=KirimPesan_SeriaEQU   01D8H

 0028=JumlahKolom     EQU   40
 0040=JumlahBaris     EQU   64

 0486=InitLCDGRP      EQU   0486H
 04BE=SetTExtHome     EQU   04BEH
 04C4=SetGrafikHome   EQU   04C4H
 04CA=SetGrafikArea   EQU   04CAH
 04D0=SetTextArea     EQU   04D0H
 04E0=TextON          EQU   04E0H
 04E9=GrafikON        EQU   04E9H
 04F2=CursorONBlinkON EQU   04F2H
 0513=CursorOFFBlinkOFEQU   0513H
 051C=TextOFF         EQU   051CH
 0525=GrafikOFF       EQU   0525H
 052E=TulisDataLCD    EQU   052EH
 053B=BacaDataLCD     EQU   053BH
 0548=KirimPerintah   EQU   0548H
 0575=TungguStatus1   EQU   0575H
 058B=TungguStatusAWR EQU   058BH
 05A1=TungguStatusAR  EQU   05A1H
 05B7=SetPolaCursor   EQU   05B7H
 05C0=SetPosisiCursor EQU   05C0H
 05C7=SetPointerAlamatEQU   05C7H
 05CE=HapusMemori     EQU   05CEH
 05FD=KirimKarakterLCDEQU   05FDH
 0609=KirimPesanLCD   EQU   0609H

 0620=GetBitmapHPT    EQU   0620H

     ;=====KONSTANTA======
 00C0=TulisADPplus    EQU   0C0H
 00C1=BacaADPplus     EQU   0C1H
 00C2=TulisADPminus   EQU   0C2H
 00C3=BacaADPminus    EQU   0C3H
 00C4=TulisADP        EQU   0C4H
 00C5=BacaADP         EQU   0C5H

 00A0=Cursor1Line     EQU   0A0H
 00A1=Cursor2Line     EQU   0A1H
 00A2=Cursor3Line     EQU   0A2H
 00A3=Cursor4Line     EQU   0A3H
 00A5=Cursor5Line     EQU   0A5H
 00A6=Cursor6Line     EQU   0A6H
 00A7=Cursor7Line     EQU   0A7H
 0040=TXHOME          EQU   40H
 0041=TXAREA          EQU   41H
 0042=GRHOME          EQU   42H
 0043=GRAREA          EQU   43H
 0021=SETCURSOR       EQU   21H
 0022=OFFSET          EQU   22H
 0024=ADPSET          EQU   24H
 00B0=AWRON           EQU   0B0H
 00B2=AWROFF          EQU   0B2H
 8200=CMDP            EQU   8200H
 8000=DP              EQU   8000H
 2000=ROM             EQU   2000H

     ;======AWAL PROGRAM
 2000                 ORG   ROM
2000  12 04 86 =0486  LCALL InitLCDGRP             ;Inisial LCD Grafik
2003  12 01 B8 =01B8  LCALL Init_Serial            ;Inisial Port Serial

2006  12 05 13 =0513  LCALL CursorOFFBlinkOFF
2009             Loop:
2009  90 30 00        MOV   DPTR,#TabelGrafis      ;DPTR di lokasi tempat data
     ;bitmap akan didownload
200C  12 06 20 =0620  LCALL GetBitmapHPT           ;Download File bitmap dari
     ;hyperterminal

200F  90 30 00        MOV   DPTR,#TabelGrafis      ;
2012  75 52 0B        MOV   PointerGrafik+1,#0BH   ;Pointer grafik menunjuk baris
2015  75 51 B8        MOV   PointerGrafik,#0B8H    ;terbawah
2018  7B 40           MOV   R3,#64

201A             LoopTampil:
201A  85 52 F0        MOV   B,PointerGrafik+1
201D  E5 51           MOV   A,PointerGrafik
201F  11 36    =2036  ACALL KirimGambar1Baris      ;Kirim 1 baris gambar
2021  A3              INC   DPTR
2022  A3              INC   DPTR
2023  11 29    =2029  ACALL TunjukBarissebelum     ;Pointer menunjuk ke baris atas
2025  DB F3    =201A  DJNZ  R3,LoopTampil          ;Lakukan sebanyak 64 kali hingga
     ;mencapai baris teratas
2027  01 09    =2009  AJMP  Loop

     ;====== Rutin ini berfungsi untuk menunjukkan Pointer grafik ke baris diatasnya
2029             TunjukBarissebel:
2029  7A 28           MOV   R2,#40
202B             LoopTunjuk:
202B  E5 51           MOV   A,PointerGrafik
202D  70 02    =2031  JNZ   TidakKurangiPointer2
202F  15 52           DEC   PointerGrafik+1

2031             TidakKurangiPoin:
2031  15 51           DEC   PointerGrafik
2033  DA F6    =202B  DJNZ  R2,LoopTunjuk
2035  22              RET   

     ;======= Rutin ini berfungsi untuk menampilkan data di lokasi yang ditunjuk
     ;oleh DPTR ke lokasi LCD yang digunjuk oleh Pointer Grafik sebanyak 1 baris
2036             KirimGambar1Bari:
2036  75 50 00        MOV   CounterDisplay,#00H
2039  12 05 C7 =05C7  LCALL SetPointerAlamat
203C  12 05 48 =0548  LCALL KirimPerintah
203F  74 B0           MOV   A,#AWRON
2041  12 05 48 =0548  LCALL KirimPerintah

2044             LoopDisplay:
2044  E0              MOVX  A,@DPTR
2045  F4              CPL   A
2046  12 05 2E =052E  LCALL TulisDataLCD
2049  12 05 8B =058B  LCALL TungguStatusAWR
204C  A3              INC   DPTR
204D  05 50           INC   CounterDisplay
204F  E5 50           MOV   A,CounterDisplay
2051  B4 1E F0 =2044  CJNE  A,#30,LoopDisplay
2054  74 B2           MOV   A,#AWROFF
2056  12 05 48 =0548  LCALL KirimPerintah
2059  22              RET   

     ;====== Lokasi file bitmap yang didownload
 3000                 ORG   3000H
 3000 TabelGrafis:    DS    0A00H

***** Successfull
