📄 ad.lis
字号:
0362 9070 andi R25,0
0364 982F mov R25,R24
0366 8827 clr R24
0368 9D83 std y+5,R25
036A 8C83 std y+4,R24
036C .dbline 162
036C ; sstemp[2]=sstemp[2]|uctemp[0];
036C 2884 ldd R2,y+8
036E 3324 clr R3
0370 2C01 movw R4,R24
0372 4228 or R4,R2
0374 5328 or R5,R3
0376 5D82 std y+5,R5
0378 4C82 std y+4,R4
037A .dbline 163
037A ; sstemp[2]=sstemp[2]<<4;
037A 1201 movw R2,R4
037C 220C lsl R2
037E 331C rol R3
0380 220C lsl R2
0382 331C rol R3
0384 220C lsl R2
0386 331C rol R3
0388 220C lsl R2
038A 331C rol R3
038C 3D82 std y+5,R3
038E 2C82 std y+4,R2
0390 .dbline 165
0390 ;
0390 ; PORTD=PORTD|0x0C;
0390 82B3 in R24,0x12
0392 8C60 ori R24,12
0394 82BB out 0x12,R24
0396 .dbline 166
0396 ; PORTD=PORTD&0xEF; //A2A1A0:011 channel B1
0396 82B3 in R24,0x12
0398 8F7E andi R24,239
039A 82BB out 0x12,R24
039C .dbline 167
039C ; CLEARBIT(AD_RD_OUT, AD_RD);
039C 80916500 lds R24,101
03A0 8D7F andi R24,253
03A2 80936500 sts 101,R24
03A6 .dbline 168
03A6 ; NOP();
03A6 0000 nop
03A8 .dbline 169
03A8 ; uctemp[0]=PINC; //first byte
03A8 23B2 in R2,0x13
03AA 2886 std y+8,R2
03AC .dbline 170
03AC ; SETBIT(AD_RD_OUT, AD_RD);
03AC 80916500 lds R24,101
03B0 8260 ori R24,2
03B2 80936500 sts 101,R24
03B6 .dbline 171
03B6 ; CLEARBIT(AD_RD_OUT, AD_RD);
03B6 80916500 lds R24,101
03BA 8D7F andi R24,253
03BC 80936500 sts 101,R24
03C0 .dbline 172
03C0 ; NOP();
03C0 0000 nop
03C2 .dbline 173
03C2 ; uctemp[1]=PINC; //second byte
03C2 23B2 in R2,0x13
03C4 2986 std y+9,R2
03C6 .dbline 174
03C6 ; SETBIT(AD_RD_OUT, AD_RD);
03C6 80916500 lds R24,101
03CA 8260 ori R24,2
03CC 80936500 sts 101,R24
03D0 .dbline 175
03D0 ; sstemp[3]=(uctemp[1]&0x0F)<<8;
03D0 822D mov R24,R2
03D2 9927 clr R25
03D4 8F70 andi R24,15
03D6 9070 andi R25,0
03D8 982F mov R25,R24
03DA 8827 clr R24
03DC 9F83 std y+7,R25
03DE 8E83 std y+6,R24
03E0 .dbline 176
03E0 ; sstemp[3]=sstemp[3]|uctemp[0];
03E0 2884 ldd R2,y+8
03E2 3324 clr R3
03E4 2C01 movw R4,R24
03E6 4228 or R4,R2
03E8 5328 or R5,R3
03EA 5F82 std y+7,R5
03EC 4E82 std y+6,R4
03EE .dbline 177
03EE ; sstemp[3]=sstemp[3]<<4;
03EE 1201 movw R2,R4
03F0 220C lsl R2
03F2 331C rol R3
03F4 220C lsl R2
03F6 331C rol R3
03F8 220C lsl R2
03FA 331C rol R3
03FC 220C lsl R2
03FE 331C rol R3
0400 3F82 std y+7,R3
0402 2E82 std y+6,R2
0404 .dbline 179
0404 ;
0404 ; SETBIT(AD_CS_OUT, AD_CS);//unselect the ads7864
0404 80916500 lds R24,101
0408 8160 ori R24,1
040A 80936500 sts 101,R24
040E .dbline 181
040E ;
040E ; pulOutBuff[0]=sstemp[0]+32768;
040E 8881 ldd R24,y+0
0410 9981 ldd R25,y+1
0412 8050 subi R24,0 ; offset = 32768
0414 9048 sbci R25,128
0416 1C01 movw R2,R24
0418 4424 clr R4
041A 5524 clr R5
041C F801 movw R30,R16
041E 2082 std z+0,R2
0420 3182 std z+1,R3
0422 4282 std z+2,R4
0424 5382 std z+3,R5
0426 .dbline 182
0426 ; pulOutBuff[1]=sstemp[1]+32768;
0426 8A81 ldd R24,y+2
0428 9B81 ldd R25,y+3
042A 8050 subi R24,0 ; offset = 32768
042C 9048 sbci R25,128
042E 1C01 movw R2,R24
0430 4424 clr R4
0432 5524 clr R5
0434 2482 std z+4,R2
0436 3582 std z+5,R3
0438 4682 std z+6,R4
043A 5782 std z+7,R5
043C .dbline 183
043C ; pulOutBuff[2]=sstemp[2]+32768;
043C 8C81 ldd R24,y+4
043E 9D81 ldd R25,y+5
0440 8050 subi R24,0 ; offset = 32768
0442 9048 sbci R25,128
0444 1C01 movw R2,R24
0446 4424 clr R4
0448 5524 clr R5
044A F801 movw R30,R16
044C 2086 std z+8,R2
044E 3186 std z+9,R3
0450 4286 std z+10,R4
0452 5386 std z+11,R5
0454 .dbline 184
0454 ; pulOutBuff[3]=sstemp[3]+32768;
0454 8E81 ldd R24,y+6
0456 9F81 ldd R25,y+7
0458 8050 subi R24,0 ; offset = 32768
045A 9048 sbci R25,128
045C 1C01 movw R2,R24
045E 4424 clr R4
0460 5524 clr R5
0462 F801 movw R30,R16
0464 2486 std z+12,R2
0466 3586 std z+13,R3
0468 4686 std z+14,R4
046A 5786 std z+15,R5
046C .dbline -2
046C L23:
046C 2A96 adiw R28,10
046E .dbline 0 ; func end
046E 0895 ret
0470 .dbsym l uctemp 8 A[2:2]c
0470 .dbsym l sstemp 0 A[8:4]S
0470 .dbsym r pulOutBuff 16 pl
0470 .dbend
0470 .dbfunc e usAD_GetData _usAD_GetData fV
0470 ; uctemp -> y+8
0470 ; sstemp -> y+0
0470 ; pusOutBuff -> R16,R17
.even
0470 _usAD_GetData::
0470 2A97 sbiw R28,10
0472 .dbline -1
0472 .dbline 281
0472 ;
0472 ; }
0472 ;
0472 ;
0472 ; /*
0472 ; void usAD_GetData(u16* pusOutBuff)
0472 ; {
0472 ; u8 uctemp[2];
0472 ; s16 sstemp[4];
0472 ;
0472 ; //sstemp[0]=0;
0472 ; //sstemp[1]=0;
0472 ; //sstemp[2]=0;
0472 ; //sstemp[3]=0;
0472 ;
0472 ;
0472 ; //hold channel A and channel B
0472 ; PORTD=PORTD&0x9F; //bring HoldA,HoldB low
0472 ; PORTD=PORTD|0xE0; //bring HoldA,HoldB high
0472 ;
0472 ; while(CHECKBIT(AD_BUSY_IN, AD_BUSY));//wait until first convertion is started
0472 ; while(0x00==CHECKBIT(AD_BUSY_IN, AD_BUSY));//wait until first convertion is finished
0472 ; while(CHECKBIT(AD_BUSY_IN, AD_BUSY));//wait until second convertion is started
0472 ; while(0x00==CHECKBIT(AD_BUSY_IN, AD_BUSY));//wait until second convertion is finished
0472 ; CLEARBIT(AD_CS_OUT, AD_CS);//select the ads7864
0472 ;
0472 ; SETBIT(AD_RD_OUT, AD_RD);
0472 ;
0472 ; PORTD=PORTD|0x0C;
0472 ; PORTD=PORTD&0xE3; //A2A1A0:000 channel A0
0472 ; CLEARBIT(AD_RD_OUT, AD_RD);
0472 ; NOP();
0472 ; uctemp[0]=PINC; //first byte
0472 ; SETBIT(AD_RD_OUT, AD_RD);
0472 ; CLEARBIT(AD_RD_OUT, AD_RD);
0472 ; NOP();
0472 ; uctemp[1]=PINC; //second byte
0472 ; SETBIT(AD_RD_OUT, AD_RD);
0472 ; sstemp[0]=(uctemp[1]&0x0F)<<8;
0472 ; sstemp[0]=sstemp[0]|uctemp[0];
0472 ; sstemp[0]=sstemp[0]<<4;
0472 ;
0472 ; PORTD=PORTD|0x0C;
0472 ; PORTD=PORTD&0xE7; //A2A1A0:001 channel A1
0472 ; CLEARBIT(AD_RD_OUT, AD_RD);
0472 ; NOP();
0472 ; uctemp[0]=PINC; //first byte
0472 ; SETBIT(AD_RD_OUT, AD_RD);
0472 ; CLEARBIT(AD_RD_OUT, AD_RD);
0472 ; NOP();
0472 ; uctemp[1]=PINC; //second byte
0472 ; SETBIT(AD_RD_OUT, AD_RD);
0472 ; sstemp[1]=(uctemp[1]&0x0F)<<8;
0472 ; sstemp[1]=sstemp[1]|uctemp[0];
0472 ; sstemp[1]=sstemp[1]<<4;
0472 ;
0472 ;
0472 ; PORTD=PORTD|0x0C;
0472 ; PORTD=PORTD&0xEB; //A2A1A0:010 channel B0
0472 ; CLEARBIT(AD_RD_OUT, AD_RD);
0472 ; NOP();
0472 ; uctemp[0]=PINC; //first byte
0472 ; SETBIT(AD_RD_OUT, AD_RD);
0472 ; CLEARBIT(AD_RD_OUT, AD_RD);
0472 ; NOP();
0472 ; uctemp[1]=PINC; //second byte
0472 ; SETBIT(AD_RD_OUT, AD_RD);
0472 ; sstemp[2]=(uctemp[1]&0x0F)<<8;
0472 ; sstemp[2]=sstemp[2]|uctemp[0];
0472 ; sstemp[2]=sstemp[2]<<4;
0472 ;
0472 ; PORTD=PORTD|0x0C;
0472 ; PORTD=PORTD&0xEF; //A2A1A0:011 channel B1
0472 ; CLEARBIT(AD_RD_OUT, AD_RD);
0472 ; NOP();
0472 ; uctemp[0]=PINC; //first byte
0472 ; SETBIT(AD_RD_OUT, AD_RD);
0472 ; CLEARBIT(AD_RD_OUT, AD_RD);
0472 ; NOP();
0472 ; uctemp[1]=PINC; //second byte
0472 ; SETBIT(AD_RD_OUT, AD_RD);
0472 ; sstemp[3]=(uctemp[1]&0x0F)<<8;
0472 ; sstemp[3]=sstemp[3]|uctemp[0];
0472 ; sstemp[3]=sstemp[3]<<4;
0472 ;
0472 ; SETBIT(AD_CS_OUT, AD_CS);//unselect the ads7864
0472 ;
0472 ; pusOutBuff[0]=sstemp[0]+32768;
0472 ; pusOutBuff[1]=sstemp[1]+32768;
0472 ; pusOutBuff[2]=sstemp[2]+32768;
0472 ; pusOutBuff[3]=sstemp[3]+32768;
0472 ;
0472 ; }
0472 ; */
0472 ;
0472 ; void usAD_GetData(u16* pusOutBuff)
0472 ; {
0472 .dbline 286
0472 ; u8 uctemp[2];
0472 ; s16 sstemp[4];
0472 ;
0472 ; //hold channel A and channel B
0472 ; PORTD=PORTD&0x9F; //bring HoldA,HoldB low
0472 82B3 in R24,0x12
0474 8F79 andi R24,159
0476 82BB out 0x12,R24
0478 .dbline 287
0478 ; PORTD=PORTD|0xE0; //bring HoldA,HoldB high
0478 82B3 in R24,0x12
047A 806E ori R24,224
047C 82BB out 0x12,R24
047E L63:
047E .dbline 289
047E L64:
047E .dbline 289
047E ;
047E ; while(CHECKBIT(AD_BUSY_IN, AD_BUSY));//wait until first convertion is started
047E 8099 sbic 0x10,0
0480 FECF rjmp L63
0482 L66:
0482 .dbline 290
0482 L67:
0482 .dbline 290
0482 ; while(0x00==CHECKBIT(AD_BUSY_IN, AD_BUSY));//wait until first convertion is finished
0482 809B sbis 0x10,0
0484 FECF rjmp L66
0486 L69:
0486 .dbline 291
0486 L70:
0486 .dbline 291
0486 ; while(CHECKBIT(AD_BUSY_IN, AD_BUSY));//wait until second convertion is started
0486 8099 sbic 0x10,0
0488 FECF rjmp L69
048A L72:
048A .dbline 292
048A L73:
048A .dbline 292
048A ; while(0x00==CHECKBIT(AD_BUSY_IN, AD_BUSY));//wait until second convertion is finished
048A 809B sbis 0x10,0
048C FECF rjmp L72
048E .dbline 293
048E ; CLEARBIT(AD_CS_OUT, AD_CS);//select the ads7864
048E 80916500 lds R24,101
0492 8E7F andi R24,254
0494 80936500 sts 101,R24
0498 .dbline 295
0498 ;
0498 ; SETBIT(AD_RD_OUT, AD_RD);
0498 80916500 lds R24,101
049C 8260 ori R24,2
049E 80936500 sts 101,R24
04A2 .dbline 297
04A2 ;
04A2 ; PORTD=PORTD|0x0C;
04A2 82B3 in R24,0x12
04A4 8C60 ori R24,12
04A6 82BB out 0x12,R24
04A8 .dbline 298
04A8 ; PORTD=PORTD&0xE3; //A2A1A0:000 channel A0
04A8 82B3 in R24,0x12
04AA 837E andi R24,227
04AC 82BB out 0x12,R24
04AE .dbline 299
04AE ; CLEARBIT(AD_RD_OUT, AD_RD);
04AE 80916500 lds R24,101
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -