⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad.lis

📁 ATmega128和ads7864实现ATP闭环控制
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -