⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcddrive.src

📁 这是用proteus做的基于51核的一个菜单仿真的程序开发环境keil 没有使用os在裸机上跑
💻 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 + -