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

📄 8bit.lst

📁 Library for the 8051 microcontroller. such as math routine, hexBCD, LCD, Keyboard, I2C, Remote, Ke
💻 LST
字号:

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 1





       MCS-51 Family Macro Assembler   A S E M - 5 1   V 1.3
       =====================================================



	Source File:	E:\MiCrOConTroller\Coba_M-IDE\8BITLCD1\8BIT.asm
	Object File:	E:\MiCrOConTroller\Coba_M-IDE\8BITLCD1\8BIT.hex
	List File:	E:\MiCrOConTroller\Coba_M-IDE\8BITLCD1\8BIT.lst



 Line  I  Addr  Code            Source

    1:				;---------------------------------------------------------------------------------------------------
				---------------------------------------------------------------------------------
    2:				;Author: Ashwin.V
    3:				;Country:India
    4:				;Code:LCD interface in 8bit mode
    5:				;CPU:At89c51@11.0592Mhz
    6:				;Tips:All you need to do is call the line where you want to display the message, mov the charecter t
				o lcd_data and call datw.
    7:				;If you want to display a string, move the address of the hardcodded string into dptr and call datw.
    8:				;---------------------------------------------------------------------------------------------------
				----------------------------------------------------------------------------------
    9:
   10:
   11:		B      00B0	                       RS         EQU      P3.0
   12:		B      00B1	                       EN         EQU      P3.1
   13:		N	 30						   lcd_data	  DATA	   30h
   14:
   15:
   16:		N      0000	org 0000h
   17:
   18:	  0000	02 01 19	    ljmp lcd8_main
   19:
   20:		N      0030	org 0030h
   21:
   22:				;___________________________________________________________________________
   23:				;------------------------------delay subroutines----------------------------
   24:				;___________________________________________________________________________
   25:
   26:				;------------------------------100us delay----------------------------------
   27:
   28:	  0030	C0 00		delay_100us:       push 00h
   29:	  0032	78 2E		                   mov r0,#46
   30:	  0034	D9 FE		delay_100us_loop:  djnz r1,delay_100us_loop
   31:	  0036	D0 00		                   pop 00h
   32:	  0038	22		                   ret
   33:
   34:				;------------------------------16ms delay----------------------------------
   35:
   36:	  0039	C0 00		delay_16ms:         push 00h
   37:	  003B	C0 01		                    push 01h
   38:	  003D	78 1E		                    mov r0,#30
   39:	  003F	79 FF		delay_16ms_loop1:   mov r1,#255
   40:	  0041	D9 FE		delay_16ms_loop2:   djnz r1,delay_16ms_loop2

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 2



 Line  I  Addr  Code            Source

   41:	  0043	D8 FA		                    djnz r0,delay_16ms_loop1
   42:	  0045	D0 01		                    pop 01h
   43:	  0047	D0 00		                    pop 00h
   44:	  0049	22		                    ret
   45:
   46:				;--------------------------half second delay-------------------------------
   47:
   48:	  004A	C0 00		delay_half_second:	push 00h
   49:	  004C	C0 01					        push 01h
   50:	  004E	C0 02					        push 02h
   51:	  0050	7A 0A			                mov r2,#0ah
   52:	  0052	79 64		delay_half_second1:	mov r1,#64h
   53:	  0054	78 FF		delay_half_second2:	mov r0,#0ffh
   54:	  0056	D8 FE		back:	        	djnz r0,back
   55:	  0058	D9 FA			       		    djnz r1, delay_half_second2
   56:	  005A	DA F6				            djnz r2,delay_half_second1
   57:	  005C	D0 02					        pop 02h
   58:	  005E	D0 01					        pop 01h
   59:	  0060	D0 00					        pop 00h
   60:	  0062	22					        ret
   61:
   62:				;_________________________________________________________________
   63:				;----------------message definition and display-------------------
   64:				;_________________________________________________________________
   65:
   66:
   67:	  0063	C0 E0		disp_message:         push acc
   68:	  0065	C0 00		                      push 00h
   69:	  0067	78 11							  mov r0,#17    ; maximum of 16charecters on lcd display
   70:
   71:	  0069	74 00		disp_message_loop1:   mov a,#00h	; reset accumulator
   72:	  006B	93				              movc a,@a+dptr
   73:	  006C	D8 05							  djnz r0,disp_message_loop2
   74:
   75:	  006E	D0 00							  pop 00h
   76:	  0070	D0 E0							  pop acc
   77:	  0072	22							  ret
   78:
   79:	  0073	F5 30		disp_message_loop2:   mov lcd_data,a
   80:	  0075	11 DB		                      acall datw
   81:	  0077	11 30		                      acall delay_100us
   82:	  0079	A3				              inc dptr
   83:	  007A	80 ED							  sjmp disp_message_loop1
   84:
   85:	  007C	20 20 48 65	disp_ashwin:DB"  Hello ashwin  "
	  0080	6C 6C 6F 20
	  0084	61 73 68 77
	  0088	69 6E 20 20
   86:	  008C	54 65 73 74	disp_testing:DB"Testing 4bit LCD"
	  0090	69 6E 67 20
	  0094	34 62 69 74
	  0098	20 4C 43 44
   87:	  009C	49 6E 69 74	disp_initialising:DB"Initialising...."
	  00A0	69 61 6C 69
	  00A4	73 69 6E 67
	  00A8	2E 2E 2E 2E

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 3



 Line  I  Addr  Code            Source

   88:	  00AC	20 34 62 69	disp_ready:DB" 4bit LCD ready "
	  00B0	74 20 4C 43
	  00B4	44 20 72 65
	  00B8	61 64 79 20
   89:	  00BC	20 20 20 20	disp_clear:DB"                "
	  00C0	20 20 20 20
	  00C4	20 20 20 20
	  00C8	20 20 20 20
   90:
   91:				;___________________________________________________________________________
   92:				;--------------------command and data write subroutines---------------------
   93:				;___________________________________________________________________________
   94:
   95:
   96:	  00CC	C0 E0		cmdw:        push acc
   97:
   98:	  00CE	E5 30					 mov a,lcd_data
   99:	  00D0	F5 80		             mov p0,a
  100:	  00D2	C2 B0		             clr rs
  101:	  00D4	D2 B1		             setb en
  102:	  00D6	C2 B1		             clr en
  103:
  104:	  00D8	D0 E0					 pop acc
  105:	  00DA	22		             ret
  106:
  107:	  00DB	C0 E0		datw:        push acc
  108:
  109:	  00DD	E5 30					 mov a,lcd_data
  110:	  00DF	F5 80		             mov p0,a
  111:	  00E1	D2 B0		             setb rs
  112:	  00E3	D2 B1		             setb en
  113:	  00E5	C2 B1		             clr en
  114:
  115:	  00E7	D0 E0					 pop acc
  116:	  00E9	22		             ret
  117:
  118:				;___________________________________________________________________________
  119:				;--------------------------line select subroutines--------------------------
  120:				;___________________________________________________________________________
  121:
  122:
  123:	  00EA	75 30 80	line1:       mov lcd_data,#80h	          ;initial position of cursor
  124:	  00ED	11 CC		             acall cmdw
  125:	  00EF	11 30					 acall delay_100us
  126:	  00F1	22					 ret
  127:
  128:	  00F2	75 30 C0	line2:       mov lcd_data,#0c0h		 ;initial position of cursor
  129:	  00F5	11 CC		             acall cmdw
  130:	  00F7	11 30					 acall delay_100us
  131:	  00F9	22					 ret
  132:
  133:
  134:				;___________________________________________________________________________
  135:				;----------------------lcd initialisation subroutine------------------------
  136:				;___________________________________________________________________________
  137:

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 4



 Line  I  Addr  Code            Source

  138:
  139:	  00FA	11 39		lcd8_initialise: acall delay_16ms   ;wait more than 15ms after vdd reaches 4.5v
  140:
  141:	  00FC	75 30 38	                 mov lcd_data,#38h         ;2line 5x7 matrix
  142:	  00FF	11 CC		                 acall cmdw
  143:	  0101	11 30		                 acall delay_100us
  144:
  145:	  0103	75 30 0F				     mov lcd_data,#0fh	        ;display on, cursor on, cursor blinking
  146:	  0106	11 CC					     acall cmdw
  147:	  0108	11 30		                 acall delay_100us
  148:
  149:	  010A	75 30 01				     mov lcd_data,#01h	        ;clear screen
  150:	  010D	11 CC					     acall cmdw
  151:	  010F	11 30		                 acall delay_100us
  152:
  153:	  0111	75 30 06				     mov lcd_data,#06h	        ;cursor and display shifts(right/left)
  154:	  0114	11 CC					     acall cmdw
  155:	  0116	11 30		                 acall delay_100us
  156:
  157:	  0118	22						 ret
  158:
  159:				;___________________________________________________________________________
  160:				;-------------------------------lcd main code-------------------------------
  161:				;___________________________________________________________________________
  162:
  163:
  164:	  0119	75 80 00	lcd8_main:   mov p0,#00h
  165:	  011C	C2 B0		             clr RS              ;make out pins
  166:	  011E	C2 B1		             clr EN              ;make out pins
  167:	  0120	75 A8 00				 mov IE,#00h
  168:
  169:	  0123	11 FA					 acall lcd8_initialise
  170:				;---------------------------------------------------------------------------
  171:	  0125	11 EA					acall line1
  172:	  0127	90 00 9C				mov dptr,#disp_initialising
  173:	  012A	11 63					acall disp_message
  174:	  012C	11 4A					acall delay_half_second
  175:	  012E	11 4A					acall delay_half_second
  176:	  0130	11 4A					acall delay_half_second
  177:	  0132	11 4A					acall delay_half_second
  178:
  179:	  0134	12 00 F2				lcall line2
  180:	  0137	90 00 AC				mov dptr,#disp_ready
  181:	  013A	11 63					acall disp_message
  182:	  013C	11 4A					acall delay_half_second
  183:	  013E	11 4A					acall delay_half_second
  184:	  0140	11 4A					acall delay_half_second
  185:	  0142	11 4A					acall delay_half_second
  186:
  187:	  0144	12 00 EA	            lcall line1
  188:	  0147	90 00 8C				mov dptr,#disp_testing
  189:	  014A	11 63					acall disp_message
  190:	  014C	11 4A					acall delay_half_second
  191:	  014E	11 4A					acall delay_half_second
  192:
  193:	  0150	11 F2		lcd8_loop:  acall line2

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 5



 Line  I  Addr  Code            Source

  194:
  195:	  0152	90 00 BC				mov dptr,#disp_clear
  196:	  0155	11 63					acall disp_message
  197:
  198:	  0157	11 F2					acall line2
  199:	  0159	75 30 61				mov lcd_data,#'a'
  200:	  015C	11 DB					acall datw
  201:	  015E	11 4A					acall delay_half_second
  202:	  0160	75 30 62				mov lcd_data,#'b'
  203:	  0163	11 DB					acall datw
  204:	  0165	11 4A					acall delay_half_second
  205:	  0167	75 30 63				mov lcd_data,#'c'
  206:	  016A	12 00 DB				lcall datw
  207:	  016D	11 4A					acall delay_half_second
  208:	  016F	75 30 64				mov lcd_data,#'d'
  209:	  0172	12 00 DB		        lcall datw
  210:	  0175	11 4A					acall delay_half_second
  211:
  212:	  0177	11 F2					acall line2
  213:	  0179	90 00 7C		        mov dptr,#disp_ashwin
  214:	  017C	12 00 63		        lcall disp_message
  215:	  017F	11 4A					acall delay_half_second
  216:	  0181	11 4A					acall delay_half_second
  217:
  218:	  0183	80 CB					sjmp lcd8_loop
  219:
  220:
  221:				end





                     register banks used:  ---

                     no errors




ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 6





	       L I S T   O F   S Y M B O L S
	       =============================


SYMBOL				  TYPE     VALUE	LINE
------------------------------------------------------------
??ASEM_51			  NUMBER    8051
??VERSION			  NUMBER    0130
AC				  BIT	      D6
ACC				  DATA	      E0
B				  DATA	      F0
BACK				  CODE	    0056	  54
CMDW				  CODE	    00CC	  96
CY				  BIT	      D7
DATW				  CODE	    00DB	 107
DELAY_100US			  CODE	    0030	  28
DELAY_100US_LOOP		  CODE	    0034	  30
DELAY_16MS			  CODE	    0039	  36
DELAY_16MS_LOOP1		  CODE	    003F	  39
DELAY_16MS_LOOP2		  CODE	    0041	  40
DELAY_HALF_SECOND		  CODE	    004A	  48
DELAY_HALF_SECOND1		  CODE	    0052	  52
DELAY_HALF_SECOND2		  CODE	    0054	  53
DISP_ASHWIN			  CODE	    007C	  85
DISP_CLEAR			  CODE	    00BC	  89
DISP_INITIALISING		  CODE	    009C	  87
DISP_MESSAGE			  CODE	    0063	  67
DISP_MESSAGE_LOOP1		  CODE	    0069	  71
DISP_MESSAGE_LOOP2		  CODE	    0073	  79
DISP_READY			  CODE	    00AC	  88
DISP_TESTING			  CODE	    008C	  86
DPH				  DATA	      83
DPL				  DATA	      82
EA				  BIT	      AF
EN				  NUMBER    00B1	  12
ES				  BIT	      AC
ET0				  BIT	      A9
ET1				  BIT	      AB
EX0				  BIT	      A8
EX1				  BIT	      AA
EXTI0				  CODE	    0003
EXTI1				  CODE	    0013
F0				  BIT	      D5
IE				  DATA	      A8
IE0				  BIT	      89
IE1				  BIT	      8B
INT0				  BIT	      B2
INT1				  BIT	      B3
IP				  DATA	      B8
IT0				  BIT	      88
IT1				  BIT	      8A
LCD8_INITIALISE			  CODE	    00FA	 139
LCD8_LOOP			  CODE	    0150	 193
LCD8_MAIN			  CODE	    0119	 164
LCD_DATA			  DATA	      30	  13
LINE1				  CODE	    00EA	 123

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 7



SYMBOL				  TYPE     VALUE	LINE
------------------------------------------------------------
LINE2				  CODE	    00F2	 128
OV				  BIT	      D2
P				  BIT	      D0
P0				  DATA	      80
P1				  DATA	      90
P2				  DATA	      A0
P3				  DATA	      B0
PCON				  DATA	      87
PS				  BIT	      BC
PSW				  DATA	      D0
PT0				  BIT	      B9
PT1				  BIT	      BB
PX0				  BIT	      B8
PX1				  BIT	      BA
RB8				  BIT	      9A
RD				  BIT	      B7
REN				  BIT	      9C
RESET				  CODE	    0000
RI				  BIT	      98
RS				  NUMBER    00B0	  11
RS0				  BIT	      D3
RS1				  BIT	      D4
RXD				  BIT	      B0
SBUF				  DATA	      99
SCON				  DATA	      98
SINT				  CODE	    0023
SM0				  BIT	      9F
SM1				  BIT	      9E
SM2				  BIT	      9D
SP				  DATA	      81
T0				  BIT	      B4
T1				  BIT	      B5
TB8				  BIT	      9B
TCON				  DATA	      88
TF0				  BIT	      8D
TF1				  BIT	      8F
TH0				  DATA	      8C
TH1				  DATA	      8D
TI				  BIT	      99
TIMER0				  CODE	    000B
TIMER1				  CODE	    001B
TL0				  DATA	      8A
TL1				  DATA	      8B
TMOD				  DATA	      89
TR0				  BIT	      8C
TR1				  BIT	      8E
TXD				  BIT	      B1
WR				  BIT	      B6

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -