?? lichengbiao.lst
字號:
8051 Assembler Version 1.00 12/28/108 13:46:38 Page 1
C:\Documents and Settings\Administrator\桌面\新建文件夾 (2)\蔣富強\lichengbiao.a51
1 0000 RS BIT P2.0
2 0000 RW BIT P2.1
3 0000 E BIT P2.2
4 0000 SDA BIT P3.1
5 0000 SCL BIT P3.0
6 0000 DATE1 EQU 60H ;存儲要顯示的個位數
7 0000 DATE2 EQU 61H ;存儲要顯示的十位數
8 0000 DATE3 EQU 62H ;存儲要顯示的百位數
9 0000 DATE4 EQU 63H ;存儲要顯示的千位數
10 0000 DATEN EQU 78H ;存放寫入LCD的數據的個數
11 0000 DATE EQU 79H ;存放寫入LCD的數據
12 0000 ;***************************************************************
13 0000 ;主程序MAIN
14 0000 ;***************************************************************
15 0000
16 0000 ORG 0000H
17 0000 0130 AJMP MAIN
18 0030 ORG 0030H
19 0030 D2A5 MAIN: SETB P2.5 ;將P2.5置高電平
20 0032 30A579 JNB P2.5,qinling ;由p2.5判斷是否清零LCD
21 0035 755000 MOV 50H,#00H ;讀24c02直徑
22 0038 755101 MOV 51H,#01H
23 003B 120087 LCALL AT2401RC
24 003E BF0002 CJNE R7,#0,DUSHU
25 0041 0130 AJMP MAIN
26 0043 8F70 DUSHU: MOV 70H,R7
27 0045 755000 MOV 50H,#00H ;讀24c02百米脈沖數
28 0048 755102 MOV 51H,#02H
29 004B 120087 LCALL AT2401RC
30 004E 8F71 MOV 71H,R7
31 0050 755000 MOV 50H,#00H ;讀24c02里程個位數
32 0053 755120 MOV 51H,#20H
33 0056 120087 LCALL AT2401RC
34 0059 8F60 MOV DATE1,R7
35 005B 755000 MOV 50H,#00H ;讀24c02里程十位數
36 005E 755121 MOV 51H,#21H
37 0061 120087 LCALL AT2401RC
38 0064 8F61 MOV DATE2,R7
39 0066 755000 MOV 50H,#00H ;讀24c02里程百位數
40 0069 755122 MOV 51H,#22H
41 006C 120087 LCALL AT2401RC
42 006F 8F62 MOV DATE3,R7
43 0071 755000 MOV 50H,#00H ;讀24c02里程千位數
44 0074 755123 MOV 51H,#23H
45 0077 120087 LCALL AT2401RC
46 007A 8F63 MOV DATE4,R7
47 007C 514C ACALL LCDINT
48 007E 317D BACKM:ACALL JISHU ;調用收到脈沖并進行處理子程
49 0080 31F4 ACALL LCDXS
50 0082 30A529 JNB P2.5,qinling
51 0085 017E AJMP BACKM
52 0087 ;*********************************************************
53 0087 ;24C02讀初始,讀取里程數
54 0087 ;*********************************************************
55 0087 12015E AT2401RC:LCALL R2STAR
56 008A 7FA0 MOV R7,#10100000B
57 008C 12010E LCALL R2SEND
8051 Assembler Version 1.00 12/28/108 13:46:38 Page 2
C:\Documents and Settings\Administrator\桌面\新建文件夾 (2)\蔣富強\lichengbiao.a51
58 008F E550 MOV A,50H
59 0091 FF MOV R7,A
60 0092 12010E LCALL R2SEND
61 0095 E551 MOV A,51H
62 0097 FF MOV R7,A
63 0098 12010E LCALL R2SEND
64 009B D2B1 SETB SDA
65 009D D2B0 SETB SCL
66 009F 12015E LCALL R2STAR
67 00A2 7FA1 MOV R7,#10100001B
68 00A4 12010E LCALL R2SEND
69 00A7 1200EF LCALL R2READ
70 00AA 120170 LCALL R2STOP
71 00AD 22 RET
72 00AE ;***************************************************************
73 00AE ;LCD清零程序
74 00AE ;***************************************************************
75 00AE 514C qinling:ACALL LCDINT
76 00B0 756000 MOV DATE1,#0 ;里程數清零
77 00B3 756100 MOV DATE2,#0
78 00B6 756200 MOV DATE3,#0
79 00B9 756300 MOV DATE4,#0
80 00BC 757000 MOV 70H,#0 ;直徑清零
81 00BF 20A3FD HERE: JB P2.3,HERE ;由P2.3判斷輪胎直徑的輸入
82 00C2 51C5 ACALL DELAY50MS
83 00C4 0570 INC 70H ;40h中存放輸入的直徑
84 00C6 D2A4 SETB P2.4
85 00C8 30A402 JNB P2.4,JISHUAN ;由p2.4判斷是否開始工作顯示
86 00CB 01BF AJMP HERE
87 00CD ;***************************************************************
88 00CD ;計算車行駛100米所需要的脈沖數的子程序
89 00CD ;***************************************************************
90 00CD 7420 JISHUAN: MOV A,#32 ;32為100/3.14的工作系數
91 00CF 8570F0 MOV B,70H
92 00D2 84 DIV AB
93 00D3 F571 MOV 71H,A ;每跑100M的脈沖數放入71H
94 00D5 755000 MOV 50H,#00H ;每跑100M脈沖存入24C02
95 00D8 755102 MOV 51H,#02H
96 00DB AD71 MOV R5,71H
97 00DD 12013A LCALL AT2401W
98 00E0 755000 MOV 50H,#00H ;將直徑存入24c02中
99 00E3 755101 MOV 51H,#01H
100 00E6 AD70 MOV R5,70H
101 00E8 12013A LCALL AT2401W
102 00EB 514C ACALL LCDINT
103 00ED 017E AJMP BACKM
104 00EF ;***********************************************************
105 00EF ;讀取24c02的數據
106 00EF ;***********************************************************
107 00EF C0E0 R2READ: PUSH ACC ;保存AC
108 00F1 7E08 MOV R6,#08H
109 00F3 1202C0 R2RLOP1:LCALL D15US
110 00F6 D2B0 SETB SCL ;輸出一個串行時鐘
111 00F8 1202C0 LCALL D15US
112 00FB A2B1 MOV C,SDA ;讀數據線上的數據到 C
113 00FD 33 RLC A ;移到 ACC
114 00FE 1202C0 LCALL D15US
8051 Assembler Version 1.00 12/28/108 13:46:38 Page 3
C:\Documents and Settings\Administrator\桌面\新建文件夾 (2)\蔣富強\lichengbiao.a51
115 0101 C2B0 CLR SCL
116 0103 DEEE DJNZ R6,R2RLOP1 ;讀 8 BIT 數據
117 0105 1202C0 LCALL D15US
118 0108 C2B1 CLR SDA
119 010A FF MOV R7,A ;將接收到的數據保存到R7
120 010B D0E0 POP ACC ;還原ACC
121 010D 22 RET
122 010E ;******************************************************
123 010E ;寫到24C02本程序開始及結束SDA & SCL 均=0 ,發送數據在R7
124 010E ;******************************************************
125 010E C0E0 R2SEND: PUSH ACC
126 0110 EF MOV A,R7
127 0111 7E08 MOV R6,#08H
128 0113 33 R2SLOP1: RLC A
129 0114 92B1 MOV SDA,C
130 0116 1202C0 LCALL D15US
131 0119 D2B0 SETB SCL
132 011B 1202C0 LCALL D15US
133 011E C2B0 CLR SCL
134 0120 DEF1 DJNZ R6,R2SLOP1
135 0122 D2B1 SETB SDA
136 0124 1202C0 LCALL D15US
137 0127 C2B1 CLR SDA
138 0129 1202C0 LCALL D15US
139 012C A2B1 R2SLOP2: MOV C,SDA
140 012E 40FC JC R2SLOP2
141 0130 C2B0 CLR SCL
142 0132 C2B1 CLR SDA
143 0134 D0E0 POP ACC
144 0136 1202B7 LCALL D1MS
145 0139 22 RET
146 013A ;****************************************************
147 013A ;將要寫的數據交給R5,由R5送到存儲器相應的地址
148 013A ;****************************************************
149 013A D2B1 AT2401W:SETB SDA
150 013C D2B0 SETB SCL
151 013E 12015E LCALL R2STAR
152 0141 7FA0 MOV R7,#10100000B
153 0143 12010E LCALL R2SEND
154 0146 E550 MOV A,50H
155 0148 FF MOV R7,A
156 0149 12010E LCALL R2SEND
157 014C E551 MOV A,51H
158 014E FF MOV R7,A
159 014F 12010E LCALL R2SEND
160 0152 ED MOV A,R5
161 0153 FF MOV R7,A
162 0154 12010E LCALL R2SEND
163 0157 120170 LCALL R2STOP
164 015A 1202B7 LCALL D1MS
165 015D 22 RET
166 015E ;**************************************************************
167 015E ;設置開始 ,初始SDA &SCL=1,結束 SDA & SC
168 015E ;**************************************************************
169 015E D2B1 R2STAR: SETB SDA
170 0160 D2B0 SETB SCL
171 0162 1202C0 LCALL D15US ;對2401操作開始
8051 Assembler Version 1.00 12/28/108 13:46:38 Page 4
C:\Documents and Settings\Administrator\桌面\新建文件夾 (2)\蔣富強\lichengbiao.a51
172 0165 C2B1 CLR SDA ;在SCL=1時,SDA由1變為0表示開始
173 0167 1202C0 LCALL D15US
174 016A C2B0 CLR SCL
175 016C 1202C0 LCALL D15US
176 016F 22 RET
177 0170 ;******************************************************
178 0170 ;設置結束
179 0170 ;******************************************************
180 0170 1202C0 R2STOP:LCALL D15US
181 0173 D2B0 SETB SCL
182 0175 C2B1 CLR SDA
183 0177 1202C0 LCALL D15US
184 017A D2B1 SETB SDA
185 017C 22 RET
186 017D
187 017D
188 017D ;**************************************************************
189 017D ;開始對脈沖計數并存儲里程數的子程序
190 017D ;**************************************************************
191 017D D2A6 JISHU: SETB P2.6
192 017F 30A6FB JNB P2.6,JISHU ;P2.6每收到一個脈沖51H加1
193 0182 0573 INC 73H
194 0184 AC73 MOV R4,73H
195 0186 BC0AF4 CJNE R4,#10,JISHU ;51H加到10后,50就加1
196 0189 757300 MOV 73H,#0
197 018C 0572 INC 72H
198 018E E572 MOV A,72H
199 0190 B571EA CJNE A,71H,JISHU ;50H脈沖數與跑100M脈沖比較
200 0193 757200 MOV 72H,#0
201 0196 0560 INC DATE1 ;存里程數
202 0198 E560 MOV A,DATE1
203 019A B40A2A CJNE A,#10,JIESHU
204 019D 756000 MOV DATE1,#0
205 01A0 0561 INC DATE2
206 01A2 E561 MOV A,DATE2
207 01A4 B40A20 CJNE A,#10,JIESHU
208 01A7 756100 MOV DATE2,#0
209 01AA 0562 INC DATE3
210 01AC E562 MOV A,DATE3
211 01AE B40A16 CJNE A,#10,JIESHU
212 01B1 756200 MOV DATE3,#0
213 01B4 0563 INC DATE4
214 01B6 E563 MOV A,DATE4
215 01B8 B4000C CJNE A,#0,JIESHU
216 01BB 756300 MOV DATE4,#0
217 01BE 756200 MOV DATE3,#0
218 01C1 756100 MOV DATE2,#0
219 01C4 756000 MOV DATE1,#0
220 01C7 755000 JIESHU: MOV 50H,#00H ;里程數存入24c02
221 01CA 755120 MOV 51H,#20H
222 01CD AD60 MOV R5,DATE1
223 01CF 12013A LCALL AT2401W
224 01D2 755000 MOV 50H,#00H
225 01D5 755121 MOV 51H,#21H
226 01D8 AD61 MOV R5,DATE2
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -