Code ASM - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 //////////////////SYMBOL DECLARATION/////////////////////////////////////////////////// RESET BIT P1.0 CD1 BIT P1.1 RD1 BIT P1.2 WR1 BIT P1.3 FS BIT P1.4 CE BIT P1.5 DATACOMMAD EQU P3 TXTHMADDRS1 EQU 00H TXTHMADDRS2 EQU 00H TXTHMADDRSCMD EQU 40H GRPHHMADDRS1 EQU 00H GRPHHMADDRS2 EQU 20H GRPHHMADDRSCMD EQU 42H AREA1 EQU 1EH AREA2 EQU 00H TXTAREACMD EQU 41H GRPHAREACMD EQU 43H MODESET EQU 88H DATA2 EQU 00H DATA1 EQU 1FH OFFSET EQU 22H ADDRSPNTR EQU 24H DISPLAYMODE EQU 94H ;========================PRG START===================================================== ORG 00H CLR RESET ;INIITIALIZATION OF LCD LCALL DELAY1MS ;KEEP THE RESET PIN LOW FOR 1ms SETB RESET ;RELEASE THE RESET PIN CLR FS ;THE VALUE OF FONT SELECT IS 0(IF FS=1, FONT SIZE IS 6*8;IF FS=0 ,FONT SIZE IS 8*8) LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT /////////////////////////GRAPHIC AND TEXT HOME ADDRESS SET/////////////////////////////////////////////// ;THIS COMMAND DEFINES FROM WHICH MEMORY LOCATION GRAPHIC AND TEXT DATA WILL BE SAVED IN EXTERNAL RAM ;BOTH GRAPHIC AND TEXT HOME ADDRESS SET HAS TWO DATA BYTE AND A COMMAND BYTE ;FIRST DATA BYTE IS THE UPPER ADDRESS ;SECOND DATA BYTE IS THE LOWER ADDRESS ;40H IS THE COMMAND BYTE FOR TEXT HOME ADDRESS SET ;42H IS THE COMMAND BYTE FOR GRAPHIC HOME ADDRESS SET ;BETWEEN EACH BYTE WRITE/READ STATUS HAS TO BE CHECKED ;==================================TEXT HOME ADDRESS SET================================================ MOV DATACOMMAD,#TXTHMADDRS1 ;FIRST DATABYTE FOR TEXT HOME ADDRESS LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT MOV DATACOMMAD,#TXTHMADDRS2 ;SECOND DATABYTE FOR TEXT HOME ADDRESS LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT MOV DATACOMMAD,#TXTHMADDRSCMD ;COMMAND BYTE FOR TEXT HOME ADDRESS LCALL WRITECOMMAND ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT ;==========================GRAPHIC HOME ADDRESS SET====================================================== MOV DATACOMMAD,#GRPHHMADDRS1 ;FIRST DATABYTE FOR GRAPHIC HOME ADDRESS LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT MOV DATACOMMAD,#GRPHHMADDRS2 ;SECOND DATABYTE FOR GRAPHIC HOME ADDRESS LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT MOV DATACOMMAD,#GRPHHMADDRSCMD ;COMMAND BYTE FOR GRAPHIC HOME ADDRESS LCALL WRITECOMMAND ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT ///////////////////////////TEXT AND GRAPHIC AREA SET\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ;IT DEFINE IN A SINGLE LINE HOW MANY COLUMN WILL BE USED FOR DATA DISPLAY ;FOR BOTH GRAPHIC AND TEXT AREA SET HAS TWO DATA BYTE AND A COMMAND BYTE ;FIRST DATA BYTE DECIDES AFTER HOW MANY COLUMN NEXT LINE HAS TO BE STARTED ;LET THE VALUE OF FIRST DATA BYTE IS #1EH,THEN AFTER 32 COLUMNS NEXT LINE WILL BE STARTED ;SECOND DATA BYTE IS ALWAYS 00H ;41H IS THE COMMAND BYTE FOR TEXT AREA SET ;43H IS THE COMMAND BYTE FOR GRAPHIC AREA SET ;BETWEEN EACH BYTE WRITE/READ STATUS HAS TO BE CHECKED ;==================================TEXT AREA SET====================================================== MOV DATACOMMAD,#AREA1 ;FIRST DATABYTE FOR TEXT AREA LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT MOV DATACOMMAD,#AREA2 ;SECOND DATABYTE FOR TEXT AREA LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT MOV DATACOMMAD,#TXTAREACMD ;COMMAND BYTE FOR TEXT AREA LCALL WRITECOMMAND ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT ;===========================GRAPHIC AREA SET============================================================== ; MOV DATACOMMAD,#AREA1 ;FIRST DATABYTE FOR GRAPHIC AREA LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT MOV DATACOMMAD,#AREA2 ;SECOND DATABYTE FOR GRAPHIC AREA LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT MOV DATACOMMAD,#GRPHAREACMD ;COMMAND BYTE FOR GRAPHIC AREA LCALL WRITECOMMAND ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT ////////////////////////////////////////////CURSOR SET///////////////////////////////////////////////////////////// ;MOV DATACOMMAD,#00H ;LCALL WRITEDATA ;LCALL STATUSCHECK ;MOV DATACOMMAD,#00H ;LCALL WRITEDATA ;LCALL STATUSCHECK ;MOV DATACOMMAD,#21H ;LCALL WRITECOMMAND ;LCALL STATUSCHECK ;MOV DATACOMMAD,#0A0H ;LCALL WRITECOMMAND ;LCALL STATUSCHECK ;MOV DATACOMMAD,#92H ;LCALL WRITECOMMAND ;LCALL STATUSCHECK ;MOV DATACOMMAD,#91H ;LCALL WRITECOMMAND ;LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT ////////////////////////////////////////MODE SET//////////////////////////////////////////////////////////// ;THIS WILL DEFINE HOW A TEXT OR GRAPHIC DATA TO BE DISPLAYED ;IT ALSO DEFINE WHETHER THE CGRAM CAN BE USED IN INTERNAL CHARACTER GENERATOR MODE OR EXTERNAL CHARACTER GENRATOR MODE ;IN INTERNAL CHARACTER GENRATOR MODE CHARACTER CODE 00H TO 7FH ARE DEDICATED FOR BUILT IN CHARCTER &80H TO 0FFH ARE DEDICATED FOR USER DEFINED CHARACTER ;BUT IN EXTERNAL CHARATER GENERATOR MODE ALL CHARACTER CODE i.e FROM 00H TO 0FFH ARE DEDICATED FOR USER DEFINED CHARACTER ;MODESET REQUIRED ONLY ONE COMMAND BYTE ;THE HIGHER NIBBLE OF THIS COMMAND BYTE IS FIXED,ONLY THE BITS OF LOWER NIBBLE DECIDES IN WHICH MODE DEVICE WILL BE OPERATED ;BY MODE SET COMMAND FOLLOWING MODES CAN BE SET ;OR MODE(1000X000B) ;AND MODE(1000X011B) ;EXOR MODE(1000X001B) ;TEXT ATTRIBUTE MODE(1000X100B) ;INTERNAL CHARACTER GENERATOR MODE(100000XXXB) ;EXTERNAL CHARACTER GENERATOR MODE(10001XXXB) ;IN THE ABOVE ,COMMAND BYTE OF THEIR RESPECTIVE MODE THE VALUE (EITHER 0 OR 1)OF THE BIT NAMED X DOESNOT AFFECT THE PARTICULAR MODE SET MOV DATACOMMAD,#MODESET ;COMMAND BYTE FOR MODE SET LCALL WRITECOMMAND ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT /////////////////////////////////////DISPLAY MODE SET/////////////////////////////////////////////////////// MOV DATACOMMAD,#DISPLAYMODE ;COMMAND BYTE FOR DISPLAY MODE LCALL WRITECOMMAND ;SUBROUTINE CALL FOR COMMAND WRITE FUNTION LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT /////////////////////////////////OFFSET REGISTER SET//////////////////////////////////////////////////////// MOV R2,#8H MOV DATACOMMAD,#DATA1 LCALL WRITEDATA LCALL STATUSCHECK MOV DATACOMMAD,#DATA2 LCALL WRITEDATA LCALL STATUSCHECK MOV DATACOMMAD,#OFFSET LCALL WRITECOMMAND LCALL STATUSCHECK /////////////////////////////////ADDRESS POINTER SET///////////////////////////////////////////////////////// MOV DATACOMMAD,#00H LCALL WRITEDATA LCALL STATUSCHECK MOV DATACOMMAD,#0f8H LCALL WRITEDATA LCALL STATUSCHECK MOV DATACOMMAD,#ADDRSPNTR LCALL WRITECOMMAND LCALL STATUSCHECK ////////////////////////////AUTO WRITE///////////////////////////////////////////////////////////////////// MOV DATACOMMAD,#0B0H LCALL WRITECOMMAND LCALL STATUSCHECK1 /////////////////////////////USER DEFINED DATA////////////////////////////////////////////////////////////// MOV A,#00000001B CLR C X: MOV DATACOMMAD,A LCALL WRITEDATA LCALL STATUSCHECK1 RLC A DJNZ R2,X ////////////////////////////AUTO WRITE STOP/////////////////////////////////////////////////////////////////// MOV DATACOMMAD,#0B2H LCALL WRITECOMMAND LCALL STATUSCHECK1 ;LCALL DELAY70MS //////////////////////////ADDRESS POINTER SET ////////////////////////////////////////////////////////////// ;DATA1 AND DATA2 IS SELECTED FROM TEXT HOME ADDRESS ;I HAVE SELECTED 00H AND 00H SINCE I HAVE TO DISPLAY DATA AT TOP LEFT CORNER MOV DATACOMMAD,#00H LCALL WRITEDATA LCALL STATUSCHECK MOV DATACOMMAD,#00H LCALL WRITEDATA LCALL STATUSCHECK MOV DATACOMMAD,#ADDRSPNTR LCALL WRITECOMMAND LCALL STATUSCHECK /////////////////////////////CHARACTER CODE TO BE DISPLAYED///////////////////////////////////////////////////// MOV DATACOMMAD,#00H LCALL WRITEDATA LCALL STATUSCHECK //////////////////////////DATA WRITE AND ADP NONVARIABLE///////////////////////////////////////////////// MOV DATACOMMAD,#0C4H LCALL WRITECOMMAND LCALL STATUSCHECK ;=============================================================================================================== sjmp $ /////////////////////////////////////SUBROUTINES//////////////////////////////////////////////////////////// ;=========================DATA WRITE FUNCTION UBROUTINE==================================================== WRITEDATA: CLR CD1 CLR WR1 SETB RD1 CLR CE LCALL DELAY1 SETB CE RET ;=========================COMMAND WRITE FUNCTION SUBROUTINE================================================== WRITECOMMAND: SETB CD1 CLR WR1 SETB RD1 CLR CE LCALL DELAY1 SETB CE RET STATUSCHECK: SETB CD1 CLR RD1 SETB WR1 CLR CE NOP NOP MOV A,DATACOMMAD X123: ANL A,#00000011B CJNE A,#00000011B,STATUS SJMP RETURN STATUS: SJMP X123 RETURN: SETB CE RET STATUSCHECK1: SETB CD1 CLR RD1 SETB WR1 CLR CE LCALL DELAY1 X567: MOV A,DATACOMMAD ANL A,#00001000B CJNE A,#00001000B,STATUS1 SJMP RETURN1 STATUS1: SJMP X567 RETURN1: SETB CE RET DELAY1: NOP NOP NOP NOP NOP NOP RET DELAY: NOP NOP RET DELAY1MS: MOV TMOD,#10H MOV TH1,#0fcH MOV TL1,#66H SETB TR1 CHECK1: JNB TF1,CHECK1 CLR TF1 CLR TR1 RET DELAY70MS: MOV TMOD,#10H MOV TH1,#00H MOV TL1,#0H SETB TR1 CHECK2: JNB TF1,CHECK1 CLR TF1 CLR TR1 RET END
//////////////////SYMBOL DECLARATION///////////////////////////////////////////////////
WR1 BIT P1.0
RD1 BIT P1.1
CE BIT P1.2
CD1 BIT P1.3
RESET BIT P1.4
DATACOMMAD EQU P3
TXTHMADDRS1 EQU 00H
TXTHMADDRS2 EQU 00H
TXTHMADDRSCMD EQU 40H
GRPHHMADDRS1 EQU 00H
GRPHHMADDRS2 EQU 20H
GRPHHMADDRSCMD EQU 42H
AREA1 EQU 1EH
AREA2 EQU 00H
TXTAREACMD EQU 41H
GRPHAREACMD EQU 43H
MODESET EQU 88H
OFFSETDATA2 EQU 00H
OFFSETDATA1 EQU 1FH
OFFSET EQU 22H
A_POINTERDATA1 EQU 30H
A_POINTERDATA2 EQU 31H
ADDRSPNTR EQU 24H
DISPLAYMODE EQU 94H
;////////////////////////////////////CODE START//////////////////////////////////////////////////////
ORG 00H
CLR RESET ;INIITIALIZATION OF LCD
LCALL DELAY1MS ;KEEP THE RESET PIN LOW FOR 1ms
SETB RESET ;RELEASE THE RESET PIN
CLR FS ;THE VALUE OF FONT SELECT IS 0(IF FS=1, FONT SIZE IS 6*8;IF FS=0 ,FONT SIZE IS 8*8)
LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
/////////////////////////GRAPHIC AND TEXT HOME ADDRESS SET///////////////////////////////////////////////
;THIS COMMAND DEFINES FROM WHICH MEMORY LOCATION GRAPHIC AND TEXT DATA WILL BE SAVED IN EXTERNAL RAM
;BOTH GRAPHIC AND TEXT HOME ADDRESS SET HAS TWO DATA BYTE AND A COMMAND BYTE
;FIRST DATA BYTE IS THE UPPER ADDRESS
;SECOND DATA BYTE IS THE LOWER ADDRESS
;40H IS THE COMMAND BYTE FOR TEXT HOME ADDRESS SET
;42H IS THE COMMAND BYTE FOR GRAPHIC HOME ADDRESS SET
;BETWEEN EACH BYTE WRITE/READ STATUS HAS TO BE CHECKED
;==================================TEXT HOME ADDRESS SET================================================
TXT_HM_ADDRESS_SET: MOV DATACOMMAD,#TXTHMADDRS1 ;FIRST DATABYTE FOR TEXT HOME ADDRESS
LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION
LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
MOV DATACOMMAD,#TXTHMADDRS2 ;SECOND DATABYTE FOR TEXT HOME ADDRESS
LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION
LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
MOV DATACOMMAD,#TXTHMADDRSCMD ;COMMAND BYTE FOR TEXT HOME ADDRESS
LCALL WRITECOMMAND ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION
LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
;==========================GRAPHIC HOME ADDRESS SET======================================================
GRPH_HM_ADDRESS_SET: MOV DATACOMMAD,#GRPHHMADDRS1 ;FIRST DATABYTE FOR GRAPHIC HOME ADDRESS
LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION
LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
MOV DATACOMMAD,#GRPHHMADDRS2 ;SECOND DATABYTE FOR GRAPHIC HOME ADDRESS
LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION
LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
MOV DATACOMMAD,#GRPHHMADDRSCMD ;COMMAND BYTE FOR GRAPHIC HOME ADDRESS
LCALL WRITECOMMAND ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION
LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
///////////////////////////TEXT AND GRAPHIC AREA SET\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;IT DEFINE IN A SINGLE LINE HOW MANY COLUMN WILL BE USED FOR DATA DISPLAY
;FOR BOTH GRAPHIC AND TEXT AREA SET HAS TWO DATA BYTE AND A COMMAND BYTE
;FIRST DATA BYTE DECIDES AFTER HOW MANY COLUMN NEXT LINE HAS TO BE STARTED
;LET THE VALUE OF FIRST DATA BYTE IS #1EH,THEN AFTER 32 COLUMNS NEXT LINE WILL BE STARTED
;SECOND DATA BYTE IS ALWAYS 00H
;41H IS THE COMMAND BYTE FOR TEXT AREA SET
;43H IS THE COMMAND BYTE FOR GRAPHIC AREA SET
;BETWEEN EACH BYTE WRITE/READ STATUS HAS TO BE CHECKED
;==================================TEXT AREA SET======================================================
TEXTAREASET: MOV DATACOMMAD,#AREA1 ;FIRST DATABYTE FOR TEXT AREA
LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION
LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
MOV DATACOMMAD,#AREA2 ;SECOND DATABYTE FOR TEXT AREA
LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION
LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
MOV DATACOMMAD,#TXTAREACMD ;COMMAND BYTE FOR TEXT AREA
LCALL WRITECOMMAND ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION
LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
;===========================GRAPHIC AREA SET==============================================================
GRAPHICAREASET: MOV DATACOMMAD,#AREA1 ;FIRST DATABYTE FOR GRAPHIC AREA
LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION
LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
MOV DATACOMMAD,#AREA2 ;SECOND DATABYTE FOR GRAPHIC AREA
LCALL WRITEDATA ;SUBROUTINE CALL FOR DATA WRITE FUNCTION
LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
MOV DATACOMMAD,#GRPHAREACMD ;COMMAND BYTE FOR GRAPHIC AREA
LCALL WRITECOMMAND ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION
LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
////////////////////////////////////////////CURSOR SET/////////////////////////////////////////////////////////////
;MOV DATACOMMAD,#00H
;LCALL WRITEDATA
;LCALL STATUSCHECK
;MOV DATACOMMAD,#00H
;LCALL WRITEDATA
;LCALL STATUSCHECK
;MOV DATACOMMAD,#21H
;LCALL WRITECOMMAND
;LCALL STATUSCHECK
;MOV DATACOMMAD,#0A0H
;LCALL WRITECOMMAND
;LCALL STATUSCHECK
;MOV DATACOMMAD,#92H
;LCALL WRITECOMMAND
;LCALL STATUSCHECK
;MOV DATACOMMAD,#91H
;LCALL WRITECOMMAND
;LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
////////////////////////////////////////MODE SET////////////////////////////////////////////////////////////
;THIS WILL DEFINE HOW A TEXT OR GRAPHIC DATA TO BE DISPLAYED
;IT ALSO DEFINE WHETHER THE CGRAM CAN BE USED IN INTERNAL CHARACTER GENERATOR MODE OR EXTERNAL CHARACTER GENRATOR MODE
;IN INTERNAL CHARACTER GENRATOR MODE CHARACTER CODE 00H TO 7FH ARE DEDICATED FOR BUILT IN CHARCTER &80H TO 0FFH ARE DEDICATED FOR USER DEFINED CHARACTER
;BUT IN EXTERNAL CHARATER GENERATOR MODE ALL CHARACTER CODE i.e FROM 00H TO 0FFH ARE DEDICATED FOR USER DEFINED CHARACTER
;MODESET REQUIRED ONLY ONE COMMAND BYTE
;THE HIGHER NIBBLE OF THIS COMMAND BYTE IS FIXED,ONLY THE BITS OF LOWER NIBBLE DECIDES IN WHICH MODE DEVICE WILL BE OPERATED
;BY MODE SET COMMAND FOLLOWING MODES CAN BE SET ;OR MODE(1000X000B)
;AND MODE(1000X011B)
;EXOR MODE(1000X001B)
;TEXT ATTRIBUTE MODE(1000X100B)
;INTERNAL CHARACTER GENERATOR MODE(100000XXXB)
;EXTERNAL CHARACTER GENERATOR MODE(10001XXXB)
;IN THE ABOVE ,COMMAND BYTE OF THEIR RESPECTIVE MODE ,THE VALUE (EITHER 0 OR 1)OF THE BIT NAMED X DOESNOT AFFECT THE PARTICULAR MODE SET
MODE_SET: MOV DATACOMMAD,#MODESET ;COMMAND BYTE FOR MODE SET
LCALL WRITECOMMAND ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION
LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
/////////////////////////////////////DISPLAY MODE SET///////////////////////////////////////////////////////
;BY THIS COMMAND FOLLOWING THING CAN BE CONTROLLED;DISPLAY ON/OFF(10010000B=ON)
;CURSOR ON/OFF(1001XX1XB=ON,1001XX0XB=OFF)
;CURSOR BLINK ON/OFF(1001XX11B=ON,1001XX10B=OFF))
;TEXT AND GRAPHIC ON/OFF(100101XX=TXT ON & GRPH OFF,100110XX=TXT OFF & GRPH OFF)
;BOTH TEXT AND GRAPHIC ON(100111XX=BOTH ON)
;AT A TIME BOTH TEXT AND GRAPHIC CAN BE MADE ON BY THIS COMMAND
;THIS HAS ONLY ONE COMMAND BYTE,NO DATA BYTE
;IN THE ABOVE, VALUE(0 0R 1)OF THE BIT NAMED X IN THE COMMAND BYTES DOESNOT AFFECT THEIR RESPECTIVE MODE SET
;
DISP_MODE_SET: MOV DATACOMMAD,#DISPLAYMODE ;COMMAND BYTE FOR DISPLAY MODE
LCALL WRITECOMMAND ;SUBROUTINE CALL FOR COMMAND WRITE FUNTION
LCALL STATUSCHECK ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
/////////////////////////////////OFFSET REGISTER SET////////////////////////////////////////////////////////
OFFST_RGSTR_SET: MOV R2,#8H
MOV DATACOMMAD,# OFFSETDATA1
LCALL WRITEDATA
LCALL STATUSCHECK
MOV DATACOMMAD,#DATA2
LCALL WRITEDATA
LCALL STATUSCHECK
MOV DATACOMMAD,#OFFSETDATA2
LCALL WRITECOMMAND
LCALL STATUSCHECK
/////////////////////////////////ADDRESS POINTER SET/////////////////////////////////////////////////////////
MOV A_POINTERDATA1,#00H
MOV DATACOMMAD,A_POINTERDATA1
LCALL WRITEDATA
LCALL STATUSCHECK
MOV A_POINTERDATA1,#0F8H
MOV DATACOMMAD,A_POINTERDATA1
LCALL WRITEDATA
LCALL STATUSCHECK
MOV DATACOMMAD,#ADDRSPNTR
LCALL WRITECOMMAND
LCALL STATUSCHECK
////////////////////////////AUTO WRITE/////////////////////////////////////////////////////////////////////
MOV DATACOMMAD,#0B0H
LCALL WRITECOMMAND
LCALL STATUSCHECK1
/////////////////////////////USER DEFINED DATA//////////////////////////////////////////////////////////////
MOV A,#00000001B
CLR C
X: MOV DATACOMMAD,A
LCALL WRITEDATA
LCALL STATUSCHECK1
RLC A
DJNZ R2,X
////////////////////////////AUTO WRITE STOP///////////////////////////////////////////////////////////////////
MOV DATACOMMAD,#0B2H
LCALL WRITECOMMAND
LCALL STATUSCHECK1
;LCALL DELAY70MS
//////////////////////////ADDRESS POINTER SET //////////////////////////////////////////////////////////////
MOV DATACOMMAD,#00H
LCALL WRITEDATA
LCALL STATUSCHECK
MOV DATACOMMAD,#00H
LCALL WRITEDATA
LCALL STATUSCHECK
MOV DATACOMMAD,#ADDRSPNTR
LCALL WRITECOMMAND
LCALL STATUSCHECK
/////////////////////////////CHARACTER CODE TO BE DISPLAYED/////////////////////////////////////////////////////
MOV DATACOMMAD,#00H
LCALL WRITEDATA
LCALL STATUSCHECK
//////////////////////////////DATA WRITE AND ADP NONVARIABLE/////////////////////////////////////////////////
MOV DATACOMMAD,#0C4H
LCALL WRITECOMMAND
LCALL STATUSCHECK
;===============================================================================================================
sjmp $
/////////////////////////////////////SUBROUTINES////////////////////////////////////////////////////////////
;=========================DATA WRITE FUNCTION UBROUTINE====================================================
WRITEDATA: CLR CD1
CLR WR1
SETB RD1
CLR CE
LCALL DELAY1
SETB CE
RET
;=========================COMMAND WRITE FUNCTION SUBROUTINE==================================================
WRITECOMMAND: SETB CD1
CLR WR1
SETB RD1
CLR CE
LCALL DELAY1
SETB CE
RET
STATUSCHECK: SETB CD1
CLR RD1
SETB WR1
CLR CE
NOP
NOP
MOV A,DATACOMMAD
X123: ANL A,#00000011B
CJNE A,#00000011B,STATUS
SJMP RETURN
STATUS:
SJMP X123
RETURN: SETB CE
RET
STATUSCHECK1: SETB CD1
CLR RD1
SETB WR1
CLR CE
LCALL DELAY1
X567: MOV A,DATACOMMAD
ANL A,#00001000B
CJNE A,#00001000B,STATUS1
SJMP RETURN1
STATUS1:
SJMP X567
RETURN1: SETB CE
RET
DELAY1: NOP
NOP
NOP
NOP
NOP
NOP
RET
DELAY: NOP
NOP
RET
DELAY1MS: MOV TMOD,#10H
MOV TH1,#0fcH
MOV TL1,#66H
SETB TR1
CHECK1: JNB TF1,CHECK1
CLR TF1
CLR TR1
RET
DELAY70MS: MOV TMOD,#10H
MOV TH1,#00H
MOV TL1,#0H
SETB TR1
CHECK2: JNB TF1,CHECK1
CLR TF1
CLR TR1
RET
END
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?