📄 pro2.lst
字号:
A51 MACRO ASSEMBLER PRO2 06/11/03 11:04:23 PAGE 1
DOS MACRO ASSEMBLER A51 X4.86
OBJECT MODULE PLACED IN PRO2.OBJ
ASSEMBLER INVOKED BY: C:\C51\BIN\A51.EXE PRO2.ASM DB
LOC OBJ LINE SOURCE
1 ;B. 日历时钟程序:
0070 2 SLA1W EQU 070H ;SAA1064 A片写的节点地址
0071 3 SLA1R EQU 071H ;SAA1064 A片读的节点地址
0074 4 SLA2W EQU 074H ;SAA1064 B片写的节点地址
0075 5 SLA2R EQU 075H ;SAA1064 B片读的节点地址
00A0 6 SLA3W EQU 0A0H ;PCF8583 写的节点地址
00A1 7 SLA3R EQU 0A1H ;PCF8583 读的节点地址
0017 8 COM EQU 17H
0050 9 SLA EQU 50H
0051 10 SLAW EQU 51H
0052 11 SLAR EQU 52H
0053 12 NUMBYT EQU 53H ;被传送的字节数存放单元
0020 13 MTD EQU 20H ;发送数据缓冲区首地址
0030 14 MRD EQU 30H ;接收字节缓冲区首地址
0096 15 VSCL EQU P1.6 ;模拟I2C总线时钟线
0095 16 VSDA EQU P1.5 ;模拟I2C总线数据线
0000 17 ORG 0
0000 2100 18 AJMP STAR
0100 19 ORG 100H
0100 758107 20 STAR: MOV SP,#7H ;堆栈地址
0103 3109 21 MAIN: ACALL PCF8583 ;从PCF8583中读出当前时钟数据
0105 3153 22 ACALL DISPLAY ;调用显示当前时钟数据的子程序
0107 2103 23 AJMP MAIN
24
25 ;子程序:从PCF8583中读出当前时钟数据:读出的数据共4个字节,存放在30H,31H,32H,33H中
0109 752002 26 PCF8583: MOV 20H,#2 ; 从02单元读起
010C 855150 27 MOV SLA,SLAW
010F 755301 28 MOV NUMBYT,#1
0112 1201BF 29 LCALL WRNBYT
0115 855250 30 MOV SLA,SLAR ; 从02单元读起
0118 755304 31 MOV NUMBYT,#04 ; 读出的数据共4个字节,存放在30H,31H,32H,33H中
011B 1201BF 32 LCALL RDNBYT
011E E530 33 MOV A,30H ; 将压缩BCD码转化为单字节BCD码,存放在60H~67H中
0120 540F 34 ANL A,#0FH
0122 F560 35 MOV 60H,A
0124 E530 36 MOV A,30H
0126 C4 37 SWAP A
0127 540F 38 ANL A,#0FH
0129 F561 39 MOV 61H,A
012B E531 40 MOV A,31H
012D 540F 41 ANL A,#0FH
012F F562 42 MOV 62H,A
0131 E531 43 MOV A,31H
0133 C4 44 SWAP A
0134 540F 45 ANL A,#0FH
0136 F563 46 MOV 63H,A
0138 E532 47 MOV A,32H
013A 540F 48 ANL A,#0FH
013C F564 49 MOV 64H,A
013E E532 50 MOV A,32H
0140 C4 51 SWAP A
0141 540F 52 ANL A,#0FH
0143 F565 53 MOV 65H,A
0145 E533 54 MOV A,33H
0147 540F 55 ANL A,#0FH
0149 F566 56 MOV 66H,A
014B E533 57 MOV A,33H
014D C4 58 SWAP A
A51 MACRO ASSEMBLER PRO2 06/11/03 11:04:23 PAGE 2
014E 5403 59 ANL A,#3
0150 F567 60 MOV 67H,A
0152 22 61 RET
0153 7860 62 DISPLAY: MOV R0,#60H ;显示 RAM 60H~63H的内容。
0155 12017B 63 LCALL DISC ;找出数码管的字形码并存入22H~25H中,准备发送到第一个四位显示器
0158 752000 64 MOV 20H,#0
015B 752177 65 MOV 21H,#77H
015E 755070 66 MOV SLA,#70H
0161 755306 67 MOV NUMBYT,#6
0164 1201BF 68 LCALL WRNBYT
0167 7864 69 MOV R0,#64H ;显示RAM 64H~67H的内容。
0169 317B 70 ACALL DISC ;找出数码管的字形码并存入22H~25H中,准备发送到第二个四位显示器
016B 752000 71 MOV 20H,#0
016E 752177 72 MOV 21H,#77H
0171 755076 73 MOV SLA,#76H
0174 755306 74 MOV NUMBYT,#6
0177 1201BF 75 LCALL WRNBYT
017A 22 76 RET
77 ;查表,找出数码管的字形码并存入22H~25H中,准备送显示器
017B 7922 78 DISC: MOV R1,#22H
017D 900196 79 MOV DPTR,#TAB0
0180 7A04 80 MOV R2,#4
0182 E6 81 DILP: MOV A,@R0
0183 93 82 MOVC A,@A+DPTR
0184 F7 83 MOV @R1,A
0185 08 84 INC R0
0186 09 85 INC R1
0187 DAF9 86 DJNZ R2,DILP
0189 E522 87 MOV A,22H ;补上小数点".",将日,时,分,秒分隔开
018B 4480 88 ORL A,#80H
018D F522 89 MOV 22H,A
018F E524 90 MOV A,24H
0191 4480 91 ORL A,#80H
0193 F524 92 MOV 24H,A
0195 22 93 RET
94 ;数码管的字形表
0196 3F065B4F 95 TAB0: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0.1,2,3,4,5,6,7
019A 666D7D07
019E 7F6F777C 96 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H,80H,00 ;8,9,a,b,c,d,e,f,小数点
01A2 395E7971
01A6 8000
01A8 7E0F 97 DEL0: MOV R6,#0FH
01AA 7F01 98 TM: MOV R7,#01H
01AC DFFE 99 DJNZ R7,$
01AE DEFA 100 DJNZ R6,TM
01B0 22 101 RET
102 ;长延时子程序
01B1 7DFF 103 DELY: MOV R5,#0FFH
01B3 31A8 104 TTM1: ACALL DEL0
01B5 DDFC 105 DJNZ R5,TTM1
01B7 22 106 RET
01B8 7DFF 107 DELYL: MOV R5,#0FFH
01BA 31A8 108 TTM2: CALL DEL0
01BC DDFC 109 DJNZ R5,TTM2
01BE 22 110 RET
01BF 111 WRNBYT:;调用向被控器件发送N个字节数据(WRNBYT)子程序
01BF 112 RDNBYT:;调用通用N字节接收子程序(RDNBYT)
113 END
A51 MACRO ASSEMBLER PRO2 06/11/03 11:04:23 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
COM. . . . . . . . N NUMB 0017H A
DEL0 . . . . . . . C ADDR 01A8H A
DELY . . . . . . . C ADDR 01B1H A
DELYL. . . . . . . C ADDR 01B8H A
DILP . . . . . . . C ADDR 0182H A
DISC . . . . . . . C ADDR 017BH A
DISPLAY. . . . . . C ADDR 0153H A
MAIN . . . . . . . C ADDR 0103H A
MRD. . . . . . . . N NUMB 0030H A
MTD. . . . . . . . N NUMB 0020H A
NUMBYT . . . . . . N NUMB 0053H A
P1 . . . . . . . . D ADDR 0090H A
PCF8583. . . . . . C ADDR 0109H A
RDNBYT . . . . . . C ADDR 01BFH A
SLA. . . . . . . . N NUMB 0050H A
SLA1R. . . . . . . N NUMB 0071H A
SLA1W. . . . . . . N NUMB 0070H A
SLA2R. . . . . . . N NUMB 0075H A
SLA2W. . . . . . . N NUMB 0074H A
SLA3R. . . . . . . N NUMB 00A1H A
SLA3W. . . . . . . N NUMB 00A0H A
SLAR . . . . . . . N NUMB 0052H A
SLAW . . . . . . . N NUMB 0051H A
SP . . . . . . . . D ADDR 0081H A
STAR . . . . . . . C ADDR 0100H A
TAB0 . . . . . . . C ADDR 0196H A
TM . . . . . . . . C ADDR 01AAH A
TTM1 . . . . . . . C ADDR 01B3H A
TTM2 . . . . . . . C ADDR 01BAH A
VSCL . . . . . . . B ADDR 0090H.6 A
VSDA . . . . . . . B ADDR 0090H.5 A
WRNBYT . . . . . . C ADDR 01BFH A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -