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

📄 ex10-3.lst

📁 《单片机原理实用教程——基于Proteus虚拟仿真》一书的配套光盘
💻 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:	EX10-3.ASM
	Object File:	EX10-3.HEX
	List File:	EX10-3.LST



 Line  I  Addr  Code            Source

    1:				;*********************************************************************/
    2:
    3:		B	 95	T_RST Bit P1.5 ;实时时钟复位线引脚
    4:		B	 96	T_CLK Bit P1.6 ;实时时钟时钟线引脚
    5:		B	 97	T_IO Bit P1.7 ;实时时钟数据线引脚
    6:
    7:		N      0030	SECOND EQU 30H
    8:		N      0031	MINUTE EQU 31H
    9:		N      0032	HOUR EQU 32H
   10:		N      0033	DAY EQU 33H
   11:		N      0034	MONTH EQU 34H
   12:		N      0035	WEEK EQU 35H
   13:		N      0036	YEARL EQU 36H
   14:
   15:				;*********************************************************************/
   16:		N      0000	        ORG 0000H
   17:	  0000	02 00 60	START:  LJMP MAIN
   18:		N      0060	        ORG 0060H
   19:	  0060	75 81 60	MAIN:   MOV SP,#60H                 ;修改堆栈
   20:				;*********************************************************************
   21:	  0063	75 30 55	        MOV SECOND,#55H             ;初始时间设为23:59:55
   22:	  0066	75 31 59	        MOV MINUTE,#59H
   23:	  0069	75 32 23	        MOV HOUR,#23H
   24:	  006C	75 33 31	        MOV DAY,#31H                ;初始日期设为07年12月31日第一周
   25:	  006F	75 34 12	        MOV MONTH,#12H
   26:	  0072	75 35 01	        MOV WEEK,#01H
   27:	  0075	75 36 07	        MOV YEARL,#07H
   28:	  0078	12 01 5F	        LCALL SETDS1302
   29:	  007B	12 01 FF			LCALL LCD_INIT	            ;调用液晶模块初始化子程序
   30:	  007E	7B 14		        MOV R3,#20
   31:	  0080	75 89 01	        MOV TMOD,#01H
   32:	  0083	75 8C 3C	        MOV TH0,#3CH 		    ;置定时器初值(定时50ms)
   33:	  0086	75 8A B0	        MOV TL0,#0B0H
   34:	  0089	D2 8C		        SETB TR0   		    ;启动定时器0
   35:	  008B	10 8D 02	LP1:    JBC TF0,LP2   		    ;查询计数溢出
   36:	  008E	80 FB		        SJMP LP1   		    ;未到50 ms继续计数
   37:	  0090	75 8C 3C	LP2:    MOV TH0,#3CH  		    ;重新置定时器初值
   38:	  0093	75 8A B0	        MOV TL0,#0B0H
   39:	  0096	7A 81			MOV   R2,#81H       	    ;从第1行第2位开始,设置DDRAM地址
   40:	  0098	12 02 34		LCALL WRTC
   41:	  009B	90 00 BF		MOV   DPTR,#ZIFU1    	    ;指向显示字符代码首地址
   42:	  009E	7C 06			MOV   R4,#06H
   43:	  00A0	12 02 44		LCALL WP1            	    ;第1行字符代码写入DDRAM

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 2



 Line  I  Addr  Code            Source

   44:	  00A3	12 01 15	        LCALL DISPYMD               ;显示年月日
   45:	  00A6	7A C1			MOV   R2,#0C1H      	    ;设置第2行DDRAM地址
   46:	  00A8	12 02 34		LCALL WRTC
   47:	  00AB	90 00 C5		MOV   DPTR,#ZIFU2    	    ;指向显示字符代码首地址
   48:	  00AE	7C 06			MOV   R4,#06H
   49:	  00B0	12 02 44		LCALL WP1            	    ;第1行字符代码写入DDRAM
   50:	  00B3	12 00 CB	        LCALL DISPHMS               ;显示时分秒
   51:	  00B6	DB D3		        DJNZ R3,LP1                 ;未到1s继续循环
   52:	  00B8	12 01 BA	        LCALL GET1302               ;每到1s从DS1302读取一次时间
   53:	  00BB	7B 14		        mov     r3,#20
   54:	  00BD	80 CC		        SJMP lp1
   55:	  00BF	44 61 74 65	ZIFU1:  DB "Date: "
	  00C3	3A 20
   56:	  00C5	54 69 6D 65	ZIFU2:  DB "Time: "
	  00C9	3A 20
   57:
   58:				;*******************************************
   59:	  00CB	E5 32		DISPHMS:MOV     A,HOUR 			;时分秒显示子程序
   60:	  00CD	C4		        SWAP    A
   61:	  00CE	54 03		        ANL     A,#03H
   62:	  00D0	24 30				ADD 	A,#30H
   63:	  00D2	FA				MOV 	R2,A
   64:	  00D3	12 02 3C			LCALL 	WRTD
   65:	  00D6	E5 32		        MOV     A,HOUR
   66:	  00D8	54 0F		        ANL     A,#0FH
   67:	  00DA	24 30				ADD 	A,#30H
   68:	  00DC	FA				MOV		R2,A
   69:	  00DD	12 02 3C			LCALL 	WRTD
   70:	  00E0	7A 2D				MOV 	R2,#2DH
   71:	  00E2	12 02 3C			LCALL 	WRTD
   72:	  00E5	E5 31		        MOV     A,MINUTE 		;显示分
   73:	  00E7	C4		        SWAP    A
   74:	  00E8	54 07		        ANL     A,#07H
   75:	  00EA	24 30				ADD A,#30H
   76:	  00EC	FA				MOV R2,A
   77:	  00ED	12 02 3C			LCALL WRTD
   78:	  00F0	E5 31		        MOV     A,MINUTE
   79:	  00F2	54 0F		        ANL     A,#0FH
   80:	  00F4	24 30				ADD A,#30H
   81:	  00F6	FA				MOV R2,A
   82:	  00F7	12 02 3C			LCALL WRTD
   83:	  00FA	7A 2D				MOV R2,#2DH
   84:	  00FC	12 02 3C			LCALL WRTD
   85:	  00FF	E5 30		        MOV     A,SECOND 		;显示秒
   86:	  0101	C4		        SWAP    A
   87:	  0102	54 07		        ANL     A,#07H
   88:	  0104	24 30				ADD A,#30H
   89:	  0106	FA				MOV R2,A
   90:	  0107	12 02 3C			LCALL WRTD
   91:	  010A	E5 30		        MOV     A,SECOND
   92:	  010C	54 0F		        ANL     A,#0FH
   93:	  010E	24 30				ADD A,#30H
   94:	  0110	FA				MOV R2,A
   95:	  0111	12 02 3C			LCALL WRTD
   96:	  0114	22		        RET
   97:				;*****************************************

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 3



 Line  I  Addr  Code            Source

   98:	  0115	E5 36		DISPYMD:MOV     A,YEARL       	;年月日显示子程序
   99:	  0117	C4		        SWAP    A
  100:	  0118	54 03		        ANL     A,#03H
  101:	  011A	24 30				ADD 	A,#30H
  102:	  011C	FA				MOV 	R2,A
  103:	  011D	12 02 3C			LCALL 	WRTD
  104:	  0120	E5 36		        MOV     A,YEARL
  105:	  0122	54 0F		        ANL     A,#0FH
  106:	  0124	24 30				ADD		A,#30H
  107:	  0126	FA				MOV		R2,A
  108:	  0127	12 02 3C			LCALL 	WRTD
  109:	  012A	7A 2D				MOV 	R2,#2DH
  110:	  012C	12 02 3C			LCALL 	WRTD
  111:
  112:	  012F	E5 34		        MOV     A,MONTH			 ;显示月
  113:	  0131	C4		        SWAP    A
  114:	  0132	54 07		        ANL     A,#07H
  115:	  0134	24 30				ADD 	A,#30H
  116:	  0136	FA				MOV 	R2,A
  117:	  0137	12 02 3C			LCALL	WRTD
  118:	  013A	E5 34		        MOV     A,MONTH
  119:	  013C	54 0F		        ANL     A,#0FH
  120:	  013E	24 30				ADD 	A,#30H
  121:	  0140	FA				MOV 	R2,A
  122:	  0141	12 02 3C			LCALL 	WRTD
  123:	  0144	7A 2D				MOV 	R2,#2DH
  124:	  0146	12 02 3C			LCALL 	WRTD
  125:	  0149	E5 33		        MOV     A,DAY			 ;显示日
  126:	  014B	C4		        SWAP    A
  127:	  014C	54 07		        ANL     A,#07H
  128:	  014E	24 30				ADD 	A,#30H
  129:	  0150	FA				MOV 	R2,A
  130:	  0151	12 02 3C			LCALL 	WRTD
  131:	  0154	E5 33		        MOV     A,DAY
  132:	  0156	54 0F		        ANL     A,#0FH
  133:	  0158	24 30				ADD 	A,#30H
  134:	  015A	FA				MOV		R2,A
  135:	  015B	12 02 3C			LCALL 	WRTD
  136:	  015E	22		        RET

  137:				;*****************************************************************
  138:	  015F	C2 95		SETDS1302: CLR     T_RST		 ;设置DS1302初始时间,并启动计时
  139:	  0161	00		        nop
  140:	  0162	C2 96		        CLR     T_CLK
  141:	  0164	00		        nop
  142:	  0165	D2 95		        SETB    T_RST
  143:	  0167	00		        nop
  144:	  0168	75 F0 8E	        MOV     B,#8EH          ;写控制命令字
  145:	  016B	12 01 DE	        LCALL   INPUTBYTE
  146:	  016E	75 F0 00	        MOV     B,#00H          ;写保护关闭
  147:	  0171	12 01 DE	        LCALL   INPUTBYTE
  148:	  0174	D2 96		        SETB    T_CLK
  149:	  0176	00		        nop
  150:	  0177	C2 95		        CLR     T_RST
  151:	  0179	78 30		        MOV     R0,#SECOND      ;内存中的时间首地址
  152:	  017B	79 80		        MOV     R1,#80H         ;DS1302中的时间首地址

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 4



 Line  I  Addr  Code            Source

  153:	  017D	7F 07		        MOV     R7,#7           ;字节数
  154:	  017F	C2 95		SETLOOP:CLR     T_RST
  155:	  0181	00		        nop
  156:	  0182	C2 96		        CLR     T_CLK
  157:	  0184	00		        nop
  158:	  0185	D2 95		        SETB    T_RST
  159:	  0187	00		        nop
  160:	  0188	89 F0		        MOV     B,R1            ;写命令字
  161:	  018A	12 01 DE	        LCALL   INPUTBYTE
  162:	  018D	E6		        MOV     A,@R0           ;设置时间
  163:	  018E	F5 F0		        MOV     B,A
  164:	  0190	12 01 DE	        LCALL   INPUTBYTE
  165:	  0193	08		        INC     R0
  166:	  0194	09		        INC     R1
  167:	  0195	09		        INC     R1
  168:	  0196	D2 96		        SETB    T_CLK
  169:	  0198	00		        nop
  170:	  0199	C2 95		        CLR     T_RST
  171:	  019B	00		        nop
  172:	  019C	DF E1		        DJNZ    R7,SETLOOP
  173:	  019E	C2 95		        CLR     T_RST
  174:	  01A0	00		        nop
  175:	  01A1	C2 96		        CLR     T_CLK
  176:	  01A3	00		        nop
  177:	  01A4	D2 95		        SETB    T_RST
  178:	  01A6	00		        nop
  179:	  01A7	75 F0 8E	        MOV     B,#8EH
  180:	  01AA	12 01 DE	        LCALL   INPUTBYTE
  181:	  01AD	75 F0 80	        MOV     B,#80H          ;开写保护
  182:	  01B0	12 01 DE	        LCALL   INPUTBYTE
  183:	  01B3	D2 96		        SETB    T_CLK
  184:	  01B5	00		        nop
  185:	  01B6	C2 95		        CLR     T_RST
  186:	  01B8	00		        nop
  187:	  01B9	22		        RET
  188:				;*****************************************************************
  189:	  01BA			GET1302:						;从DS1302读取时间
  190:	  01BA	78 30		        MOV     R0,#SECOND
  191:	  01BC	79 81		        MOV     R1,#81H        ;DS1302中读时间的首地址
  192:	  01BE	7F 07		        MOV     R7,#7
  193:	  01C0	C2 95		GETLOOP:CLR     T_RST
  194:	  01C2	00		        nop
  195:	  01C3	C2 96		        CLR     T_CLK
  196:	  01C5	00		        nop
  197:	  01C6	D2 95		        SETB    T_RST
  198:	  01C8	00		        nop
  199:	  01C9	89 F0		        MOV     B,R1
  200:	  01CB	12 01 DE	        LCALL   INPUTBYTE       ;写命令字
  201:	  01CE	12 01 EF	        LCALL   OUTPUTBYTE      ;读时间
  202:	  01D1	F6		        MOV     @R0,A           ;将从DS1302中读取的时间从内存中保存
  203:	  01D2	08		        INC     R0              ;修改地址指针
  204:	  01D3	09		        INC     R1

⌨️ 快捷键说明

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