?? 12ad.ls1
字號:
0005 229 ah?044: DS 1
230 ; #include <reg51rc2.h>
231 ; #include <stdio.h>
232 ; #include <math.h>
233 ; #include <intrins.h>
234 ;
235 ; sbit CLOCK=P1^3; //1543與MCU接口定義
236 ; sbit D_IN=P1^4;
237 ; sbit D_OUT=P1^5;
238 ; sbit _CS=P1^6;
239 ;
240 ; #define uint unsigned int
241 ; #define uchar unsigned char
242 ;
243 ; uint xdata adresult[34][6];
244 ; uint idata Result[34];
245 ; uchar Times;
246 ;
247 ; /*********讀tlc1543子程序****************************/
248 ; uint Read1543(uchar port) //形參port是采樣的通道號
249
---- 250 RSEG ?PR?_Read1543?12AD
0000 251 _Read1543:
252 USING 0
253 ; SOURCE LINE # 19
254 ;---- Variable 'port?040' assigned to Register 'R7' ----
255 ; {
A51 MACRO ASSEMBLER 12AD 06/12/2005 10:08:42 PAGE 5
256 ; SOURCE LINE # 20
257 ; uint data ad;uint data i;
258 ; uchar data al=0,ah=0;
259 ; SOURCE LINE # 22
0000 E4 260 CLR A
0001 F500 F 261 MOV al?043,A
0003 F500 F 262 MOV ah?044,A
263 ;
264 ; CLOCK=0;_CS=0;
265 ; SOURCE LINE # 24
0005 C293 266 CLR CLOCK
0007 C296 267 CLR _CS
268 ; port<<=4;
269 ; SOURCE LINE # 25
0009 EF 270 MOV A,R7
000A C4 271 SWAP A
000B 54F0 272 ANL A,#0F0H
000D FF 273 MOV R7,A
274 ; for (i=0;i<4;i++) //把通道號打入1543
275 ; SOURCE LINE # 26
000E E4 276 CLR A
000F F500 F 277 MOV i?042,A
0011 F500 F 278 MOV i?042+01H,A
0013 279 ?C0001:
280 ; {
281 ; SOURCE LINE # 27
282 ; D_IN=(bit)(port&0x80);CLOCK=1;CLOCK=0;
283 ; SOURCE LINE # 28
0013 EF 284 MOV A,R7
0014 33 285 RLC A
0015 9294 286 MOV D_IN,C
0017 D293 287 SETB CLOCK
0019 C293 288 CLR CLOCK
289 ; port<<=1;
290 ; SOURCE LINE # 29
001B EF 291 MOV A,R7
001C 25E0 292 ADD A,ACC
001E FF 293 MOV R7,A
294 ; }
295 ; SOURCE LINE # 30
001F 0500 F 296 INC i?042+01H
0021 E500 F 297 MOV A,i?042+01H
0023 7002 298 JNZ ?C0052
0025 0500 F 299 INC i?042
0027 300 ?C0052:
0027 6404 301 XRL A,#04H
0029 4500 F 302 ORL A,i?042
002B 70E6 303 JNZ ?C0001
002D 304 ?C0002:
305 ; for (i=0;i<6;i++) //填充6個CLOCK
306 ; SOURCE LINE # 31
002D E4 307 CLR A
002E F500 F 308 MOV i?042,A
0030 F500 F 309 MOV i?042+01H,A
0032 310 ?C0004:
311 ; {
312 ; SOURCE LINE # 32
313 ; CLOCK=1;CLOCK=0;
314 ; SOURCE LINE # 33
0032 D293 315 SETB CLOCK
0034 C293 316 CLR CLOCK
317 ; }
318 ; SOURCE LINE # 34
0036 0500 F 319 INC i?042+01H
0038 E500 F 320 MOV A,i?042+01H
003A 7002 321 JNZ ?C0053
A51 MACRO ASSEMBLER 12AD 06/12/2005 10:08:42 PAGE 6
003C 0500 F 322 INC i?042
003E 323 ?C0053:
003E 6406 324 XRL A,#06H
0040 4500 F 325 ORL A,i?042
0042 70EE 326 JNZ ?C0004
0044 327 ?C0005:
328 ;
329 ; _CS=1;_nop_();_nop_();_CS=0; //等待AD轉換
330 ; SOURCE LINE # 36
0044 D296 331 SETB _CS
0046 00 332 NOP
0047 00 333 NOP
0048 C296 334 CLR _CS
335 ;
336 ; for (i=0;i<2;i++) //取D9,D8
337 ; SOURCE LINE # 38
004A E4 338 CLR A
004B F500 F 339 MOV i?042,A
004D F500 F 340 MOV i?042+01H,A
004F 341 ?C0007:
342 ; {
343 ; SOURCE LINE # 39
344 ; D_OUT=1;CLOCK=1;
345 ; SOURCE LINE # 40
004F D295 346 SETB D_OUT
0051 D293 347 SETB CLOCK
348 ; ah<<=1;
349 ; SOURCE LINE # 41
0053 E500 F 350 MOV A,ah?044
0055 25E0 351 ADD A,ACC
0057 F500 F 352 MOV ah?044,A
353 ; if (D_OUT) ah|=0x01;
354 ; SOURCE LINE # 42
0059 309503 355 JNB D_OUT,?C0010
005C 430001 F 356 ORL ah?044,#01H
005F 357 ?C0010:
358 ; CLOCK=0;
359 ; SOURCE LINE # 43
005F C293 360 CLR CLOCK
361 ; }
362 ; SOURCE LINE # 44
0061 0500 F 363 INC i?042+01H
0063 E500 F 364 MOV A,i?042+01H
0065 7002 365 JNZ ?C0054
0067 0500 F 366 INC i?042
0069 367 ?C0054:
0069 6402 368 XRL A,#02H
006B 4500 F 369 ORL A,i?042
006D 70E0 370 JNZ ?C0007
006F 371 ?C0008:
372 ;
373 ; for (i=0;i<8;i++) //取D7--D0
374 ; SOURCE LINE # 46
006F E4 375 CLR A
0070 F500 F 376 MOV i?042,A
0072 F500 F 377 MOV i?042+01H,A
0074 378 ?C0011:
379 ; {
380 ; SOURCE LINE # 47
381 ; D_OUT=1;CLOCK=1;
382 ; SOURCE LINE # 48
0074 D295 383 SETB D_OUT
0076 D293 384 SETB CLOCK
385 ; al<<=1;
386 ; SOURCE LINE # 49
0078 E500 F 387 MOV A,al?043
A51 MACRO ASSEMBLER 12AD 06/12/2005 10:08:42 PAGE 7
007A 25E0 388 ADD A,ACC
007C F500 F 389 MOV al?043,A
390 ; if (D_OUT) al|=0x01;
391 ; SOURCE LINE # 50
007E 309503 392 JNB D_OUT,?C0014
0081 430001 F 393 ORL al?043,#01H
0084 394 ?C0014:
395 ; CLOCK=0;
396 ; SOURCE LINE # 51
0084 C293 397 CLR CLOCK
398 ; }
399 ; SOURCE LINE # 52
0086 0500 F 400 INC i?042+01H
0088 E500 F 401 MOV A,i?042+01H
008A 7002 402 JNZ ?C0055
008C 0500 F 403 INC i?042
008E 404 ?C0055:
008E 6408 405 XRL A,#08H
0090 4500 F 406 ORL A,i?042
0092 70E0 407 JNZ ?C0011
0094 408 ?C0012:
409 ; _CS=1;
410 ; SOURCE LINE # 53
0094 D296 411 SETB _CS
412 ;
413 ; ad=(uint)ah;ad<<=8;ad|=al; //得到AD值
414 ; SOURCE LINE # 55
0096 750000 F 415 MOV ad?041,#00H
0099 850000 F 416 MOV ad?041+01H,ah?044
009C E500 F 417 MOV A,ad?041+01H
009E 750000 F 418 MOV ad?041+01H,#00H
00A1 F500 F 419 MOV ad?041,A
00A3 E500 F 420 MOV A,al?043
00A5 4200 F 421 ORL ad?041+01H,A
422 ; return (ad);
423 ; SOURCE LINE # 56
00A7 AE00 F 424 MOV R6,ad?041
00A9 AF00 F 425 MOV R7,ad?041+01H
426 ; }
427 ; SOURCE LINE # 57
00AB 428 ?C0015:
00AB 22 429 RET
430 ; END OF _Read1543
431
432 ;
433 ; /*********第t輪采樣子程序****************************/
434 ;
435 ; void Getad(uchar t)
436
---- 437 RSEG ?PR?_Getad?12AD
0000 438 _Getad:
439 USING 0
440 ; SOURCE LINE # 61
0000 900000 F 441 MOV DPTR,#t?145
0003 EF 442 MOV A,R7
0004 F0 443 MOVX @DPTR,A
444 ; {
445 ; SOURCE LINE # 62
446 ; char xdata *xdp;
447 ; uint i,j,k;
448 ; uchar ch=0;
449 ; SOURCE LINE # 65
0005 E4 450 CLR A
0006 900000 F 451 MOV DPTR,#ch?150
0009 F0 452 MOVX @DPTR,A
453 ; for(i=0;i<4;i++)
A51 MACRO ASSEMBLER 12AD 06/12/2005 10:08:42 PAGE 8
454 ; SOURCE LINE # 66
000A 900000 F 455 MOV DPTR,#i?147
000D F0 456 MOVX @DPTR,A
000E A3 457 INC DPTR
000F F0 458 MOVX @DPTR,A
0010 459 ?C0016:
0010 900000 F 460 MOV DPTR,#i?147
0013 E0 461 MOVX A,@DPTR
0014 FE 462 MOV R6,A
0015 A3 463 INC DPTR
0016 E0 464 MOVX A,@DPTR
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -