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

📄 ad0808.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:	AD0808.ASM
	Object File:	AD0808.HEX
	List File:	AD0808.LST



 Line  I  Addr  Code            Source

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



 Line  I  Addr  Code            Source

   44:
   45:				;	jb    zb,kl0
   46:
   47:	  007C	C0 24			push  24h
   48:	  007E	C0 1F		        push  1fh
   49:	  0080	C0 28			push  28h
   50:
   51:	  0082	7B 00			mov   r3,#00h
   52:	  0084	AA 3A		        mov   r2,3ah
   53:	  0086	12 00 C2		lcall lh		;量化(转换成um)
   54:	  0089	78 32		        mov   r0,#32h		;被解压BCD码高位存32h
   55:	  008B	79 1F		        mov   r1,#1fh		;解压后BCD码高位存20h
   56:	  008D	7A 35		        mov   r2,#35h		;被解压BCD码最低位:r2-1
   57:	  008F	12 00 DE	        lcall bcdjy		;BCD码解压缩(5字节)
   58:
   59:	  0092	D0 28			pop   28h
   60:	  0094	D0 1F			pop   1fh
   61:	  0096	D0 24			pop   24h
   62:
   63:	  0098	E5 20			mov   a,20h		;最高位为加小数点
   64:	  009A	24 0A		        add   a,#0ah
   65:	  009C	F5 20		        mov   20h,a
   66:	  009E	E5 24		        mov   a,24h		;最高位加小数点
   67:	  00A0	24 0A		        add   a,#0ah
   68:	  00A2	F5 24		        mov   24h,a
   69:	  00A4	12 01 4D		lcall dirv
   70:
   71:	  00A7	C2 B5		        clr   p3.5		;选通0808
   72:	  00A9	F0		 	movx  @dptr,a           ;启动AD转换
   73:	  00AA	D2 AF			setb  ea                ;允许中断
   74:	  00AC	D2 A8			setb    ex0		;允许外部中断0
   75:	  00AE	D2 50			setb  zb
   76:	  00B0	02 00 69	        ljmp  kl0               ;无键按下继续
   77:				;---------------------;
   78:				;     外部中断0	      ;
   79:				;---------------------;
   80:	  00B3			int00:
   81:	  00B3	E0		       movx   a,@dptr
   82:	  00B4	F5 3A		       mov    3ah,a
   83:				  ;     setb   p3.5
   84:	  00B6	C2 50		       clr    zb
   85:	  00B8	32		       reti
   86:				;---------------------;
   87:				;     定时中断0	      ;
   88:				;---------------------;
   89:	  00B9			tr00:
   90:	  00B9	75 8A FF	       mov    tl0,#0ffh	;T0置初值
   91:	  00BC	75 8C F9	       mov    th0,#0f9h
   92:	  00BF	B2 B4		       cpl    p3.4	;产生0808时钟
   93:	  00C1	32		       reti
   94:				;---------------------;
   95:				;     量化(转换成um) ;
   96:				;---------------------;
   97:	  00C2	12 00 EF	lh:	lcall B16BCD		;二进制到BCD码(双字节)
   98:	  00C5	8E 30		        mov   30h,r6		;被乘数十万、万位
   99:	  00C7	8D 31			mov   31h,r5		;被乘数干位、百位

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 3



 Line  I  Addr  Code            Source

  100:	  00C9	8C 32			mov   32h,r4		;被乘数十位、个位
  101:	  00CB	75 40 01		mov   40h,#01h		;乘数百位、十位
  102:	  00CE	75 41 95		mov   41h,#95h		;乘数个位、小数点后第一位(2.443um)
  103:	  00D1	75 42 31	        mov   42h,#31h		;乘数小数点后第二位、小数点后第三位
  104:	  00D4	78 30			mov   r0,#30h		;被乘数入口指针
  105:	  00D6	79 40			mov   r1,#40h		;乘数入口指针
  106:	  00D8	7B 03		        mov   r3,#03h		;参加乘法运算的压缩的BCD码位数
  107:	  00DA	12 01 0B	        lcall CMUL		;无符号压缩BCD码乘法(CMUL)(积的小数位舍去送显示)
  108:	  00DD	22			ret
  109:				;---------------------------------------;
  110:				;     @r0中BCD码解压缩到@r1(r2-r1字节);
  111:				;---------------------------------------;
  112:
  113:	  00DE	E6		bcdjy:  mov   a,@r0		;分解一字节高位
  114:	  00DF	54 F0			anl   a,#0f0h
  115:	  00E1	C4		        swap  a
  116:	  00E2	F7			mov   @r1,a
  117:	  00E3	09		        inc   r1
  118:	  00E4	E6			mov   a,@r0		;分解一字节低位
  119:	  00E5	54 0F			anl   a,#0fh
  120:	  00E7	F7		        mov   @r1,a
  121:	  00E8	09		        inc   r1
  122:	  00E9	08		        inc   r0
  123:	  00EA	E8		        mov   a,r0
  124:	  00EB	6A		        xrl   a,r2
  125:	  00EC	70 F0		        jnz   bcdjy
  126:	  00EE	22			ret
  127:				;-------------------------------;
  128:				;     二进制到BCD码(双字节)   ;
  129:				;-------------------------------;
  130:				;    (1)入口,R3R2,(16位无符号二进制整数).
  131:				;    (2)出口:R6(万位)、R5(干位、百位)、R4(十位、个位)存放5位BCD码。
  132:				;2.程序清单
  133:
  134:	  00EF			B16BCD:
  135:	  00EF	E4		        CLR  A      	;BCD码寄存器清零
  136:	  00F0	FC		        MOV  R4,A
  137:	  00F1	FD		        MOV  R5,A
  138:	  00F2	FE		        MOV  R6,A
  139:	  00F3	7F 10		        MOV  R7,#10H	;设循环指针
  140:	  00F5	C3		LP0:    CLR  C		;左移一位,移入c
  141:	  00F6	EA		        MOV  A,R2
  142:	  00F7	33		        RLC  A
  143:	  00F8	FA		        MOV  R2,A
  144:	  00F9	EB		        MOV  A,R3
  145:	  00FA	33		        RLC  A
  146:	  00FB	FB		        MOV  R3,A
  147:	  00FC	EC		        MOV  A,R4	;实现(…)X2十ai运算
  148:
  149:	  00FD	3C		        ADDC A,R4
  150:	  00FE	D4		        DA   A
  151:	  00FF	FC		        MOV  R4,A
  152:	  0100	ED		        MOV  A,R5
  153:	  0101	3D		        ADDC A,R5
  154:	  0102	D4		        DA   A
  155:	  0103	FD		        MOV  R5,A

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 4



 Line  I  Addr  Code            Source

  156:	  0104	EE		        MOV  A,R6
  157:	  0105	3E		        ADDC A,R6
  158:	  0106	D4		        DA   A
  159:	  0107	FE		        MOV  R6,A
  160:	  0108	DF EB		        DJNZ R7,LP0
  161:	  010A	22		        RET
  162:				;-------------------------------------;
  163:				;     无符号压缩BCD码乘法子程序(CMUL) ;
  164:				;-------------------------------------;
  165:
  166:					;功能:将(R0)指向的n字节压缩的BCD码乘以(R1)指向的n
  167:				  	;字节压缩的BCD码。
  168:					;入口:十进制被乘数存放在addrl—addr+n—1单元,高位在前。
  169:				   	;十进制乘数存放在addr2—acldr2+n—1单元,高位在前。
  170:				   	;(R0):addrl,(R1)=addr2,(R3)=n
  171:					;出口:积存放在addr-addrl+2n—1单元中,(R0)=addrl。
  172:					;使用寄存器:A,R0,R1,n2,R3,R6,R7及标志cy0
  173:					;例如:(R0)=20;(20)=01;(21)=25;(R1)=40;(40)=00;
  174:					;(41)=25;(R3)=02
  175:					;执行后得:(R0)=20;(20)=00;(21)=00;(22)=31; (23)=25
  176:					;程序清单:
  177:	  010B	EB		CMUL:   MOV    A, R3
  178:	  010C	FE		        MOV    R6, A
  179:	  010D	2B		        ADD    A, R3
  180:	  010E	FA		        MOV    R2, A
  181:	  010F	EB		        MOV    A, R3
  182:	  0110	28		        ADD    A, R0
  183:	  0111	F8		        MOV    R0, A
  184:	  0112	E9		        MOV    A, R1
  185:	  0113	2B		        ADD    A, R3
  186:	  0114	14		        DEC    A
  187:	  0115	F9		        MOV    R1, A
  188:	  0116	E4		        CLR    A
  189:	  0117	F6		CMUL1:  MOV    @R0, A
  190:	  0118	08		        INC    R0
  191:	  0119	DE FC		        DJNZ   R6, CMUL1
  192:	  011B	EA		        MOV    A, R2
  193:	  011C	FE		        MOV    R6, A
  194:	  011D	18		        DEC    R0
  195:	  011E	E4		CMUL2:  CLR    A
  196:	  011F	C6		CMUL3:  XCH    A, @R0
  197:	  0120	C4		        SWAP   A
  198:	  0121	D6		        XCHD   A, @R0
  199:	  0122	C6		        XCH    A, @R0
  200:	  0123	18		        DEC    R0
  201:	  0124	DA F9		        DJNZ   R2,CMUL3
  202:	  0126	FF		        MOV    R7, A
  203:	  0127	60 1C		        JZ     CMUL7
  204:	  0129	EB		CMUIA:  MOV    A, R3
  205:	  012A	FA		        MOV    R2, A
  206:	  012B	2B		        ADD    A, R3
  207:	  012C	28		        ADD    A, R0
  208:	  012D	F8		        MOV    R0, A
  209:	  012E	C3		        CLR    C
  210:	  012F	E6		CMUL5:  MOV    A, @R0
  211:	  0130	37		        ADDC   A, @R1

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 5

⌨️ 快捷键说明

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