📄 简易数字电压表设计程序.lst
字号:
8051 Assembler Version 1.00 04/20/107 08:18:35 Page 1
K:\钟荣峰\简易电压表仿真部分\简易数字电压表设计程序.51
1 0000 ;***************************************************
2 0000 ;简易数字电压表设计程序
3 0000 ;***************************************************
4 0000
5 0000 ORG 0000H
6 0000 020030 LJMP START
7 0003 ORG 0003H
8 0003 020168 LJMP KEY1
9 0030 ORG 0030H
10 0030
11 0030 ;***************************************************
12 0030 ;主程序
13 0030 ;***************************************************
14 0030
15 0030 120070 START: LCALL INI ;调入初始化子程序
16 0033 120041 MAIN: LCALL TEST;调入AD数据采集子程序
17 0036 120095 LCALL DISPLAY;调入显示子程序
18 0039 0133 AJMP MAIN
19 003B 00 NOP
20 003C 00 NOP
21 003D 00 NOP
22 003E 020030 LJMP START
23 0041
24 0041 ;***************************************************
25 0041 ;AD数据采集子程序
26 0041 ;***************************************************
27 0041
28 0041 E4 TEST: CLR A
29 0042 F5A0 MOV P2,A;对P2控制口清零复位并指向IN0通道
30 0044 7870 MOV R0,#70H
31 0046 7B08 MOV R3,#08H
32 0048 120054 CON: LCALL TESTART
33 004B 7DFF MOV R5,#0FFH;延迟等待数据转换结束
34 004D 00 DLAY: NOP
35 004E 00 NOP
36 004F 00 NOP
37 0050 DDFB DJNZ R5,DLAY
38 0052 015F AJMP TAKE;跳转到数据采集
39 0054
40 0054 D2A3 TESTART: SETB P2.3;通道地址锁存并且启动A/D转换
41 0056 00 NOP
42 0057 00 NOP
43 0058 C2A3 CLR P2.3
44 005A 00 NOP
45 005B 00 NOP
46 005C 00 NOP
47 005D 00 NOP
48 005E 22 RET
49 005F D2B7 TAKE: SETB P3.7;AD输出打开
50 0061 E580 MOV A,P0
51 0063 F6 MOV @R0,A;将采集的数据存放在70H~77H单元中
52 0064 C2B7 CLR P3.7
53 0066 08 INC R0;存储单元地址加一
54 0067 E5A0 MOV A,P2
55 0069 04 INC A;通道加一
56 006A F5A0 MOV P2,A
57 006C E4 CLR A
8051 Assembler Version 1.00 04/20/107 08:18:35 Page 2
K:\钟荣峰\简易电压表仿真部分\简易数字电压表设计程序.51
58 006D DBD9 DJNZ R3,CON;判断8条通道是否都转换完成
59 006F 22 RET
60 0070
61 0070 ;***************************************************
62 0070 ;初始化程序
63 0070 ;***************************************************
64 0070
65 0070 E4 INI: CLR A
66 0071 F5A0 MOV P2,A ;对P2控制口清零复位
67 0073 C2B5 CLR P3.5;A/D转换复位
68 0075 C2B7 CLR P3.7;A/D输出复位
69 0077 758130 MOV SP,#30H;堆栈指针指向30H
70 007A 7870 MOV R0,#70H;对A/D数据存放单元70H~7BH清零
71 007C 7A0C MOV R2,#0CH
72 007E F6 LOP1: MOV @R0,A
73 007F 08 INC R0
74 0080 DAFC DJNZ R2,LOP1
75 0082 D288 SETB IT0;外部中断0为跳沿触发方式
76 0084 D2AF SETB EA;开中断
77 0086 D2A8 SETB EX0;外部中断0打开
78 0088 D2B8 SETB PX0;外部中断0优先
79 008A 74FF MOV A,#0FFH
80 008C F580 MOV P0,A
81 008E F590 MOV P1,A
82 0090 D2B1 SETB P3.1;单路灯灭
83 0092 C2B0 CLR P3.0;循环灯亮
84 0094 22 RET
85 0095
86 0095 ;***************************************************
87 0095 ;显示主程序
88 0095 ;***************************************************
89 0095
90 0095 DISPLAY:
91 0095 7B08 MOV R3,#08H
92 0097 7870 MOV R0,#70H
93 0099 757B01 MOV 7BH,#01H;显示通道路数
94 009C 7AFF MOV R2,#0FFH;每路显示时间控制4ms*255
95 009E
96 009E 1200AC DIS: LCALL DISLOOP1
97 00A1 1200E0 DISLOOP2: LCALL DISP
98 00A4 DAFB DJNZ R2,DISLOOP2
99 00A6 08 INC R0
100 00A7 057B INC 7BH
101 00A9 DBF3 DJNZ R3,DIS
102 00AB 22 RET
103 00AC
104 00AC ;***************************************************
105 00AC ;十进制转换程序
106 00AC ;***************************************************
107 00AC
108 00AC E6 DISLOOP1: MOV A,@R0;采集数据转换为输出显示十进制BCD码运算程序
109 00AD 75F033 MOV B,#51
110 00B0 84 DIV AB
111 00B1 F57A MOV 7AH,A;个位放入7AH
112 00B3 E5F0 MOV A,B
113 00B5 C2D5 CLR F0
114 00B7 941A SUBB A,#1AH
8051 Assembler Version 1.00 04/20/107 08:18:35 Page 3
K:\钟荣峰\简易电压表仿真部分\简易数字电压表设计程序.51
115 00B9 92D5 MOV F0,C
116 00BB 740A MOV A,#10
117 00BD A4 MUL AB
118 00BE 75F033 MOV B,#51
119 00C1 84 DIV AB
120 00C2 20D502 JB F0,LOOP2
121 00C5 2405 ADD A,#5
122 00C7 F579 LOOP2: MOV 79H,A;小数后第一位放入79H
123 00C9 E5F0 MOV A,B
124 00CB C2D5 CLR F0
125 00CD 941A SUBB A,#1AH
126 00CF 92D5 MOV F0,C
127 00D1 740A MOV A,#10
128 00D3 A4 MUL AB
129 00D4 75F033 MOV B,#51
130 00D7 84 DIV AB
131 00D8 20D502 JB F0,LOOP3
132 00DB 2405 ADD A,#5
133 00DD F578 LOOP3: MOV 78H,A;小数后第二位放入78H
134 00DF 22 RET
135 00E0
136 00E0 ;***************************************************
137 00E0 ;显示子程序
138 00E0 ;***************************************************
139 00E0
140 00E0 7978 DISP: MOV R1,#78H
141 00E2 E9 MOV A,R1
142 00E3 B47802 PLAY: CJNE A,#78H,L1
143 00E6 01F4 AJMP ONE
144 00E8 B47902 L1: CJNE A,#79H,L2
145 00EB 210D AJMP TWO
146 00ED B47A02 L2: CJNE A,#7AH,L3
147 00F0 2126 AJMP THREE
148 00F2 213F L3: AJMP NUM
149 00F4 E7 ONE: MOV A,@R1;小数后第二位显示程序
150 00F5 900154 MOV DPTR,#TAB
151 00F8 93 MOVC A,@A+DPTR
152 00F9 F590 MOV P1,A
153 00FB D2A4 SETB P2.4
154 00FD D297 SETB P1.7
155 00FF C2A5 CLR P2.5
156 0101 C2A6 CLR P2.6
157 0103 C2A7 CLR P2.7
158 0105 12015F LCALL DL
159 0108 09 INC R1
160 0109 7479 MOV A,#79H
161 010B 01E3 AJMP PLAY
162 010D E7 TWO: MOV A,@R1;小数后第一位显示程序
163 010E 900154 MOV DPTR,#TAB
164 0111 93 MOVC A,@A+DPTR
165 0112 F590 MOV P1,A
166 0114 D2A5 SETB P2.5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -