📄 lcddrive.src
字号:
; .\lcddrive.SRC generated from: lcddrive.c
; COMPILER INVOKED BY:
; C:\Keil\C51\BIN\C51.EXE lcddrive.c BROWSE DEBUG OBJECTEXTEND SRC(.\lcddrive.SRC)
NAME LCDDRIVE
?PR?_WriteData?LCDDRIVE SEGMENT CODE
?PR?_WriteCmd?LCDDRIVE SEGMENT CODE
?PR?_AdressPointSet?LCDDRIVE SEGMENT CODE
?PR?_TxtHomeAdresSet?LCDDRIVE SEGMENT CODE
?PR?_TxtWidthSet?LCDDRIVE SEGMENT CODE
?PR?_GraphicHomeAdressSet?LCDDRIVE SEGMENT CODE
?PR?_GraphicWidthSet?LCDDRIVE SEGMENT CODE
?PR?DisplayModelOr?LCDDRIVE SEGMENT CODE
?PR?displayModelXor?LCDDRIVE SEGMENT CODE
?PR?displayModelAnd?LCDDRIVE SEGMENT CODE
?PR?TxtSpecialSet?LCDDRIVE SEGMENT CODE
?PR?CursorFlashOn?LCDDRIVE SEGMENT CODE
?PR?CursorFlashOff?LCDDRIVE SEGMENT CODE
?PR?CursorOn?LCDDRIVE SEGMENT CODE
?PR?CursorOff?LCDDRIVE SEGMENT CODE
?PR?TxtDisplayOn?LCDDRIVE SEGMENT CODE
?PR?TxtDisplayOff?LCDDRIVE SEGMENT CODE
?PR?_CursorShapeSet?LCDDRIVE SEGMENT CODE
?PR?DataAutoWrite?LCDDRIVE SEGMENT CODE
?PR?DataAutoRead?LCDDRIVE SEGMENT CODE
?PR?OverAutoWrite?LCDDRIVE SEGMENT CODE
?PR?OverAutoRead?LCDDRIVE SEGMENT CODE
?PR?_DisplayString?LCDDRIVE SEGMENT CODE
?DT?_DisplayString?LCDDRIVE SEGMENT DATA OVERLAYABLE
EXTRN CODE (?C?CLDOPTR)
PUBLIC _DisplayString
PUBLIC OverAutoRead
PUBLIC OverAutoWrite
PUBLIC DataAutoRead
PUBLIC DataAutoWrite
PUBLIC _CursorShapeSet
PUBLIC TxtDisplayOff
PUBLIC TxtDisplayOn
PUBLIC CursorOff
PUBLIC CursorOn
PUBLIC CursorFlashOff
PUBLIC CursorFlashOn
PUBLIC TxtSpecialSet
PUBLIC displayModelAnd
PUBLIC displayModelXor
PUBLIC DisplayModelOr
PUBLIC _GraphicWidthSet
PUBLIC _GraphicHomeAdressSet
PUBLIC _TxtWidthSet
PUBLIC _TxtHomeAdresSet
PUBLIC _AdressPointSet
PUBLIC _WriteCmd
PUBLIC _WriteData
RSEG ?DT?_DisplayString?LCDDRIVE
?_DisplayString?BYTE:
string?2251: DS 3
; //#include <lcddrive.h>
; #include <absacc.h>
; #define unchar unsigned char
; //-----------------------------------
; //the lcd driver based on t9636c
; //write by liujianwei
; //-----------------------------------
; #define LCD_DATA_PORT 0x8000
; #define LCD_CMD_PORT 0x8001
; #define LCD_STATUS_PORT 0x8001
; //--------------------------------------
; // data type declare
; //-----------------------------------------
; //#define unchar unsigned char
; //#include <ABSACC.H>
; //----------------------------------
; // write data to the lcd
; //----------------------------------
; void WriteData(unchar Dat)
RSEG ?PR?_WriteData?LCDDRIVE
L?0030:
USING 0
L?0031:
LCALL _WriteData
MOV R7,AR5
_WriteData:
USING 0
; SOURCE LINE # 19
;---- Variable 'Dat?040' assigned to Register 'R7' ----
; {
; SOURCE LINE # 20
?C0001:
; while ((XBYTE[LCD_STATUS_PORT]&3)!=3);
; SOURCE LINE # 21
MOV DPTR,#08001H
MOVX A,@DPTR
ANL A,#03H
MOV R6,A
CJNE R6,#03H,?C0001
?C0002:
; XBYTE[LCD_DATA_PORT]=Dat;
; SOURCE LINE # 22
MOV DPTR,#08000H
MOV A,R7
MOVX @DPTR,A
; }
; SOURCE LINE # 23
RET
; END OF _WriteData
; //---------------------------------------
; // write command to the lcd
; //---------------------------------------
; void WriteCmd(unchar Cmd)
RSEG ?PR?_WriteCmd?LCDDRIVE
_WriteCmd:
USING 0
; SOURCE LINE # 27
;---- Variable 'Cmd?141' assigned to Register 'R7' ----
; {
; SOURCE LINE # 28
?C0004:
; while((XBYTE[LCD_STATUS_PORT]&3)!=3);
; SOURCE LINE # 29
MOV DPTR,#08001H
MOVX A,@DPTR
ANL A,#03H
MOV R6,A
CJNE R6,#03H,?C0004
?C0005:
; XBYTE[LCD_CMD_PORT]=Cmd;
; SOURCE LINE # 30
MOV DPTR,#08001H
MOV A,R7
MOVX @DPTR,A
; }
; SOURCE LINE # 31
RET
; END OF _WriteCmd
; //----------------------------------------
; //adress pointer set
; //-----------------------------------------
; void AdressPointSet(unchar x,unchar y)
RSEG ?PR?_AdressPointSet?LCDDRIVE
_AdressPointSet:
USING 0
; SOURCE LINE # 35
;---- Variable 'y?243' assigned to Register 'R5' ----
;---- Variable 'x?242' assigned to Register 'R7' ----
; {
; SOURCE LINE # 36
; WriteData(x);
; SOURCE LINE # 37
; WriteData(y);
; SOURCE LINE # 38
LCALL L?0030
; WriteCmd(0x24);
; SOURCE LINE # 39
MOV R7,#024H
LJMP _WriteCmd
; END OF _AdressPointSet
; }
; //------------------------------------------
; // text area home adress set
; //------------------------------------------
; void TxtHomeAdresSet(unchar x,unchar y)
RSEG ?PR?_TxtHomeAdresSet?LCDDRIVE
_TxtHomeAdresSet:
USING 0
; SOURCE LINE # 44
;---- Variable 'y?345' assigned to Register 'R5' ----
;---- Variable 'x?344' assigned to Register 'R7' ----
; {
; SOURCE LINE # 45
; WriteData(x);
; SOURCE LINE # 46
; WriteData(y);
; SOURCE LINE # 47
LCALL L?0030
; WriteCmd(0x40);
; SOURCE LINE # 48
MOV R7,#040H
LJMP _WriteCmd
; END OF _TxtHomeAdresSet
; }
; //-------------------------------------------
; //text area width set bytes number per line
; //-----------------------------------------------
; void TxtWidthSet(unchar x)
RSEG ?PR?_TxtWidthSet?LCDDRIVE
_TxtWidthSet:
USING 0
; SOURCE LINE # 53
;---- Variable 'x?446' assigned to Register 'R7' ----
; {
; SOURCE LINE # 54
; WriteData(x);
; SOURCE LINE # 55
LCALL _WriteData
; WriteData(0);
; SOURCE LINE # 56
CLR A
MOV R7,A
LCALL _WriteData
; WriteCmd(0x41);
; SOURCE LINE # 57
MOV R7,#041H
LJMP _WriteCmd
; END OF _TxtWidthSet
; }
; //---------------------------------------------
; //graphic area home adrress set
; //---------------------------------------------
; void GraphicHomeAdressSet(unchar x,unchar y)
RSEG ?PR?_GraphicHomeAdressSet?LCDDRIVE
_GraphicHomeAdressSet:
USING 0
; SOURCE LINE # 62
;---- Variable 'y?548' assigned to Register 'R5' ----
;---- Variable 'x?547' assigned to Register 'R7' ----
; {
; SOURCE LINE # 63
; WriteData(x);
; SOURCE LINE # 64
; WriteData(y);
; SOURCE LINE # 65
LCALL L?0031
; WriteCmd(0x42);
; SOURCE LINE # 66
MOV R7,#042H
LJMP _WriteCmd
; END OF _GraphicHomeAdressSet
; }
; //-------------------------------------------
; //graphic area width set bytes number per line
; //-----------------------------------------------
; void GraphicWidthSet(unchar x)
RSEG ?PR?_GraphicWidthSet?LCDDRIVE
_GraphicWidthSet:
USING 0
; SOURCE LINE # 71
;---- Variable 'x?649' assigned to Register 'R7' ----
; {
; SOURCE LINE # 72
; WriteData(x);
; SOURCE LINE # 73
LCALL _WriteData
; WriteData(0);
; SOURCE LINE # 74
CLR A
MOV R7,A
LCALL _WriteData
; WriteCmd(0x43);
; SOURCE LINE # 75
MOV R7,#043H
LJMP _WriteCmd
; END OF _GraphicWidthSet
; }
;
; //---------------------------------------------------
; // display model set
; // logic or,logic xor,logic and
; // text special set
; // ------------------------------------------------
; void DisplayModelOr() //or model and use the cgrom in the lcd
RSEG ?PR?DisplayModelOr?LCDDRIVE
DisplayModelOr:
USING 0
; SOURCE LINE # 83
; {
; SOURCE LINE # 84
; WriteCmd(0x80);
; SOURCE LINE # 85
MOV R7,#080H
LJMP _WriteCmd
; END OF DisplayModelOr
; }
;
; //-----------------------------------------------
; void displayModelXor() // xor model
RSEG ?PR?displayModelXor?LCDDRIVE
displayModelXor:
USING 0
; SOURCE LINE # 89
; {
; SOURCE LINE # 90
; WriteCmd(0x81);
; SOURCE LINE # 91
MOV R7,#081H
LJMP _WriteCmd
; END OF displayModelXor
; }
; //-----------------------------------------------
; void displayModelAnd() //and model
RSEG ?PR?displayModelAnd?LCDDRIVE
displayModelAnd:
USING 0
; SOURCE LINE # 94
; {
; SOURCE LINE # 95
; WriteCmd(0x83);
; SOURCE LINE # 96
MOV R7,#083H
LJMP _WriteCmd
; END OF displayModelAnd
; }
;
; //-----------------------------------------------
; void TxtSpecialSet() //
RSEG ?PR?TxtSpecialSet?LCDDRIVE
TxtSpecialSet:
USING 0
; SOURCE LINE # 100
; {
; SOURCE LINE # 101
; WriteCmd(0x84);
; SOURCE LINE # 102
MOV R7,#084H
LJMP _WriteCmd
; END OF TxtSpecialSet
; }
;
;
;
; //-----------------------------------------------------
; // display turn on and turn off set
; //---------------------------------------------------------
; void CursorFlashOn()
RSEG ?PR?CursorFlashOn?LCDDRIVE
CursorFlashOn:
USING 0
; SOURCE LINE # 110
; {
; SOURCE LINE # 111
; WriteCmd(0x91);
; SOURCE LINE # 112
MOV R7,#091H
LJMP _WriteCmd
; END OF CursorFlashOn
; }
;
; void CursorFlashOff()
RSEG ?PR?CursorFlashOff?LCDDRIVE
CursorFlashOff:
USING 0
; SOURCE LINE # 115
; {
; SOURCE LINE # 116
; WriteCmd(0x90);
; SOURCE LINE # 117
MOV R7,#090H
LJMP _WriteCmd
; END OF CursorFlashOff
; }
;
; void CursorOn()
RSEG ?PR?CursorOn?LCDDRIVE
CursorOn:
USING 0
; SOURCE LINE # 120
; {
; SOURCE LINE # 121
; WriteCmd(0x92);
; SOURCE LINE # 122
MOV R7,#092H
LJMP _WriteCmd
; END OF CursorOn
; }
;
; void CursorOff()
RSEG ?PR?CursorOff?LCDDRIVE
CursorOff:
USING 0
; SOURCE LINE # 125
; {
; SOURCE LINE # 126
; WriteCmd(0x90);
; SOURCE LINE # 127
MOV R7,#090H
LJMP _WriteCmd
; END OF CursorOff
; }
;
; void TxtDisplayOn()
RSEG ?PR?TxtDisplayOn?LCDDRIVE
TxtDisplayOn:
USING 0
; SOURCE LINE # 130
; {
; SOURCE LINE # 131
; WriteCmd(0x94);
; SOURCE LINE # 132
MOV R7,#094H
LJMP _WriteCmd
; END OF TxtDisplayOn
; }
;
; void TxtDisplayOff()
RSEG ?PR?TxtDisplayOff?LCDDRIVE
TxtDisplayOff:
USING 0
; SOURCE LINE # 135
; {
; SOURCE LINE # 136
; WriteCmd(0x98);
; SOURCE LINE # 137
MOV R7,#098H
LJMP _WriteCmd
; END OF TxtDisplayOff
; }
;
; //-----------------------------------------------------
; //cursor shape set
; //----------------------------------------------------
; void CursorShapeSet(unchar shape) //the shape my be 0xA0----0xA7
RSEG ?PR?_CursorShapeSet?LCDDRIVE
_CursorShapeSet:
USING 0
; SOURCE LINE # 143
;---- Variable 'shape?1750' assigned to Register 'R7' ----
; {
; SOURCE LINE # 144
; WriteCmd(shape);
; SOURCE LINE # 145
LJMP _WriteCmd
; END OF _CursorShapeSet
; }
;
; //----------------------------------------------------------
; // data auto read or write set
; //----------------------------------------------------------
; void DataAutoWrite()
RSEG ?PR?DataAutoWrite?LCDDRIVE
DataAutoWrite:
USING 0
; SOURCE LINE # 151
; {
; SOURCE LINE # 152
; WriteCmd(0xb0);
; SOURCE LINE # 153
MOV R7,#0B0H
LJMP _WriteCmd
; END OF DataAutoWrite
; }
; //----------------------------------------------------------
; void DataAutoRead()
RSEG ?PR?DataAutoRead?LCDDRIVE
DataAutoRead:
USING 0
; SOURCE LINE # 156
;
; {
; SOURCE LINE # 158
; WriteCmd(0xb1);
; SOURCE LINE # 159
MOV R7,#0B1H
LJMP _WriteCmd
; END OF DataAutoRead
; }
; //---------------------------------------------------------
; void OverAutoWrite()
RSEG ?PR?OverAutoWrite?LCDDRIVE
OverAutoWrite:
USING 0
; SOURCE LINE # 162
; {
; SOURCE LINE # 163
; WriteCmd(0xb2);
; SOURCE LINE # 164
MOV R7,#0B2H
LJMP _WriteCmd
; END OF OverAutoWrite
; }
;
; void OverAutoRead()
RSEG ?PR?OverAutoRead?LCDDRIVE
OverAutoRead:
USING 0
; SOURCE LINE # 167
; {
; SOURCE LINE # 168
; WriteCmd(0xb3);
; SOURCE LINE # 169
MOV R7,#0B3H
LJMP _WriteCmd
; END OF OverAutoRead
;
; }
; //--------------------------------------------------------------
; // display a string at current point
; //--------------------------------------------------------------
; void DisplayString(unchar *string)
RSEG ?PR?_DisplayString?LCDDRIVE
_DisplayString:
USING 0
; SOURCE LINE # 175
MOV string?2251,R3
MOV string?2251+01H,R2
MOV string?2251+02H,R1
; {
; SOURCE LINE # 176
; unchar i;
; i=0;
; SOURCE LINE # 178
;---- Variable 'i?2252' assigned to Register 'R5' ----
CLR A
MOV R5,A
; DataAutoWrite();
; SOURCE LINE # 179
LCALL DataAutoWrite
?C0027:
; while (string[i]!=0)
; SOURCE LINE # 180
MOV R3,string?2251
MOV R2,string?2251+01H
MOV R1,string?2251+02H
MOV DPL,R5
MOV DPH,#00H
LCALL ?C?CLDOPTR
MOV R7,A
JZ ?C0028
; {
; SOURCE LINE # 181
; WriteData(string[i]-0x20);
; SOURCE LINE # 182
ADD A,#0E0H
MOV R7,A
LCALL _WriteData
;
; i++;
; SOURCE LINE # 184
INC R5
; }
; SOURCE LINE # 185
SJMP ?C0027
?C0028:
; OverAutoWrite();
; SOURCE LINE # 186
LJMP OverAutoWrite
; END OF _DisplayString
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -