📄 i2c_m.ls1
字号:
0031 20 193 DB 020H
0032 0000 F 194 DW ?C0005
0034 28 195 DB 028H
0035 0000 F 196 DW ?C0009
0037 30 197 DB 030H
0038 0000 F 198 DW ?C0011
003A 40 199 DB 040H
003B 0000 F 200 DW ?C0014
003D 48 201 DB 048H
003E 0000 F 202 DW ?C0012
0040 50 203 DB 050H
0041 0000 F 204 DW ?C0013
0043 58 205 DB 058H
0044 0000 F 206 DW ?C0015
0046 60 207 DB 060H
0047 0000 F 208 DW ?C0016
0049 68 209 DB 068H
004A 0000 F 210 DW ?C0017
004C 80 211 DB 080H
004D 0000 F 212 DW ?C0018
004F 88 213 DB 088H
0050 0000 F 214 DW ?C0019
0052 A0 215 DB 0A0H
0053 0000 F 216 DW ?C0020
0055 A8 217 DB 0A8H
0056 0000 F 218 DW ?C0021
0058 B8 219 DB 0B8H
0059 0000 F 220 DW ?C0024
005B C0 221 DB 0C0H
005C 0000 222 DW 00H
005E 0000 F 223 DW ?C0025
224 ; {
225 ; SOURCE LINE # 18
226 ; case Bus_error:
227 ; SOURCE LINE # 19
0060 228 ?C0002:
229 ; transreg(Bus_error);
230 ; SOURCE LINE # 20
0060 E4 231 CLR A
0061 FF 232 MOV R7,A
0062 120000 F 233 LCALL _transreg
234 ; break;
235 ; SOURCE LINE # 21
0065 020000 F 236 LJMP ?C0025
237 ; //======master transmitter mode=====
238 ; case M_START: //0x08
239 ; SOURCE LINE # 23
0068 240 ?C0003:
241 ; transreg(M_START);
242 ; SOURCE LINE # 24
0068 7F08 243 MOV R7,#08H
006A 120000 F 244 LCALL _transreg
245 ; S1DAT = Slave_Adr; //sla+R/W
246 ; SOURCE LINE # 25
006D 7800 F 247 MOV R0,#LOW (Slave_Adr)
006F E6 248 MOV A,@R0
0070 F5DA 249 MOV S1DAT,A
250 ; num=0;
251 ; SOURCE LINE # 26
252 ; S1CON = RELEASE_BUS_ACK;
253 ; SOURCE LINE # 27
254 ; break;
A51 MACRO ASSEMBLER I2C_M 12/18/2003 11:19:19 PAGE 5
255 ; SOURCE LINE # 28
0072 8064 256 SJMP ?C0032
257 ; //-------------------------
258 ; case MT_SLAVE_ACK: //0x18
259 ; SOURCE LINE # 30
0074 260 ?C0004:
261 ; transreg(MT_SLAVE_ACK);
262 ; SOURCE LINE # 31
0074 7F18 263 MOV R7,#018H
0076 120000 F 264 LCALL _transreg
265 ; S1DAT = DATA[num];
266 ; SOURCE LINE # 32
267 ; num++;
268 ; SOURCE LINE # 33
269 ; S1CON = RELEASE_BUS_ACK;
270 ; SOURCE LINE # 34
271 ; break;
272 ; SOURCE LINE # 35
0079 020000 F 273 LJMP ?C0028
274 ; //-------------------------
275 ; case MT_DATA: //0x28
276 ; SOURCE LINE # 37
007C 277 ?C0005:
278 ; transreg(MT_DATA);
279 ; SOURCE LINE # 38
007C 7F28 280 MOV R7,#028H
007E 120000 F 281 LCALL _transreg
282 ; if(num<4)
283 ; SOURCE LINE # 39
0081 E500 F 284 MOV A,num
0083 C3 285 CLR C
0084 9404 286 SUBB A,#04H
0086 5046 287 JNC ?C0034
288 ; {
289 ; SOURCE LINE # 40
290 ; S1DAT=DATA[num];
291 ; SOURCE LINE # 41
0088 292 ?C0027:
293 ; num++;
294 ; SOURCE LINE # 42
295 ; S1CON = RELEASE_BUS_ACK;
296 ; SOURCE LINE # 43
297 ; }
298 ; SOURCE LINE # 44
0088 020000 F 299 LJMP ?C0028
008B 300 ?C0006:
301 ; else
302 ; {
303 ; SOURCE LINE # 46
304 ; S1CON = SEND_STOP_ACK;
305 ; SOURCE LINE # 47
306 ; }
307 ; SOURCE LINE # 48
308 ; break;
309 ; SOURCE LINE # 49
008B 8041 310 SJMP ?C0034
311 ; //-------------------------
312 ; case MT_SLAVE_NONACK: //0x20
313 ; SOURCE LINE # 51
008D 314 ?C0008:
315 ; transreg(MT_SLAVE_NONACK);
316 ; SOURCE LINE # 52
008D 7F20 317 MOV R7,#020H
008F 120000 F 318 LCALL _transreg
319 ; S1CON = SEND_STOP_ACK;
320 ; SOURCE LINE # 53
A51 MACRO ASSEMBLER I2C_M 12/18/2003 11:19:19 PAGE 6
0092 321 ?C0029:
322 ; break;
323 ; SOURCE LINE # 54
0092 803A 324 SJMP ?C0034
325 ; //-------------------------
326 ; case MT_DATA_NONACK: //0x30
327 ; SOURCE LINE # 56
0094 328 ?C0009:
329 ; transreg(MT_DATA_NONACK);
330 ; SOURCE LINE # 57
0094 7F30 331 MOV R7,#030H
0096 120000 F 332 LCALL _transreg
333 ; S1CON = SEND_STOP_ACK;
334 ; SOURCE LINE # 58
0099 335 ?C0030:
336 ; break;
337 ; SOURCE LINE # 59
0099 8033 338 SJMP ?C0034
339 ; //-------------------------
340 ; case M_RESTART: //0x10
341 ; SOURCE LINE # 61
009B 342 ?C0010:
343 ; transreg(M_RESTART);
344 ; SOURCE LINE # 62
009B 7F10 345 MOV R7,#010H
009D 120000 F 346 LCALL _transreg
347 ; S1DAT = Slave_Adr;
348 ; SOURCE LINE # 63
00A0 7800 F 349 MOV R0,#LOW (Slave_Adr)
00A2 E6 350 MOV A,@R0
00A3 F5DA 351 MOV S1DAT,A
352 ; S1CON = RELEASE_BUS_ACK;
353 ; SOURCE LINE # 64
00A5 75D8C6 354 MOV S1CON,#0C6H
355 ; num = 0;
356 ; SOURCE LINE # 65
00A8 750000 F 357 MOV num,#00H
358 ; break;
359 ; SOURCE LINE # 66
00AB 020000 F 360 LJMP ?C0025
361 ; //==========================================
362 ;
363 ; //======master receiver mode================
364 ; case MR_SLAVE_ACK: //0x40
365 ; SOURCE LINE # 70
00AE 366 ?C0011:
367 ; transreg(MR_SLAVE_ACK);
368 ; SOURCE LINE # 71
00AE 7F40 369 MOV R7,#040H
00B0 120000 F 370 LCALL _transreg
371 ; num=0;
372 ; SOURCE LINE # 72
00B3 373 ?C0026:
374 ; S1CON = RELEASE_BUS_ACK;
375 ; SOURCE LINE # 73
376 ; break;
377 ; SOURCE LINE # 74
00B3 8023 378 SJMP ?C0032
379 ; //--------------------------
380 ; case MR_DATA_ACK: //0x50
381 ; SOURCE LINE # 76
00B5 382 ?C0012:
383 ; transreg(MR_DATA_ACK);
384 ; SOURCE LINE # 77
00B5 7F50 385 MOV R7,#050H
386 ; SDATA[num]=S1DAT;
A51 MACRO ASSEMBLER I2C_M 12/18/2003 11:19:19 PAGE 7
387 ; SOURCE LINE # 78
388 ; num++;
389 ; SOURCE LINE # 79
390 ; S1CON = RELEASE_BUS_ACK;
391 ; SOURCE LINE # 80
392 ; break;
393 ; SOURCE LINE # 81
00B7 8031 394 SJMP ?C0033
395 ; //-------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -