?? 簡易數字電壓表設計程序.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 + -