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

📄 basic-52.lst

📁 一个用PROTEUS搭建的51单片机的基本运行系统
💻 LST
📖 第 1 页 / 共 5 页
字号:

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 1





       MCS-51 Family Cross Assembler   A S E M - 5 1   V 1.2
       =====================================================



	Source File:	BASIC-52.ASM
	Object File:	BASIC-52.HEX
	List File:	BASIC-52.LST



 Line  I  Addr  Code            Source

    1:				;  December 18, 1986
    2:				;  MS-DOS compatible Source code for MCS BASIC-52 (tm)
    3:				;  Assembles with ASM51 Macro Assembler Version 2.2
    4:				;
    5:				;  The following source code does not include the floating point math
    6:				;  routines. These are seperately compiled using FP52.SRC.
    7:				;
    8:				;  Both the BASIC.SRC and FP52.SRC programs assemble into ABSOLUTE
    9:				;  object files, and do not need to be relocated or linked. The FP52
   10:				;  object code and the BASIC object code, when compiled without modification
   11:				;  of the source listings, create the same object code that is found on
   12:				;  the MCS BASIC-52 Version 1.1 microcontrollers.
   13:				;
   14:				;  The original source code had 7 "include" files that have been incorporated
   15:				;  into this file for ease of assembly.
   16:				;  These 7 files are: LOOK52.SRC, BAS52.RST, BAS52.PGM, BAS52.TL, BAS52.OUT,
   17:				;  BAS52.PWM, and BAS52.CLK.
   18:				;
   19:				;
   20:				;                       Intel Corporation, Embedded Controller Operations
   21:
   22:				$EJECT

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 2



 Line  I  Addr  Code            Source

   23:					;**************************************************************
   24:					;
   25:					; TRAP VECTORS TO MONITOR
   26:					;
   27:					; RESET TAG (0AAH) ---------2001H
   28:					;
   29:					; TAG LOCATION (5AH) ------ 2002H
   30:					;
   31:					; EXTERNAL INTERRUPT 0 ---- 2040H
   32:					;
   33:					; COMMAND MODE ENTRY ------ 2048H
   34:					;
   35:					; SERIAL PORT ------------- 2050H
   36:					;
   37:					; MONITOR (BUBBLE) OUTPUT - 2058H
   38:					;
   39:					; MONITOR (BUBBLE) INPUT -- 2060H
   40:					;
   41:					; MONITOR (BUBBLE) CSTS --- 2068H
   42:					;
   43:					; GET USER JUMP VECTOR ---- 2070H
   44:					;
   45:					; GET USER LOOKUP VECTOR -- 2078H
   46:					;
   47:					; PRINT AT VECTOR --------- 2080H
   48:					;
   49:					; INTERRUPT PWM ----------- 2088H
   50:					;
   51:					; EXTERNAL RESET ---------- 2090H
   52:					;
   53:					; USER OUTPUT-------------- 4030H
   54:					;
   55:					; USER INPUT -------------- 4033H
   56:					;
   57:					; USER CSTS --------------- 4036H
   58:					;
   59:					; USER RESET -------------- 4039H
   60:					;
   61:					; USER DEFINED PRINT @ ---  403CH
   62:					;
   63:					;***************************************************************
   64:					;
   65:				$EJECT

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 3



 Line  I  Addr  Code            Source

   66:					;***************************************************************
   67:					;
   68:					; MCS - 51  -  8K BASIC VERSION 1.1
   69:					;
   70:					;***************************************************************
   71:					;
   72:	  0000	61 87			AJMP	CRST		;START THE PROGRAM
   73:					;
   74:		N      0003		ORG	3H
   75:					;
   76:					;***************************************************************
   77:					;
   78:					;EXTERNAL INTERRUPT 0
   79:					;
   80:					;***************************************************************
   81:					;
   82:	  0003	20 31 2D		JB	DRQ,STQ		;SEE IF DMA IS SET
   83:	  0006	C0 D0			PUSH	PSW		;SAVE THE STATUS
   84:	  0008	02 40 03		LJMP	4003H		;JUMP TO USER IF NOT SET
   85:					;
   86:		N      000B		ORG	0BH
   87:					;
   88:					;***************************************************************
   89:					;
   90:					;TIMER 0 OVERFLOW INTERRUPT
   91:					;
   92:					;***************************************************************
   93:					;
   94:	  000B	C0 D0			PUSH	PSW		;SAVE THE STATUS
   95:	  000D	20 2E 10		JB	C_BIT,STJ	;SEE IF USER WANTS INTERRUPT
   96:	  0010	02 40 0B		LJMP	400BH		;EXIT IF USER WANTS INTERRUPTS
   97:					;
   98:		N      0013		ORG	13H
   99:					;
  100:					;***************************************************************
  101:					;
  102:					;EXTERNAL INTERRUPT 1
  103:					;
  104:					;***************************************************************
  105:					;
  106:	  0013	20 12 2B		JB	INTBIT,STK
  107:	  0016	C0 D0			PUSH	PSW
  108:	  0018	02 40 13		LJMP	4013H
  109:					;
  110:				$EJECT

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 4



 Line  I  Addr  Code            Source

  111:					;
  112:		N      001B		ORG	1BH
  113:					;
  114:					;***************************************************************
  115:					;
  116:					;TIMER 1 OVERFLOW INTERRUPT
  117:					;
  118:					;***************************************************************
  119:					;
  120:	  001B	C0 D0			PUSH	PSW
  121:	  001D	02 1F 78		LJMP	CKS_I
  122:					;
  123:	  0020	02 19 03	STJ:	LJMP	I_DR		;DO THE INTERRUPT
  124:					;
  125:					;***************************************************************
  126:					;
  127:					;SERIAL PORT INTERRUPT
  128:					;
  129:					;***************************************************************
  130:					;
  131:		N      0023		ORG	23H
  132:					;
  133:	  0023	C0 D0			PUSH	PSW
  134:	  0025	20 1F 1C		JB	SPINT,STU	;SEE IF MONITOR EANTS INTERRUPT
  135:	  0028	02 40 23		LJMP	4023H
  136:					;
  137:		N      002B		ORG	2BH
  138:					;
  139:					;**************************************************************
  140:					;
  141:					;TIMER 2 OVERFLOW INTERRUPT
  142:					;
  143:					;**************************************************************
  144:					;
  145:	  002B	C0 D0			PUSH	PSW
  146:	  002D	02 40 2B		LJMP	402BH
  147:					;
  148:				$EJECT

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 5



 Line  I  Addr  Code            Source

  149:					;**************************************************************
  150:					;
  151:					;USER ENTRY
  152:					;
  153:					;**************************************************************
  154:					;
  155:		N      0030		ORG	30H
  156:					;
  157:	  0030	02 19 3D		LJMP	IBLK		;LINK TO USER BLOCK
  158:					;
  159:	  0033	20 26 08	STQ:	JB	I_T0,STS	;SEE IF MONITOR WANTS IT
  160:	  0036	C2 96			CLR	DACK
  161:	  0038	30 B2 FD		JNB	P3.2,$		;WAIT FOR DMA TO END
  162:	  003B	D2 96			SETB	DACK
  163:	  003D	32			RETI
  164:					;
  165:	  003E	02 20 40	STS:	LJMP	2040H		;GO TO THE MONITOR
  166:					;
  167:	  0041	D2 16		STK:	SETB	INTPEN		;TELL BASIC AN INTERRUPT WAS RECEIVED
  168:	  0043	32			RETI
  169:					;
  170:	  0044	02 20 50	STU:	LJMP	2050H		;SERIAL PORT INTERRUPT
  171:					;
  172:				$EJECT

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 6



 Line  I  Addr  Code            Source

  173:
  174:				;$INCLUDE(:F2:LOOK52.SRC)
  175:				; INCLUDED BELOW
  176:
  177:					;
  178:					;**************************************************************
  179:					;
  180:					; This is the equate table for 8052 basic.
  181:					;
  182:					;**************************************************************
  183:					;
  184:					; The register to direct equates for CJNE instructions.
  185:					;
  186:		N      0000	R0B0	EQU	0
  187:		N      0001	R1B0	EQU	1
  188:		N      0002	R2B0	EQU	2
  189:		N      0003	R3B0	EQU	3
  190:		N      0004	R4B0	EQU	4
  191:		N      0005	R5B0	EQU	5
  192:		N      0006	R6B0	EQU	6
  193:		N      0007	R7B0	EQU	7
  194:					;
  195:					; Register bank 1 contains the text pointer
  196:					; and the arg stack pointer.
  197:					;
  198:		N      0008	TXAL	EQU	8		;R0 BANK 1 = TEXT POINTER LOW
  199:		N      0009	ASTKA	EQU	9		;R1 BANK 1 = ARG STACK
  200:		N      000A	TXAH	EQU	10		;R2 BANK 1 = TEXT POINTER HIGH
  201:					;
  202:					; Now five temporary locations that are used by basic.
  203:					;
  204:		N      000B	TEMP1	EQU	11
  205:		N      000C	TEMP2	EQU	12
  206:		N      000D	TEMP3	EQU	13
  207:		N      000E	TEMP4	EQU	14
  208:		N      000F	TEMP5	EQU	15
  209:					;
  210:				$EJECT

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 7



 Line  I  Addr  Code            Source

  211:					; Register bank 2 contains the read text pointer
  212:					; and the control stack pointer.
  213:					;
  214:		N      0010	RTXAL	EQU	16		;R0 BANK 2 = READ TEXT POINTER LOW
  215:		N      0011	CSTKA	EQU	17		;R1 BANK 2 = CONTROL STACK POINTER
  216:		N      0012	RTXAH	EQU	18		;R2 BANK 2 = READ TEXT POINTER HIGH
  217:					;
  218:					; Now some internal system equates.
  219:					;
  220:		N      0013	BOFAH	EQU	19		;START OF THE BASIC PROGRAM, HIGH BYTE
  221:		N      0014	BOFAL	EQU	20		;START OF THE BASIC PROGRAM, LOW BYTE
  222:		N      0015	NULLCT	EQU	21		;NULL COUNT
  223:		N      0016	PHEAD	EQU	22		;PRINT HEAD POSITION
  224:		N      0017	FORMAT	EQU	23
  225:					;
  226:					; Register bank 3 is for the user and can be loaded
  227:					; by basic
  228:					;
  229:					;
  230:					;
  231:					; Now everything else is used by basic.
  232:					; First the bit locations, these use bytes 34, 35, 36, 37 and 38
  233:					;
  234:				$EJECT

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 8



 Line  I  Addr  Code            Source

  235:		N	 10	OTS		BIT	16	;34.0-ON TIME INSTRUCTION EXECUTED
  236:		N	 11	INPROG		BIT	17	;34.1-INTERRUPT IN PROCESS
  237:		N	 12	INTBIT		BIT	18	;34.2-INTERRUPT SET BIT
  238:		N	 13	ON_ERR		BIT	19	;34.3-ON ERROR EXECUTED
  239:		N	 14	OTI		BIT	20	;34.4-ON TIME INTERRUPT IN PROGRESS
  240:		N	 15	LINEB		BIT	21	;34.5-LINE CHANGE OCCURED
  241:		N	 16	INTPEN		BIT	22	;34.6-INTERRUPT PENDING BIT
  242:		N	 17	CONB		BIT	23	;34.7-CAN CONTINUE IF SET
  243:		N	 18	GTRD		BIT	24	;35.0-READ GET LOCATION
  244:		N	 19	LPB		BIT	25	;35.1-PRINT TO LINE PRINTER PORT
  245:		N	 1A	CKS_B		BIT	26	;35.2-FOR PWM INTERRUPT
  246:		N	 1B	COB		BIT	27	;35.3-CONSOLE OUT BIT
  247:								;     0 = SERIAL PORT
  248:								;     1 = LINE PRINTER
  249:		N	 1C	COUB		BIT	28	;35.4-USER CONSOLE OUT BIT
  250:								;     0 = SERIAL PORT
  251:								;     1 = USER DRIVER
  252:		N	 1D	INBIT		BIT	29	;35.5-INITIALIZATION BIT
  253:		N	 1E	CIUB		BIT	30	;35.6-USER CONSOLE IN BIT
  254:								;     0 = SERIAL PORT
  255:								;     1 = USER ROUTINE
  256:		N	 1F	SPINT		BIT	31	;35.7-SERIAL PORT INTERRUPT
  257:		N	 20	STOPBIT		BIT	32	;36.0-PROGRAM STOP ENCOUNTERED
  258:		N	 21	U_IDL		BIT	33	;36.1-USER IDLE BREAK
  259:		N	 22	INP_B		BIT	34	;36.2-SET DURING INPUT INSTRUCTION
  260:				;DCMPXZ		BIT	35	;36.3-DCMPX ZERO FLAG
  261:		N	 24	ARGF		BIT	36	;36.4-ARG STACK HAS A VALUE
  262:		N	 25	RETBIT		BIT	37	;36.5-RET FROM INTERRUPT EXECUTED
  263:		N	 26	I_T0		BIT	38	;36.6-TRAP INTERRUPT ZERO TO MON
  264:		N	 27	UPB		BIT	39	;36.7-SET WHEN @ IS VALID
  265:		N	 28	JKBIT		BIT	40	;37.0-WB TRIGGER
  266:		N	 29	ENDBIT		BIT	41	;37.1-GET END OF PROGRAM
  267:		N	 2A	UBIT		BIT	42	;37.2-FOR DIM STATEMENT
  268:		N	 2B	ISAV		BIT	43	;37.3-SAVE INTERRUPT STATUS
  269:		N	 2C	BO		BIT	44	;37.4-BUBBLE OUTPUT
  270:		N	 2D	XBIT		BIT	45	;37.5-EXTERNAL PROGRAM PRESENT
  271:		N	 2E	C_BIT		BIT	46	;37.6-SET WHEN CLOCK RUNNING
  272:		N	 2F	DIRF		BIT	47	;37.7-DIRECT INPUT MODE
  273:		N	 30	NO_C		BIT	48	;38.0-NO CONTROL C
  274:		N	 31	DRQ		BIT	49	;38.1-DMA ENABLED
  275:		N	 32	BI		BIT	50	;38.2-BUBBLE INPUT
  276:		N	 33	INTELB		BIT	51	;38.3-INTELLIGENT PROM PROGRAMMING
  277:		N	 34	C0ORX1		BIT	52	;38.4-PRINT FROM ROM OR RAM
  278:		N	 35	CNT_S		BIT	53	;38.5-CONTROL S ENCOUNTERED
  279:		N	 36	ZSURP		BIT	54	;38.6-ZERO SUPRESS
  280:		N	 37	HMODE		BIT	55	;38.7-HEX MODE PRINT
  281:		B	 97	LP		BIT	P1.7	;SOFTWARE LINE PRINTER
  282:		B	 96	DACK		BIT	P1.6	;DMA ACK
  283:		B	 95	PROMV		BIT	P1.5	;TURN ON PROM VOLTAGE
  284:		B	 94	PROMP		BIT	P1.4	;PROM PULSE
  285:		B	 93	ALED		BIT	P1.3	;ALE DISABLE
  286:		B	 92	T_BIT		BIT	P1.2	;I/O TOGGLE BIT
  287:					;
  288:				$EJECT

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 9



 Line  I  Addr  Code            Source

  289:					;
  290:					; The next location is a bit addressable byte counter
  291:					;
  292:		N      0027	BABC	EQU	39

⌨️ 快捷键说明

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