📄 ad549.lst
字号:
A51 MACRO ASSEMBLER AD549 09/13/2007 02:45:10 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN AD549.OBJ
ASSEMBLER INVOKED BY: C:\tools\Keil\C51\BIN\A51.EXE AD549.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;液晶板显示当前模拟电压
2 ; 功能:数码显示0.20---2.00
3 ; 作者:http://www.mcuprog.com
4 ; 05-02-01
5 ;***********************************************************
6 ;***********************************************************
00A2 7 E BIT P2.2 ;LCD口线的定义
00A1 8 RW BIT P2.1
00A0 9 RS BIT P2.0
0080 10 LCDPORT EQU P0
11
12 ;AD(TLC549)引脚
00B7 13 AD_CS BIT P3.7
00B5 14 AD_CK BIT P3.5
00B6 15 AD_OUT BIT P3.6
16
002E 17 CMD_BYTE EQU 2EH
002F 18 DAT_BYTE EQU 2FH
19
0000 20 KEYBIT BIT 00H ;有按键按下标志
0030 21 ADBL EQU 30H ;当前AD的变量(00到255间),
0031 22 LEDBAI EQU 31H ;显示的百
0032 23 LEDSHI EQU 32H ;显示的十
0033 24 LEDGE EQU 33H ;显示的个
0034 25 LEDSM EQU 34H ;现在扫到第几个LED
0035 26 KEYTIME EQU 35H ;20MS扫一次按键
0000 27 ORG 0000H
0000 0130 28 AJMP MAIN
000B 29 ORG 000BH
000B 2100 30 AJMP TIME0_1
31 ;以下为主程序的开始
0030 32 ORG 0030H
0030 33 MAIN:
0030 752000 34 MOV 20H,#00H
0033 120156 35 LCALL INITLCD
0036 753000 36 MOV ADBL,#00H
0039 753504 37 MOV KEYTIME,#04H
003C 752E80 38 MOV CMD_BYTE,#80H
003F 120132 39 LCALL WRITE_CMD
0042 120181 40 LCALL DELAY0
0045 752F41 41 MOV DAT_BYTE,#"A"
0048 120144 42 LCALL WRITE_DAT
004B 752F44 43 MOV DAT_BYTE,#"D"
004E 120144 44 LCALL WRITE_DAT
0051 752F43 45 MOV DAT_BYTE,#"C"
0054 120144 46 LCALL WRITE_DAT
0057 752F3A 47 MOV DAT_BYTE,#":"
005A 120144 48 LCALL WRITE_DAT
005D 758CEE 49 MOV TH0,#0EEH ;16位的定时器,定时5MS
0060 758A00 50 MOV TL0,#00H
0063 758901 51 MOV TMOD,#01H
0066 D28C 52 SETB TR0
0068 75A882 53 MOV IE,#82H ;定时器0中断
006B 80FE 54 SJMP $
55
56
57
0100 58 ORG 0100H
A51 MACRO ASSEMBLER AD549 09/13/2007 02:45:10 PAGE 2
0100 758CEE 59 TIME0_1: MOV TH0,#0EEH
0103 758A00 60 MOV TL0,#00H
0106 D5350C 61 DJNZ KEYTIME,TIME0_RE
0109 753504 62 MOV KEYTIME,#04H ;每20MS进行一次按键扫描
010C 120116 63 LCALL DAC0832
010F 1201A0 64 LCALL JSDPBL
0112 120187 65 LCALL DISPDPBL
0115 32 66 TIME0_RE: RETI
67
68 ;以下为AD转换程序
0116 C2B7 69 DAC0832: CLR AD_CS
0118 7F08 70 MOV R7,#08H
011A 753000 71 MOV ADBL,#00H
011D D2B5 72 READ_1: SETB AD_CK
011F 20B603 73 JB AD_OUT,SETBC
0122 C3 74 CLR C
0123 2126 75 AJMP READ_2
0125 D3 76 SETBC: SETB C
0126 E530 77 READ_2: MOV A,ADBL
0128 33 78 RLC A
0129 F530 79 MOV ADBL,A
012B C2B5 80 CLR AD_CK
012D DFEE 81 DJNZ R7,READ_1
012F D2B7 82 SETB AD_CS
0131 22 83 RET
84
85
86 ;LCD1602要用到的一些子程序
87 ;写命令(入口参数CMD_BYTE)
0132 C2A0 88 WRITE_CMD: CLR RS
0134 C2A1 89 CLR RW
0136 E52E 90 MOV A,CMD_BYTE
0138 F580 91 MOV LCDPORT,A
013A D2A2 92 SETB E
013C 00 93 NOP
013D 00 94 NOP
013E C2A2 95 CLR E
0140 120181 96 LCALL DELAY0
0143 22 97 RET
98
99 ;写显示数据(入口参数DAT_BYTE)
0144 D2A0 100 WRITE_DAT: SETB RS
0146 C2A1 101 CLR RW
0148 E52F 102 MOV A,DAT_BYTE
014A F580 103 MOV LCDPORT,A
014C D2A2 104 SETB E
014E 00 105 NOP
014F 00 106 NOP
0150 C2A2 107 CLR E
0152 120181 108 LCALL DELAY0
0155 22 109 RET
110
111 ;LCD显示初始化
0156 752E30 112 INITLCD: MOV CMD_BYTE,#30H
0159 120132 113 LCALL WRITE_CMD
015C 752E30 114 MOV CMD_BYTE,#30H
015F 120132 115 LCALL WRITE_CMD
0162 752E30 116 MOV CMD_BYTE,#30H
0165 120132 117 LCALL WRITE_CMD
0168 752E38 118 MOV CMD_BYTE,#38H ;设定工作方式
016B 120132 119 LCALL WRITE_CMD
016E 752E0C 120 MOV CMD_BYTE,#0CH ;显示状态设置
0171 120132 121 LCALL WRITE_CMD
0174 752E01 122 MOV CMD_BYTE,#01H ;清屏
0177 120132 123 LCALL WRITE_CMD
017A 752E06 124 MOV CMD_BYTE,#06H ;输入方式设置
A51 MACRO ASSEMBLER AD549 09/13/2007 02:45:10 PAGE 3
017D 120132 125 LCALL WRITE_CMD
0180 22 126 RET
127 ;延时子程序
0181 7DA0 128 DELAY0: MOV R5,#0A0H
0183 00 129 DELAY1: NOP
0184 DDFD 130 DJNZ R5,DELAY1
0186 22 131 RET
132
133 ;显示变量
0187 752E85 134 DISPDPBL: MOV CMD_BYTE,#85H
018A 120132 135 LCALL WRITE_CMD
018D 85312F 136 MOV DAT_BYTE,LEDBAI
0190 120144 137 LCALL WRITE_DAT
0193 85322F 138 MOV DAT_BYTE,LEDSHI
0196 120144 139 LCALL WRITE_DAT
0199 85332F 140 MOV DAT_BYTE,LEDGE
019C 120144 141 LCALL WRITE_DAT
019F 22 142 RET
143
144 ;计算显示的值
01A0 E530 145 JSDPBL: MOV A,ADBL
01A2 75F064 146 MOV B,#64H
01A5 84 147 DIV AB
01A6 4430 148 ORL A,#30H
01A8 F531 149 MOV LEDBAI,A
01AA E5F0 150 MOV A,B
01AC 75F00A 151 MOV B,#0AH
01AF 84 152 DIV AB
01B0 4430 153 ORL A,#30H
01B2 F532 154 MOV LEDSHI,A
01B4 E5F0 155 MOV A,B
01B6 4430 156 ORL A,#30H
01B8 F533 157 MOV LEDGE,A
01BA 22 158 RET
159 END
A51 MACRO ASSEMBLER AD549 09/13/2007 02:45:10 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ADBL . . . . . . . N NUMB 0030H A
AD_CK. . . . . . . B ADDR 00B0H.5 A
AD_CS. . . . . . . B ADDR 00B0H.7 A
AD_OUT . . . . . . B ADDR 00B0H.6 A
B. . . . . . . . . D ADDR 00F0H A
CMD_BYTE . . . . . N NUMB 002EH A
DAC0832. . . . . . C ADDR 0116H A
DAT_BYTE . . . . . N NUMB 002FH A
DELAY0 . . . . . . C ADDR 0181H A
DELAY1 . . . . . . C ADDR 0183H A
DISPDPBL . . . . . C ADDR 0187H A
E. . . . . . . . . B ADDR 00A0H.2 A
IE . . . . . . . . D ADDR 00A8H A
INITLCD. . . . . . C ADDR 0156H A
JSDPBL . . . . . . C ADDR 01A0H A
KEYBIT . . . . . . B ADDR 0020H.0 A
KEYTIME. . . . . . N NUMB 0035H A
LCDPORT. . . . . . D ADDR 0080H A
LEDBAI . . . . . . N NUMB 0031H A
LEDGE. . . . . . . N NUMB 0033H A
LEDSHI . . . . . . N NUMB 0032H A
LEDSM. . . . . . . N NUMB 0034H A
MAIN . . . . . . . C ADDR 0030H A
P0 . . . . . . . . D ADDR 0080H A
P2 . . . . . . . . D ADDR 00A0H A
P3 . . . . . . . . D ADDR 00B0H A
READ_1 . . . . . . C ADDR 011DH A
READ_2 . . . . . . C ADDR 0126H A
RS . . . . . . . . B ADDR 00A0H.0 A
RW . . . . . . . . B ADDR 00A0H.1 A
SETBC. . . . . . . C ADDR 0125H A
TH0. . . . . . . . D ADDR 008CH A
TIME0_1. . . . . . C ADDR 0100H A
TIME0_RE . . . . . C ADDR 0115H A
TL0. . . . . . . . D ADDR 008AH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
WRITE_CMD. . . . . C ADDR 0132H A
WRITE_DAT. . . . . C ADDR 0144H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -