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

📄 ad0803.lst

📁 电子时钟的单片机设计
💻 LST
📖 第 1 页 / 共 2 页
字号:

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:	AD0803.ASM
	Object File:	AD0803.HEX
	List File:	AD0803.LST



 Line  I  Addr  Code            Source

    1:
    2:		N      0000		org     0000h
    3:	  0000	02 00 30	        ljmp    main
    4:		N      0003		org     0003h
    5:	  0003	02 00 A2		ljmp    int00
    6:
    7:		N      0030	        org     0030h
    8:	  0030	75 90 FF	main:	mov	p1,#0ffh
    9:	  0033	75 2A 00		mov     2Ah,#00h	;2Ah设为标志位
   10:	  0036	75 20 01		mov     20h,#01h	;显示最高位缓冲
   11:	  0039	75 21 02	        mov     21h,#02h
   12:	  003C	75 22 03		mov     22h,#03h
   13:	  003F	75 23 04	        mov     23h,#04h
   14:	  0042	75 24 05	        mov     24h,#05h
   15:	  0045	75 25 06	        mov     25h,#06h
   16:	  0048	75 26 07		mov     26h,#07h
   17:	  004B	75 27 08	        mov     27h,#08h	;显示最地位缓冲
   18:	  004E	D2 B5			setb    p3.5
   19:	  0050	D2 88			setb    it0		;外部中断0为边沿触发方式
   20:	  0052	D2 A8		        setb    ex0		;允许外部中断0
   21:	  0054	75 3A FF		mov     3ah,#0ffh
   22:	  0057	12 01 33	        lcall   dirv
   23:				;-------------------------;
   24:				;         读键            ;
   25:				;-------------------------;
   26:	  005A			kl0:
   27:	  005A	12 01 33	        lcall dirv
   28:
   29:	  005D	7B 00		        mov   r3,#00h
   30:	  005F	AA 3A		        mov   r2,3ah
   31:	  0061	12 00 A8		lcall lh		;量化(转换成um)
   32:	  0064	78 32		        mov   r0,#32h		;被解压BCD码高位存32h
   33:	  0066	79 23		        mov   r1,#23h		;解压后BCD码高位存20h
   34:	  0068	7A 35		        mov   r2,#35h		;被解压BCD码最低位:r2-1
   35:	  006A	12 00 C4	        lcall bcdjy		;BCD码解压缩(5字节)
   36:
   37:	  006D	C2 AF			clr   ea
   38:	  006F	C0 24			push  24h
   39:	  0071	C0 1F		        push  1fh
   40:	  0073	C0 28			push  28h
   41:
   42:	  0075	7B 00			mov   r3,#00h
   43:	  0077	AA 3A		        mov   r2,3ah

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 2



 Line  I  Addr  Code            Source

   44:	  0079	12 00 A8		lcall lh		;量化(转换成um)
   45:	  007C	78 32		        mov   r0,#32h		;被解压BCD码高位存32h
   46:	  007E	79 1F		        mov   r1,#1fh		;解压后BCD码高位存20h
   47:	  0080	7A 35		        mov   r2,#35h		;被解压BCD码最低位:r2-1
   48:	  0082	12 00 C4	        lcall bcdjy		;BCD码解压缩(5字节)
   49:
   50:	  0085	D0 28			pop   28h
   51:	  0087	D0 1F			pop   1fh
   52:	  0089	D0 24			pop   24h
   53:
   54:	  008B	E5 20			mov   a,20h		;最高为加小数点
   55:	  008D	24 0A		        add   a,#0ah
   56:	  008F	F5 20		        mov   20h,a
   57:	  0091	E5 24		        mov   a,24h		;最高为加小数点
   58:	  0093	24 0A		        add   a,#0ah
   59:	  0095	F5 24		        mov   24h,a
   60:	  0097	12 01 33		lcall dirv
   61:
   62:	  009A	C2 B5		        clr   p3.5		;选通0803
   63:	  009C	F0			movx  @dptr,a           ;启动AD转换
   64:	  009D	D2 AF		        setb  ea                ;允许中断
   65:	  009F	02 00 5A	        ljmp  kl0               ;无键按下继续
   66:				;---------------------;
   67:				;     外部中断0	      ;
   68:				;---------------------;
   69:	  00A2			int00:
   70:	  00A2	E0		       movx   a,@dptr
   71:	  00A3	F5 3A		       mov    3ah,a
   72:	  00A5	D2 B5		       setb   p3.5
   73:	  00A7	32		       reti
   74:				;---------------------;
   75:				;     量化(转换成um) ;
   76:				;---------------------;
   77:	  00A8	12 00 D5	lh:	lcall B16BCD		;二进制到BCD码(双字节)
   78:	  00AB	8E 30		        mov   30h,r6		;被乘数十万、万位
   79:	  00AD	8D 31			mov   31h,r5		;被乘数干位、百位
   80:	  00AF	8C 32			mov   32h,r4		;被乘数十位、个位
   81:	  00B1	75 40 03		mov   40h,#03h		;乘数百位、十位
   82:	  00B4	75 41 92		mov   41h,#92h		;乘数个位、小数点后第一位(2.443um)
   83:	  00B7	75 42 57	        mov   42h,#57h		;乘数小数点后第二位、小数点后第三位
   84:	  00BA	78 30			mov   r0,#30h		;被乘数入口指针
   85:	  00BC	79 40			mov   r1,#40h		;乘数入口指针
   86:	  00BE	7B 03		        mov   r3,#03h		;参加乘法运算的压缩的BCD码位数
   87:	  00C0	12 00 F1	        lcall CMUL		;无符号压缩BCD码乘法(CMUL)(积的小数位舍去送显示)
   88:	  00C3	22			ret
   89:				;---------------------------------------;
   90:				;     @r0中BCD码解压缩到@r1(r2-r1字节);
   91:				;---------------------------------------;
   92:
   93:	  00C4	E6		bcdjy:  mov   a,@r0		;分解一字节高位
   94:	  00C5	54 F0			anl   a,#0f0h
   95:	  00C7	C4		        swap  a
   96:	  00C8	F7			mov   @r1,a
   97:	  00C9	09		        inc   r1
   98:	  00CA	E6			mov   a,@r0		;分解一字节低位
   99:	  00CB	54 0F			anl   a,#0fh

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 3



 Line  I  Addr  Code            Source

  100:	  00CD	F7		        mov   @r1,a
  101:	  00CE	09		        inc   r1
  102:	  00CF	08		        inc   r0
  103:	  00D0	E8		        mov   a,r0
  104:	  00D1	6A		        xrl   a,r2
  105:	  00D2	70 F0		        jnz   bcdjy
  106:	  00D4	22			ret
  107:				;-------------------------------;
  108:				;     二进制到BCD码(双字节)   ;
  109:				;-------------------------------;
  110:				;    (1)入口,R3R2,(16位无符号二进制整数).
  111:				;    (2)出口:R6(万位)、R5(干位、百位)、R4(十位、个位)存放5位BCD码。
  112:				;2.程序清单
  113:
  114:	  00D5			B16BCD:
  115:	  00D5	E4		        CLR  A      	;BCD码寄存器清零
  116:	  00D6	FC		        MOV  R4,A
  117:	  00D7	FD		        MOV  R5,A
  118:	  00D8	FE		        MOV  R6,A
  119:	  00D9	7F 10		        MOV  R7,#10H	;设循环指针
  120:	  00DB	C3		LP0:    CLR  C		;左移一位,移入c
  121:	  00DC	EA		        MOV  A,R2
  122:	  00DD	33		        RLC  A
  123:	  00DE	FA		        MOV  R2,A
  124:	  00DF	EB		        MOV  A,R3
  125:	  00E0	33		        RLC  A
  126:	  00E1	FB		        MOV  R3,A
  127:	  00E2	EC		        MOV  A,R4	;实现(…)X2十ai运算
  128:
  129:	  00E3	3C		        ADDC A,R4
  130:	  00E4	D4		        DA   A
  131:	  00E5	FC		        MOV  R4,A
  132:	  00E6	ED		        MOV  A,R5
  133:	  00E7	3D		        ADDC A,R5
  134:	  00E8	D4		        DA   A
  135:	  00E9	FD		        MOV  R5,A
  136:	  00EA	EE		        MOV  A,R6
  137:	  00EB	3E		        ADDC A,R6
  138:	  00EC	D4		        DA   A
  139:	  00ED	FE		        MOV  R6,A
  140:	  00EE	DF EB		        DJNZ R7,LP0
  141:	  00F0	22		        RET
  142:				;-------------------------------------;
  143:				;     无符号压缩BCD码乘法子程序(CMUL) ;
  144:				;-------------------------------------;
  145:
  146:					;功能:将(R0)指向的n字节压缩的BCD码乘以(R1)指向的n
  147:				  	;字节压缩的BCD码。
  148:					;入口:十进制被乘数存放在addrl—addr+n—1单元,高位在前。
  149:				   	;十进制乘数存放在addr2—acldr2+n—1单元,高位在前。
  150:				   	;(R0):addrl,(R1)=addr2,(R3)=n
  151:					;出口:积存放在addr-addrl+2n—1单元中,(R0)=addrl。
  152:					;使用寄存器:A,R0,R1,n2,R3,R6,R7及标志cy0
  153:					;例如:(R0)=20;(20)=01;(21)=25;(R1)=40;(40)=00;
  154:					;(41)=25;(R3)=02
  155:					;执行后得:(R0)=20;(20)=00;(21)=00;(22)=31; (23)=25

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 4



 Line  I  Addr  Code            Source

  156:					;程序清单:
  157:	  00F1	EB		CMUL:   MOV    A, R3
  158:	  00F2	FE		        MOV    R6, A
  159:	  00F3	2B		        ADD    A, R3
  160:	  00F4	FA		        MOV    R2, A
  161:	  00F5	EB		        MOV    A, R3
  162:	  00F6	28		        ADD    A, R0
  163:	  00F7	F8		        MOV    R0, A
  164:	  00F8	E9		        MOV    A, R1
  165:	  00F9	2B		        ADD    A, R3
  166:	  00FA	14		        DEC    A
  167:	  00FB	F9		        MOV    R1, A
  168:	  00FC	E4		        CLR    A
  169:	  00FD	F6		CMUL1:  MOV    @ R0, A
  170:	  00FE	08		        INC    R0
  171:	  00FF	DE FC		        DJNZ   R6, CMUL1
  172:	  0101	EA		        MOV    A, R2
  173:	  0102	FE		        MOV    R6, A
  174:	  0103	18		        DEC    R0
  175:	  0104	E4		CMUL2:  CLR    A
  176:	  0105	C6		CMUL3:  XCH    A, @R0
  177:	  0106	C4		        SWAP   A
  178:	  0107	D6		        XCHD   A, @R0
  179:	  0108	C6		        XCH    A, @R0
  180:	  0109	18		        DEC    R0
  181:	  010A	DA F9		        DJNZ   R2,CMUL3
  182:	  010C	FF		        MOV    R7, A
  183:	  010D	60 1C		        JZ     CMUL7
  184:	  010F	EB		CMUIA:  MOV    A, R3
  185:	  0110	FA		        MOV    R2, A
  186:	  0111	2B		        ADD    A, R3
  187:	  0112	28		        ADD    A, R0
  188:	  0113	F8		        MOV    R0, A
  189:	  0114	C3		        CLR    C
  190:	  0115	E6		CMUL5:  MOV    A, @R0
  191:	  0116	37		        ADDC   A, @R1
  192:	  0117	D4		 	DA     A
  193:	  0118	F6		        MOV    @R0,A
  194:	  0119	18		        DEC    R0
  195:	  011A	19		        DEC    R1
  196:	  011B	DA F8		        DJNZ   R2, CMUL5
  197:	  011D	EB		        MOV    A, R3
  198:	  011E	FA		        MOV    R2, A
  199:	  011F	E4		CMUL6:  CLR    A
  200:	  0120	36		        ADDC   A, @R0
  201:	  0121	D4		        DA     A

⌨️ 快捷键说明

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