📄 time.lst
字号:
A51 MACRO ASSEMBLER TIME 10/05/03 14:41:20 PAGE 1
DOS MACRO ASSEMBLER A51 X4.86
OBJECT MODULE PLACED IN TIME.OBJ
ASSEMBLER INVOKED BY: C:\C51EVAL\BIN\A51.EXE TIME.A51 DB EP
LOC OBJ LINE SOURCE
1 ;程序名: MCS51实验板配套程序-时钟,使用T0中断方式
2 ;电路介绍:显示由一片74164驱动4位共阴数码管
3 ; DsDat-p1.4;DsClk-p1.5;Gw-p1.0;Sw-p1.1;Bw-p1.2;Qw-p1.3
4 ;www.01mcu.net www.01mcu.com 2003/4/19编写
5 ;********************************************************************
0094 6 XSDAT BIT P1.4 ;定义部分,意思是:程序中管脚名用前面字符替代
0095 7 XSCLK BIT P1.5
0090 8 GW BIT P1.0
0091 9 SW BIT P1.1
0092 10 BW BIT P1.2
0093 11 QW BIT P1.3
12
0000 13 bz bit 00h ;秒闪动标志
14
0030 15 SJGW EQU 30H ;秒存储器
0031 16 SJSW EQU 31H
0032 17 SJBW EQU 32H ;分存储器
0033 18 SJQW EQU 33H
0021 19 TIME EQU 21H ;定时器
0022 20 SEC EQU 22H ;秒计数器
0023 21 MIN EQU 23H ;分钟计数器
22 ;--中断入口-----------------------
0000 23 ORG 0000H
0000 010D 24 AJMP INIT ;到初始
000B 25 ORG 000BH
000B 0147 26 AJMP TIME0 ;50MS中断
27 ;***初始化********************************************************
000D 758140 28 INIT: MOV SP,#40H
0010 75900F 29 MOV P1,#0FH ;关闭显示
0013 7580FF 30 MOV P0,#0ffH ;发光管灭
0016 752200 31 MOV SEC,#0
0019 752300 32 MOV MIN,#0 ;清时间为0
001C 758901 33 MOV TMOD,#1H ;初始化T0为定时器方式,模式1
001F 758AB0 34 MOV TL0,#0B0H
0022 758C3C 35 MOV TH0,#3CH ;50MS定时初值(12M时)
0025 D2A9 36 SETB ET0 ;允许T0中断
0027 D28C 37 SETB TR0 ;启动定时器T0
0029 D2AF 38 SETB EA
002B 39 MAIN :
002B E522 40 MOV A,SEC ;提取秒数据
002D 75F00A 41 MOV B,#10
0030 84 42 DIV AB ;10进制转换
0031 F531 43 MOV SJSW,A ;得到十秒值
0033 85F030 44 MOV SJGW,B ;得到秒值
0036 E523 45 MOV A,MIN
0038 75F00A 46 MOV B,#10
003B 84 47 DIV AB ;转换分
003C F533 48 MOV SJQW,A ;得到十分值
003E 85F032 49 MOV SJBW,B ;得到分值
50
0041 120074 51 LCALL DISPLAY ;显示
0044 02002B 52 LJMP MAIN
53 ;T0 50MS中断==对应12MHZ=====================================
0047 C0E0 54 TIME0: PUSH ACC
0049 0521 55 INC TIME
004B E521 56 MOV A,TIME
004D B4141B 57 CJNE A,#20,T0EXIT ;20个50MS=1S
0050 B200 58 cpl bz ;反转闪动标志
A51 MACRO ASSEMBLER TIME 10/05/03 14:41:20 PAGE 2
0052 752100 59 MOV TIME,#0
0055 0522 60 INC SEC ;+10秒
0057 E522 61 MOV A,SEC
0059 B43C0F 62 CJNE A,#60,T0EXIT ;60S=1MIN
005C 752200 63 MOV SEC,#0
005F 0523 64 INC MIN ;分+1
0061 E523 65 MOV A,MIN
0063 B43C05 66 CJNE A,#60,T0EXIT
0066 752300 67 MOV MIN,#0
0069 1580 68 dec p0 ;hex小时记录
69
006B 758AB0 70 T0EXIT: MOV TL0,#0B0H
006E 758C3C 71 MOV TH0,#3CH ;重装50MS定时
0071 D0E0 72 POP ACC
0073 32 73 RETI
74 ;************************************************************************
75 ;74164显示程序,使用RS1=1,RS0=0的1区 2003/4/19
76 ;---------------------------------------------------------
0074 C0E0 77 DISPLAY: PUSH ACC ;保存ACC
0076 C0D0 78 PUSH PSW
0078 C2D4 79 CLR RS1
007A D2D3 80 SETB RS0 ;使用第一区工作寄存器
007C 9000D2 81 MOV DPTR,#XSTAB
007F E530 82 MOV A,SJGW ;取得数据
0081 93 83 MOVC A,@A+DPTR ;提取字模
0082 11BD 84 ACALL DSOUT ;调用送出子程序
0084 C290 85 CLR GW
0086 11C9 86 ACALL DS1MS ;调用显示1MS延时程序
0088 D290 87 SETB GW
008A E531 88 MOV A,SJSW
008C 93 89 MOVC A,@A+DPTR ;提取字模
008D 11BD 90 ACALL DSOUT ;送出
008F C291 91 CLR SW
0091 11C9 92 ACALL DS1MS ;显示1MS
0093 D291 93 SETB SW
0095 E532 94 MOV A,SJBW
0097 93 95 MOVC A,@A+DPTR ;提取字模
0098 11BD 96 ACALL DSOUT ;送出
009A C292 97 CLR BW
009C 11C9 98 ACALL DS1MS ;显示1MS
009E D292 99 SETB BW
100 ;---------
00A0 20000A 101 jb bz,bzover ;若标志=1,不显示小数点
00A3 7480 102 mov a,#80h ;显示小数点
00A5 11BD 103 acall dsout
00A7 C292 104 clr bw
00A9 11C9 105 acall ds1ms
00AB D292 106 setb bw
00AD 107 bzover:
108 ;---------
00AD E533 109 MOV A,SJQW
00AF 93 110 MOVC A,@A+DPTR ;提取字模
00B0 11BD 111 ACALL DSOUT ;送出
00B2 C293 112 CLR QW
00B4 11C9 113 ACALL DS1MS ;显示1MS
00B6 D293 114 SETB QW
00B8 D0D0 115 POP PSW
00BA D0E0 116 POP ACC ;出栈
00BC 22 117 RET ;返回调用
118 ;---送出循环----------
00BD 119 DSOUT:
00BD 7808 120 MOV R0,#8 ;传送一个字节8位
00BF 33 121 DSLOOP: RLC A ;右移
00C0 9294 122 MOV XSDAT,C ;送数据到数据口
00C2 D295 123 SETB XSCLK ;送一时钟
00C4 C295 124 CLR XSCLK
A51 MACRO ASSEMBLER TIME 10/05/03 14:41:20 PAGE 3
00C6 D8F7 125 DJNZ R0,DSLOOP
00C8 22 126 RET
127 ;---显示延时----------
00C9 790A 128 DS1MS: MOV R1,#10
00CB 7A64 129 DS1LO: MOV R2,#100
00CD DAFE 130 DJNZ R2,$
00CF D9FA 131 DJNZ R1,DS1LO
00D1 22 132 RET ;延时返回
133 ;---------------------------------------------------------
134 ;显示字表(共阴)
00D2 135 XSTAB: DB 3FH,06H,5BH,4FH ;"0","1","2","3"
00D6 136 DB 66H,6DH,7DH,07H ;"4","5","6","7"
00DA 137 DB 7FH,6FH,77H,7CH ;"8","9","A","B"
00DE 138 DB 39H,5EH,79H,71H ;"C","D","E","F"
139 ;************************************************************************
140 END
A51 MACRO ASSEMBLER TIME 10/05/03 14:41:20 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
BW . . . . . . . . B ADDR 0090H.2 A
BZ . . . . . . . . B ADDR 0020H.0 A
BZOVER . . . . . . C ADDR 00ADH A
DISPLAY. . . . . . C ADDR 0074H A
DS1LO. . . . . . . C ADDR 00CBH A
DS1MS. . . . . . . C ADDR 00C9H A
DSLOOP . . . . . . C ADDR 00BFH A
DSOUT. . . . . . . C ADDR 00BDH A
EA . . . . . . . . B ADDR 00A8H.7 A
ET0. . . . . . . . B ADDR 00A8H.1 A
GW . . . . . . . . B ADDR 0090H.0 A
INIT . . . . . . . C ADDR 000DH A
MAIN . . . . . . . C ADDR 002BH A
MIN. . . . . . . . N NUMB 0023H A
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
PSW. . . . . . . . D ADDR 00D0H A
QW . . . . . . . . B ADDR 0090H.3 A
RS0. . . . . . . . B ADDR 00D0H.3 A
RS1. . . . . . . . B ADDR 00D0H.4 A
SEC. . . . . . . . N NUMB 0022H A
SJBW . . . . . . . N NUMB 0032H A
SJGW . . . . . . . N NUMB 0030H A
SJQW . . . . . . . N NUMB 0033H A
SJSW . . . . . . . N NUMB 0031H A
SP . . . . . . . . D ADDR 0081H A
SW . . . . . . . . B ADDR 0090H.1 A
T0EXIT . . . . . . C ADDR 006BH A
TH0. . . . . . . . D ADDR 008CH A
TIME . . . . . . . N NUMB 0021H A
TIME0. . . . . . . C ADDR 0047H A
TL0. . . . . . . . D ADDR 008AH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
XSCLK. . . . . . . B ADDR 0090H.5 A
XSDAT. . . . . . . B ADDR 0090H.4 A
XSTAB. . . . . . . C ADDR 00D2H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -