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

📄 main.lss

📁 24位
💻 LSS
📖 第 1 页 / 共 3 页
字号:
 for(j=0;j<50;j++)
 152:	1c 82       	std	Y+4, r1	; 0x04
 154:	1b 82       	std	Y+3, r1	; 0x03
 156:	05 c0       	rjmp	.+10     	; 0x162 <ad_write+0x4c>
 158:	8b 81       	ldd	r24, Y+3	; 0x03
 15a:	9c 81       	ldd	r25, Y+4	; 0x04
 15c:	01 96       	adiw	r24, 0x01	; 1
 15e:	9c 83       	std	Y+4, r25	; 0x04
 160:	8b 83       	std	Y+3, r24	; 0x03
 162:	8b 81       	ldd	r24, Y+3	; 0x03
 164:	9c 81       	ldd	r25, Y+4	; 0x04
 166:	c2 97       	sbiw	r24, 0x32	; 50
 168:	b8 f3       	brcs	.-18     	; 0x158 <ad_write+0x42>

/*************************************************************************************/
volatile void delay_us(unsigned char a)   //挺时1uS
{ 
 volatile unsigned int i=0,j=0;
 for(i=0;i<a;i++)
 16a:	89 81       	ldd	r24, Y+1	; 0x01
 16c:	9a 81       	ldd	r25, Y+2	; 0x02
 16e:	01 96       	adiw	r24, 0x01	; 1
 170:	9a 83       	std	Y+2, r25	; 0x02
 172:	89 83       	std	Y+1, r24	; 0x01
 174:	89 81       	ldd	r24, Y+1	; 0x01
 176:	9a 81       	ldd	r25, Y+2	; 0x02
 178:	89 2b       	or	r24, r25
 17a:	59 f3       	breq	.-42     	; 0x152 <ad_write+0x3c>
     ads_senddata(0x50+reg);//选择写入寄存器     
     ads_senddata(0x00);    //写入1个寄存器     
     ads_senddata(data);    //写入数据
     PORTB|=(1<<PB1);       //SPI的CS=1,停止
     delay_us(1);          //挺时1uS     //可更改。但读数据必须在要等待最小一个采集周期(大约90ms)后。
}
 17c:	0f 90       	pop	r0
 17e:	0f 90       	pop	r0
 180:	0f 90       	pop	r0
 182:	0f 90       	pop	r0
 184:	cf 91       	pop	r28
 186:	df 91       	pop	r29
 188:	08 95       	ret

0000018a <ad_read>:
/*************************************************************************************/
unsigned long int ad_read()//读A/D数据。
{    
 18a:	df 93       	push	r29
 18c:	cf 93       	push	r28
 18e:	00 d0       	rcall	.+0      	; 0x190 <ad_read+0x6>
 190:	00 d0       	rcall	.+0      	; 0x192 <ad_read+0x8>
 192:	cd b7       	in	r28, 0x3d	; 61
 194:	de b7       	in	r29, 0x3e	; 62
     unsigned long int  sum=0;
     unsigned char r=0,a=0;     
     PORTB&=~(1<<PB1);        //SPI的CS=0使能
 196:	c1 98       	cbi	0x18, 1	; 24

/*************************************************************************************/
//ads126发送一字节的数据 
unsigned char ads_senddata(unsigned char data)  //SPI发送数据,要在外部保证SS = 0 
{
SPDR = data;                //启动数据传输 
 198:	8c ef       	ldi	r24, 0xFC	; 252
 19a:	8f b9       	out	0x0f, r24	; 15
while((SPSR & 0x80) == 0); // 等待传输结束 
 19c:	77 9b       	sbis	0x0e, 7	; 14
 19e:	fe cf       	rjmp	.-4      	; 0x19c <ad_read+0x12>
data = SPDR; 
 1a0:	8f b1       	in	r24, 0x0f	; 15

/*************************************************************************************/
//ads126发送一字节的数据 
unsigned char ads_senddata(unsigned char data)  //SPI发送数据,要在外部保证SS = 0 
{
SPDR = data;                //启动数据传输 
 1a2:	8f ef       	ldi	r24, 0xFF	; 255
 1a4:	8f b9       	out	0x0f, r24	; 15
while((SPSR & 0x80) == 0); // 等待传输结束 
 1a6:	77 9b       	sbis	0x0e, 7	; 14
 1a8:	fe cf       	rjmp	.-4      	; 0x1a6 <ad_read+0x1c>
data = SPDR; 
 1aa:	8f b1       	in	r24, 0x0f	; 15
     unsigned long int  sum=0;
     unsigned char r=0,a=0;     
     PORTB&=~(1<<PB1);        //SPI的CS=0使能
     ads_senddata(0xfc);       //SYNC   AD同步
     ads_senddata(0xff);       //WAKEUP     唤醒,并启动AD转换
     while((PIND&0X8)!=0);    //DRDY信号低时才能写寄存器   ,等待转换完毕
 1ac:	83 99       	sbic	0x10, 3	; 16
 1ae:	fe cf       	rjmp	.-4      	; 0x1ac <ad_read+0x22>


/*************************************************************************************/
volatile void delay_us(unsigned char a)   //挺时1uS
{ 
 volatile unsigned int i=0,j=0;
 1b0:	1c 82       	std	Y+4, r1	; 0x04
 1b2:	1b 82       	std	Y+3, r1	; 0x03
 1b4:	1a 82       	std	Y+2, r1	; 0x02
 1b6:	19 82       	std	Y+1, r1	; 0x01
 for(i=0;i<a;i++)
 1b8:	1c 82       	std	Y+4, r1	; 0x04
 1ba:	1b 82       	std	Y+3, r1	; 0x03
 1bc:	11 c0       	rjmp	.+34     	; 0x1e0 <ad_read+0x56>
 for(j=0;j<50;j++)
 1be:	1a 82       	std	Y+2, r1	; 0x02
 1c0:	19 82       	std	Y+1, r1	; 0x01
 1c2:	05 c0       	rjmp	.+10     	; 0x1ce <ad_read+0x44>
 1c4:	89 81       	ldd	r24, Y+1	; 0x01
 1c6:	9a 81       	ldd	r25, Y+2	; 0x02
 1c8:	01 96       	adiw	r24, 0x01	; 1
 1ca:	9a 83       	std	Y+2, r25	; 0x02
 1cc:	89 83       	std	Y+1, r24	; 0x01
 1ce:	89 81       	ldd	r24, Y+1	; 0x01
 1d0:	9a 81       	ldd	r25, Y+2	; 0x02
 1d2:	c2 97       	sbiw	r24, 0x32	; 50
 1d4:	b8 f3       	brcs	.-18     	; 0x1c4 <ad_read+0x3a>

/*************************************************************************************/
volatile void delay_us(unsigned char a)   //挺时1uS
{ 
 volatile unsigned int i=0,j=0;
 for(i=0;i<a;i++)
 1d6:	8b 81       	ldd	r24, Y+3	; 0x03
 1d8:	9c 81       	ldd	r25, Y+4	; 0x04
 1da:	01 96       	adiw	r24, 0x01	; 1
 1dc:	9c 83       	std	Y+4, r25	; 0x04
 1de:	8b 83       	std	Y+3, r24	; 0x03
 1e0:	8b 81       	ldd	r24, Y+3	; 0x03
 1e2:	9c 81       	ldd	r25, Y+4	; 0x04
 1e4:	89 2b       	or	r24, r25
 1e6:	59 f3       	breq	.-42     	; 0x1be <ad_read+0x34>

/*************************************************************************************/
//ads126发送一字节的数据 
unsigned char ads_senddata(unsigned char data)  //SPI发送数据,要在外部保证SS = 0 
{
SPDR = data;                //启动数据传输 
 1e8:	81 e0       	ldi	r24, 0x01	; 1
 1ea:	8f b9       	out	0x0f, r24	; 15
while((SPSR & 0x80) == 0); // 等待传输结束 
 1ec:	77 9b       	sbis	0x0e, 7	; 14
 1ee:	fe cf       	rjmp	.-4      	; 0x1ec <ad_read+0x62>
data = SPDR; 
 1f0:	8f b1       	in	r24, 0x0f	; 15


/*************************************************************************************/
volatile void delay_us(unsigned char a)   //挺时1uS
{ 
 volatile unsigned int i=0,j=0;
 1f2:	1a 82       	std	Y+2, r1	; 0x02
 1f4:	19 82       	std	Y+1, r1	; 0x01
 1f6:	1c 82       	std	Y+4, r1	; 0x04
 1f8:	1b 82       	std	Y+3, r1	; 0x03
 for(i=0;i<a;i++)
 1fa:	1a 82       	std	Y+2, r1	; 0x02
 1fc:	19 82       	std	Y+1, r1	; 0x01
 1fe:	11 c0       	rjmp	.+34     	; 0x222 <ad_read+0x98>
 for(j=0;j<50;j++)
 200:	1c 82       	std	Y+4, r1	; 0x04
 202:	1b 82       	std	Y+3, r1	; 0x03
 204:	05 c0       	rjmp	.+10     	; 0x210 <ad_read+0x86>
 206:	8b 81       	ldd	r24, Y+3	; 0x03
 208:	9c 81       	ldd	r25, Y+4	; 0x04
 20a:	01 96       	adiw	r24, 0x01	; 1
 20c:	9c 83       	std	Y+4, r25	; 0x04
 20e:	8b 83       	std	Y+3, r24	; 0x03
 210:	8b 81       	ldd	r24, Y+3	; 0x03
 212:	9c 81       	ldd	r25, Y+4	; 0x04
 214:	c2 97       	sbiw	r24, 0x32	; 50
 216:	b8 f3       	brcs	.-18     	; 0x206 <ad_read+0x7c>

/*************************************************************************************/
volatile void delay_us(unsigned char a)   //挺时1uS
{ 
 volatile unsigned int i=0,j=0;
 for(i=0;i<a;i++)
 218:	89 81       	ldd	r24, Y+1	; 0x01
 21a:	9a 81       	ldd	r25, Y+2	; 0x02
 21c:	01 96       	adiw	r24, 0x01	; 1
 21e:	9a 83       	std	Y+2, r25	; 0x02
 220:	89 83       	std	Y+1, r24	; 0x01
 222:	89 81       	ldd	r24, Y+1	; 0x01
 224:	9a 81       	ldd	r25, Y+2	; 0x02
 226:	89 2b       	or	r24, r25
 228:	59 f3       	breq	.-42     	; 0x200 <ad_read+0x76>
 22a:	20 e0       	ldi	r18, 0x00	; 0
 22c:	30 e0       	ldi	r19, 0x00	; 0
 22e:	40 e0       	ldi	r20, 0x00	; 0
 230:	50 e0       	ldi	r21, 0x00	; 0
 232:	60 e0       	ldi	r22, 0x00	; 0

/*************************************************************************************/
//ads126发送一字节的数据 
unsigned char ads_senddata(unsigned char data)  //SPI发送数据,要在外部保证SS = 0 
{
SPDR = data;                //启动数据传输 
 234:	1f b8       	out	0x0f, r1	; 15
while((SPSR & 0x80) == 0); // 等待传输结束 
 236:	77 9b       	sbis	0x0e, 7	; 14
 238:	fe cf       	rjmp	.-4      	; 0x236 <ad_read+0xac>
data = SPDR; 
 23a:	8f b1       	in	r24, 0x0f	; 15
         ads_senddata(0x01);  //发送读取数据命令
		 delay_us(1);         //挺时1uS
         for (r=0;r<3;r++)   //读取24位数据
            {
		   a=ads_senddata(0x00); //读取数据,先高位,后低位
		   sum|=a;
 23c:	90 e0       	ldi	r25, 0x00	; 0
 23e:	a0 e0       	ldi	r26, 0x00	; 0
 240:	b0 e0       	ldi	r27, 0x00	; 0
 242:	82 2b       	or	r24, r18
 244:	93 2b       	or	r25, r19
 246:	a4 2b       	or	r26, r20
 248:	b5 2b       	or	r27, r21
		   sum=sum<<8;
 24a:	22 27       	eor	r18, r18
 24c:	38 2f       	mov	r19, r24
 24e:	49 2f       	mov	r20, r25
 250:	5a 2f       	mov	r21, r26
     while((PIND&0X8)!=0);    //DRDY信号低时才能写寄存器   ,等待转换完毕
        {
		 delay_us(1);         //挺时1uS
         ads_senddata(0x01);  //发送读取数据命令
		 delay_us(1);         //挺时1uS
         for (r=0;r<3;r++)   //读取24位数据
 252:	6f 5f       	subi	r22, 0xFF	; 255
 254:	63 30       	cpi	r22, 0x03	; 3
 256:	71 f7       	brne	.-36     	; 0x234 <ad_read+0xaa>
            {
		   a=ads_senddata(0x00); //读取数据,先高位,后低位
		   sum|=a;
		   sum=sum<<8;
            }
		 sum=sum>>8;
 258:	bb 27       	eor	r27, r27
 25a:	a5 2f       	mov	r26, r21
 25c:	94 2f       	mov	r25, r20
 25e:	83 2f       	mov	r24, r19
		}
     PORTB|=(1<<PB1);     //SPI的CS=1,停止
 260:	c1 9a       	sbi	0x18, 1	; 24
 262:	2f ef       	ldi	r18, 0xFF	; 255
 264:	3f ef       	ldi	r19, 0xFF	; 255
 266:	4f ef       	ldi	r20, 0xFF	; 255
 268:	50 e0       	ldi	r21, 0x00	; 0
 26a:	28 1b       	sub	r18, r24
 26c:	39 0b       	sbc	r19, r25
 26e:	4a 0b       	sbc	r20, r26
 270:	5b 0b       	sbc	r21, r27
	 sum=0xffffff-sum;
	 return  sum;
     delay_us(1);          //挺时1uS
}
 272:	b9 01       	movw	r22, r18
 274:	ca 01       	movw	r24, r20
 276:	0f 90       	pop	r0
 278:	0f 90       	pop	r0
 27a:	0f 90       	pop	r0
 27c:	0f 90       	pop	r0
 27e:	cf 91       	pop	r28
 280:	df 91       	pop	r29
 282:	08 95       	ret

00000284 <ADS1256>:

/*************************************************************************************/
void  ADS1256(void)    //初始化ADS1256
{
 284:	8b 98       	cbi	0x11, 3	; 17
 DDRD&=~(1<<PD3);   //DRDY
 PORTD|=(1<<PD3);  
 286:	93 9a       	sbi	0x12, 3	; 18
 DDRD|=(1<<PD4);    //START
 288:	8c 9a       	sbi	0x11, 4	; 17
 PORTD|=(1<<PD4);  
 28a:	94 9a       	sbi	0x12, 4	; 18
 PORTB&=~(1<<PB2);     //复位ADS1256
 28c:	c2 98       	cbi	0x18, 2	; 24
 PORTB|=1<<PB2;
 28e:	c2 9a       	sbi	0x18, 2	; 24
 ad_write(00,0xf7);     //初始化STATUS reg  ID位为f,数据输出高位在先,自动校准开,输入缓冲关闭,DRDY高电平
 290:	67 ef       	ldi	r22, 0xF7	; 247
 292:	80 e0       	ldi	r24, 0x00	; 0
 294:	40 df       	rcall	.-384    	; 0x116 <ad_write>
 ad_write(01,0x80);     //初始化MUX    reg  单端输入第0通道为选通
 296:	60 e8       	ldi	r22, 0x80	; 128
 298:	81 e0       	ldi	r24, 0x01	; 1
 29a:	3d df       	rcall	.-390    	; 0x116 <ad_write>
 ad_write(02,0x00);     //初始化ADCOM  reg  时钟输出关闭,传感器检测关闭,放大倍数为1
 29c:	60 e0       	ldi	r22, 0x00	; 0
 29e:	82 e0       	ldi	r24, 0x02	; 2
 2a0:	3a df       	rcall	.-396    	; 0x116 <ad_write>
 ad_write(03,0xf0);     //初始化DRATE  reg  数据速率为30K
 2a2:	60 ef       	ldi	r22, 0xF0	; 240
 2a4:	83 e0       	ldi	r24, 0x03	; 3
 2a6:	37 df       	rcall	.-402    	; 0x116 <ad_write>
 ad_write(04,0x0f);     //初始化DRATE  reg  定义IO为输出高电平,节能模式            
 2a8:	6f e0       	ldi	r22, 0x0F	; 15
 2aa:	84 e0       	ldi	r24, 0x04	; 4
 2ac:	34 df       	rcall	.-408    	; 0x116 <ad_write>
}
 2ae:	08 95       	ret

000002b0 <ads_sum>:

/*************************************************************************************/
unsigned long int ads_sum(unsigned char data)//读A/D数据。
  {  
 2b0:	68 2f       	mov	r22, r24
     unsigned long int aa=0;
	 if((data>=0)&&(data<=7))
 2b2:	88 30       	cpi	r24, 0x08	; 8
 2b4:	28 f0       	brcs	.+10     	; 0x2c0 <ads_sum+0x10>
 2b6:	20 e0       	ldi	r18, 0x00	; 0
 2b8:	30 e0       	ldi	r19, 0x00	; 0
 2ba:	40 e0       	ldi	r20, 0x00	; 0
 2bc:	50 e0       	ldi	r21, 0x00	; 0
 2be:	0b c0       	rjmp	.+22     	; 0x2d6 <ads_sum+0x26>
        {
		ad_write(01,0x80+data);     //第几通道为选通
 2c0:	60 58       	subi	r22, 0x80	; 128
 2c2:	81 e0       	ldi	r24, 0x01	; 1
 2c4:	28 df       	rcall	.-432    	; 0x116 <ad_write>

/*************************************************************************************/
//ads126发送一字节的数据 
unsigned char ads_senddata(unsigned char data)  //SPI发送数据,要在外部保证SS = 0 
{
SPDR = data;                //启动数据传输 
 2c6:	80 ef       	ldi	r24, 0xF0	; 240
 2c8:	8f b9       	out	0x0f, r24	; 15
while((SPSR & 0x80) == 0); // 等待传输结束 
 2ca:	77 9b       	sbis	0x0e, 7	; 14
 2cc:	fe cf       	rjmp	.-4      	; 0x2ca <ads_sum+0x1a>
data = SPDR; 
 2ce:	8f b1       	in	r24, 0x0f	; 15
     unsigned long int aa=0;
	 if((data>=0)&&(data<=7))
        {
		ad_write(01,0x80+data);     //第几通道为选通

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -