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

📄 main.lss

📁 16位的AD芯片的ADS1158的驱动程序。
💻 LSS
📖 第 1 页 / 共 3 页
字号:
 3a6:	80 81       	ld	r24, Z
 3a8:	80 61       	ori	r24, 0x10	; 16
 3aa:	8c 93       	st	X, r24
 PORTD&=~(1<<PD4);  
 3ac:	a2 e3       	ldi	r26, 0x32	; 50
 3ae:	b0 e0       	ldi	r27, 0x00	; 0
 3b0:	e2 e3       	ldi	r30, 0x32	; 50
 3b2:	f0 e0       	ldi	r31, 0x00	; 0
 3b4:	80 81       	ld	r24, Z
 3b6:	8f 7e       	andi	r24, 0xEF	; 239
 3b8:	8c 93       	st	X, r24
 //PORTB&=~(1<<PB2);     //复位ADS1256
 //PORTB|=1<<PB2;
 ad_write(0,0x02);     
 3ba:	62 e0       	ldi	r22, 0x02	; 2
 3bc:	80 e0       	ldi	r24, 0x00	; 0
 3be:	1c df       	rcall	.-456    	; 0x1f8 <ad_write>
 ad_write(1,0x03);     
 3c0:	63 e0       	ldi	r22, 0x03	; 3
 3c2:	81 e0       	ldi	r24, 0x01	; 1
 3c4:	19 df       	rcall	.-462    	; 0x1f8 <ad_write>
 ad_write(2,0x00);     
 3c6:	60 e0       	ldi	r22, 0x00	; 0
 3c8:	82 e0       	ldi	r24, 0x02	; 2
 3ca:	16 df       	rcall	.-468    	; 0x1f8 <ad_write>
 ad_write(3,0x01);     
 3cc:	61 e0       	ldi	r22, 0x01	; 1
 3ce:	83 e0       	ldi	r24, 0x03	; 3
 3d0:	13 df       	rcall	.-474    	; 0x1f8 <ad_write>
 ad_write(4,0x00);     
 3d2:	60 e0       	ldi	r22, 0x00	; 0
 3d4:	84 e0       	ldi	r24, 0x04	; 4
 3d6:	10 df       	rcall	.-480    	; 0x1f8 <ad_write>
 ad_write(5,0x00);
 3d8:	60 e0       	ldi	r22, 0x00	; 0
 3da:	85 e0       	ldi	r24, 0x05	; 5
 3dc:	0d df       	rcall	.-486    	; 0x1f8 <ad_write>
 ad_write(6,0x00); 
 3de:	60 e0       	ldi	r22, 0x00	; 0
 3e0:	86 e0       	ldi	r24, 0x06	; 6
 3e2:	0a df       	rcall	.-492    	; 0x1f8 <ad_write>
 ad_write(7,0x00);
 3e4:	60 e0       	ldi	r22, 0x00	; 0
 3e6:	87 e0       	ldi	r24, 0x07	; 7
 3e8:	07 df       	rcall	.-498    	; 0x1f8 <ad_write>
 ad_write(8,0xff);
 3ea:	6f ef       	ldi	r22, 0xFF	; 255
 3ec:	88 e0       	ldi	r24, 0x08	; 8
 3ee:	04 df       	rcall	.-504    	; 0x1f8 <ad_write>
}
 3f0:	cf 91       	pop	r28
 3f2:	df 91       	pop	r29
 3f4:	08 95       	ret

000003f6 <SPI_MasterInit>:
#include "ADS1156.h"

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~配置SPI~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

void SPI_MasterInit(void)     //配置SPI为主机
{
 3f6:	df 93       	push	r29
 3f8:	cf 93       	push	r28
 3fa:	cd b7       	in	r28, 0x3d	; 61
 3fc:	de b7       	in	r29, 0x3e	; 62
/* 设置MOSI 和SCK 为输出,其他为输入 */
DDRB|=(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB5);
 3fe:	a7 e3       	ldi	r26, 0x37	; 55
 400:	b0 e0       	ldi	r27, 0x00	; 0
 402:	e7 e3       	ldi	r30, 0x37	; 55
 404:	f0 e0       	ldi	r31, 0x00	; 0
 406:	80 81       	ld	r24, Z
 408:	8e 62       	ori	r24, 0x2E	; 46
 40a:	8c 93       	st	X, r24
DDRB&=~(1<<PB4);
 40c:	a7 e3       	ldi	r26, 0x37	; 55
 40e:	b0 e0       	ldi	r27, 0x00	; 0
 410:	e7 e3       	ldi	r30, 0x37	; 55
 412:	f0 e0       	ldi	r31, 0x00	; 0
 414:	80 81       	ld	r24, Z
 416:	8f 7e       	andi	r24, 0xEF	; 239
 418:	8c 93       	st	X, r24
PORTB|=(1<<PB1)|(1<<PB2)|(1<<PB4); //定义SS的使能端
 41a:	a8 e3       	ldi	r26, 0x38	; 56
 41c:	b0 e0       	ldi	r27, 0x00	; 0
 41e:	e8 e3       	ldi	r30, 0x38	; 56
 420:	f0 e0       	ldi	r31, 0x00	; 0
 422:	80 81       	ld	r24, Z
 424:	86 61       	ori	r24, 0x16	; 22
 426:	8c 93       	st	X, r24
/* 使能SPI 主机模式,设置时钟速率为fck/16 */
SPCR = 0x52; //7e 高位首发,SPI使能,主机模式,SCK空闲保持为低电平,数据在上升沿采样,速率为1:64(FOSC/128) 
 428:	ed e2       	ldi	r30, 0x2D	; 45
 42a:	f0 e0       	ldi	r31, 0x00	; 0
 42c:	82 e5       	ldi	r24, 0x52	; 82
 42e:	80 83       	st	Z, r24
//SPSR = 0x01; //使能倍速1:32
}
 430:	cf 91       	pop	r28
 432:	df 91       	pop	r29
 434:	08 95       	ret

00000436 <port>:

//--------------------------------------------------------------------------------------------//

void  port (void)
{
 436:	df 93       	push	r29
 438:	cf 93       	push	r28
 43a:	cd b7       	in	r28, 0x3d	; 61
 43c:	de b7       	in	r29, 0x3e	; 62
  DDRD|=(1<<PD2);       //485  cs
 43e:	a1 e3       	ldi	r26, 0x31	; 49
 440:	b0 e0       	ldi	r27, 0x00	; 0
 442:	e1 e3       	ldi	r30, 0x31	; 49
 444:	f0 e0       	ldi	r31, 0x00	; 0
 446:	80 81       	ld	r24, Z
 448:	84 60       	ori	r24, 0x04	; 4
 44a:	8c 93       	st	X, r24
  PORTD&=~(1<<PD2);  
 44c:	a2 e3       	ldi	r26, 0x32	; 50
 44e:	b0 e0       	ldi	r27, 0x00	; 0
 450:	e2 e3       	ldi	r30, 0x32	; 50
 452:	f0 e0       	ldi	r31, 0x00	; 0
 454:	80 81       	ld	r24, Z
 456:	8b 7f       	andi	r24, 0xFB	; 251
 458:	8c 93       	st	X, r24
  DDRB|=(1<<PB0);       //power 灯
 45a:	a7 e3       	ldi	r26, 0x37	; 55
 45c:	b0 e0       	ldi	r27, 0x00	; 0
 45e:	e7 e3       	ldi	r30, 0x37	; 55
 460:	f0 e0       	ldi	r31, 0x00	; 0
 462:	80 81       	ld	r24, Z
 464:	81 60       	ori	r24, 0x01	; 1
 466:	8c 93       	st	X, r24
  PORTB&=~(1<<PB0);  
 468:	a8 e3       	ldi	r26, 0x38	; 56
 46a:	b0 e0       	ldi	r27, 0x00	; 0
 46c:	e8 e3       	ldi	r30, 0x38	; 56
 46e:	f0 e0       	ldi	r31, 0x00	; 0
 470:	80 81       	ld	r24, Z
 472:	8e 7f       	andi	r24, 0xFE	; 254
 474:	8c 93       	st	X, r24
  DDRD&=~(1<<PD3);      //DRDY
 476:	a1 e3       	ldi	r26, 0x31	; 49
 478:	b0 e0       	ldi	r27, 0x00	; 0
 47a:	e1 e3       	ldi	r30, 0x31	; 49
 47c:	f0 e0       	ldi	r31, 0x00	; 0
 47e:	80 81       	ld	r24, Z
 480:	87 7f       	andi	r24, 0xF7	; 247
 482:	8c 93       	st	X, r24
  PORTD|=(1<<PD3);  
 484:	a2 e3       	ldi	r26, 0x32	; 50
 486:	b0 e0       	ldi	r27, 0x00	; 0
 488:	e2 e3       	ldi	r30, 0x32	; 50
 48a:	f0 e0       	ldi	r31, 0x00	; 0
 48c:	80 81       	ld	r24, Z
 48e:	88 60       	ori	r24, 0x08	; 8
 490:	8c 93       	st	X, r24
  DDRD|=(1<<PD4);       //START
 492:	a1 e3       	ldi	r26, 0x31	; 49
 494:	b0 e0       	ldi	r27, 0x00	; 0
 496:	e1 e3       	ldi	r30, 0x31	; 49
 498:	f0 e0       	ldi	r31, 0x00	; 0
 49a:	80 81       	ld	r24, Z
 49c:	80 61       	ori	r24, 0x10	; 16
 49e:	8c 93       	st	X, r24
  PORTD|=(1<<PD4);  
 4a0:	a2 e3       	ldi	r26, 0x32	; 50
 4a2:	b0 e0       	ldi	r27, 0x00	; 0
 4a4:	e2 e3       	ldi	r30, 0x32	; 50
 4a6:	f0 e0       	ldi	r31, 0x00	; 0
 4a8:	80 81       	ld	r24, Z
 4aa:	80 61       	ori	r24, 0x10	; 16
 4ac:	8c 93       	st	X, r24
  PORTB&=~(1<<PB2);     //复位ADS1256
 4ae:	a8 e3       	ldi	r26, 0x38	; 56
 4b0:	b0 e0       	ldi	r27, 0x00	; 0
 4b2:	e8 e3       	ldi	r30, 0x38	; 56
 4b4:	f0 e0       	ldi	r31, 0x00	; 0
 4b6:	80 81       	ld	r24, Z
 4b8:	8b 7f       	andi	r24, 0xFB	; 251
 4ba:	8c 93       	st	X, r24
  PORTB|=1<<PB2;
 4bc:	a8 e3       	ldi	r26, 0x38	; 56
 4be:	b0 e0       	ldi	r27, 0x00	; 0
 4c0:	e8 e3       	ldi	r30, 0x38	; 56
 4c2:	f0 e0       	ldi	r31, 0x00	; 0
 4c4:	80 81       	ld	r24, Z
 4c6:	84 60       	ori	r24, 0x04	; 4
 4c8:	8c 93       	st	X, r24
}
 4ca:	cf 91       	pop	r28
 4cc:	df 91       	pop	r29
 4ce:	08 95       	ret

000004d0 <main>:



//--------------------------------------------------------------------------------------------
 main(void) 
{ 
 4d0:	df 93       	push	r29
 4d2:	cf 93       	push	r28
 4d4:	cd b7       	in	r28, 0x3d	; 61
 4d6:	de b7       	in	r29, 0x3e	; 62
 4d8:	c1 54       	subi	r28, 0x41	; 65
 4da:	d0 40       	sbci	r29, 0x00	; 0
 4dc:	0f b6       	in	r0, 0x3f	; 63
 4de:	f8 94       	cli
 4e0:	de bf       	out	0x3e, r29	; 62
 4e2:	0f be       	out	0x3f, r0	; 63
 4e4:	cd bf       	out	0x3d, r28	; 61
  unsigned long int d=0,p[12],n=0,m=0;
 4e6:	1e 86       	std	Y+14, r1	; 0x0e
 4e8:	1f 86       	std	Y+15, r1	; 0x0f
 4ea:	18 8a       	std	Y+16, r1	; 0x10
 4ec:	19 8a       	std	Y+17, r1	; 0x11
 4ee:	1a 86       	std	Y+10, r1	; 0x0a
 4f0:	1b 86       	std	Y+11, r1	; 0x0b
 4f2:	1c 86       	std	Y+12, r1	; 0x0c
 4f4:	1d 86       	std	Y+13, r1	; 0x0d
 4f6:	1e 82       	std	Y+6, r1	; 0x06
 4f8:	1f 82       	std	Y+7, r1	; 0x07
 4fa:	18 86       	std	Y+8, r1	; 0x08
 4fc:	19 86       	std	Y+9, r1	; 0x09
  unsigned char aa=0,a=0,b=0,c=0,i=0;
 4fe:	1d 82       	std	Y+5, r1	; 0x05
 500:	1c 82       	std	Y+4, r1	; 0x04
 502:	1b 82       	std	Y+3, r1	; 0x03
 504:	1a 82       	std	Y+2, r1	; 0x02
 506:	19 82       	std	Y+1, r1	; 0x01
  port();     //端口初始化
 508:	96 df       	rcall	.-212    	; 0x436 <port>
  SPI_MasterInit();  //SPI端口初始化 
 50a:	75 df       	rcall	.-278    	; 0x3f6 <SPI_MasterInit>
  USART_Init(1);     //串口初始化
 50c:	81 e0       	ldi	r24, 0x01	; 1
 50e:	90 e0       	ldi	r25, 0x00	; 0
 510:	a6 dd       	rcall	.-1204   	; 0x5e <USART_Init>
  ADS1158();         //初始化ADS1158
 512:	33 df       	rcall	.-410    	; 0x37a <ADS1158>
  sei();
 514:	78 94       	sei
   
  while(1) 
  {
    aa=sum;
 516:	80 91 60 00 	lds	r24, 0x0060
 51a:	8d 83       	std	Y+5, r24	; 0x05
	
	if(aa<=8)
 51c:	8d 81       	ldd	r24, Y+5	; 0x05
 51e:	89 30       	cpi	r24, 0x09	; 9
 520:	78 f5       	brcc	.+94     	; 0x580 <main+0xb0>
	  {sum=10;
 522:	8a e0       	ldi	r24, 0x0A	; 10
 524:	80 93 60 00 	sts	0x0060, r24
	   d=ads_sum(aa);   //发送要读取的通道命令0、1、2、3、4、5、6、7,并近回蹈孟通道的AD转换值。
 528:	8d 81       	ldd	r24, Y+5	; 0x05
 52a:	eb de       	rcall	.-554    	; 0x302 <ads_sum>
 52c:	dc 01       	movw	r26, r24
 52e:	cb 01       	movw	r24, r22
 530:	8e 87       	std	Y+14, r24	; 0x0e
 532:	9f 87       	std	Y+15, r25	; 0x0f
 534:	a8 8b       	std	Y+16, r26	; 0x10
 536:	b9 8b       	std	Y+17, r27	; 0x11
	   a=d%256;
 538:	8e 85       	ldd	r24, Y+14	; 0x0e
 53a:	8c 83       	std	Y+4, r24	; 0x04
	   d=d>>8;
 53c:	8e 85       	ldd	r24, Y+14	; 0x0e
 53e:	9f 85       	ldd	r25, Y+15	; 0x0f
 540:	a8 89       	ldd	r26, Y+16	; 0x10
 542:	b9 89       	ldd	r27, Y+17	; 0x11
 544:	89 2f       	mov	r24, r25
 546:	9a 2f       	mov	r25, r26
 548:	ab 2f       	mov	r26, r27
 54a:	bb 27       	eor	r27, r27
 54c:	8e 87       	std	Y+14, r24	; 0x0e
 54e:	9f 87       	std	Y+15, r25	; 0x0f
 550:	a8 8b       	std	Y+16, r26	; 0x10
 552:	b9 8b       	std	Y+17, r27	; 0x11
	   b=d%256;
 554:	8e 85       	ldd	r24, Y+14	; 0x0e
 556:	8b 83       	std	Y+3, r24	; 0x03
	   d=d>>8;
 558:	8e 85       	ldd	r24, Y+14	; 0x0e
 55a:	9f 85       	ldd	r25, Y+15	; 0x0f
 55c:	a8 89       	ldd	r26, Y+16	; 0x10
 55e:	b9 89       	ldd	r27, Y+17	; 0x11
 560:	89 2f       	mov	r24, r25
 562:	9a 2f       	mov	r25, r26
 564:	ab 2f       	mov	r26, r27
 566:	bb 27       	eor	r27, r27
 568:	8e 87       	std	Y+14, r24	; 0x0e
 56a:	9f 87       	std	Y+15, r25	; 0x0f
 56c:	a8 8b       	std	Y+16, r26	; 0x10
 56e:	b9 8b       	std	Y+17, r27	; 0x11
	   c=d%256;
 570:	8e 85       	ldd	r24, Y+14	; 0x0e
 572:	8a 83       	std	Y+2, r24	; 0x02
	   USART_Transmit(c);
 574:	8a 81       	ldd	r24, Y+2	; 0x02
 576:	8e dd       	rcall	.-1252   	; 0x94 <USART_Transmit>
	   USART_Transmit(b);
 578:	8b 81       	ldd	r24, Y+3	; 0x03
 57a:	8c dd       	rcall	.-1256   	; 0x94 <USART_Transmit>
	   USART_Transmit(a); 
 57c:	8c 81       	ldd	r24, Y+4	; 0x04
 57e:	8a dd       	rcall	.-1260   	; 0x94 <USART_Transmit>
	  }
	 
	if(aa==9)
 580:	8d 81       	ldd	r24, Y+5	; 0x05
 582:	89 30       	cpi	r24, 0x09	; 9
 584:	41 f6       	brne	.-112    	; 0x516 <main+0x46>
	  {
	  sum=10;
 586:	8a e0       	ldi	r24, 0x0A	; 10
 588:	80 93 60 00 	sts	0x0060, r24
	  USART_Transmit(aa); 
 58c:	8d 81       	ldd	r24, Y+5	; 0x05
 58e:	82 dd       	rcall	.-1276   	; 0x94 <USART_Transmit>
	  ADS1158();    //初始化ADS1256
 590:	f4 de       	rcall	.-536    	; 0x37a <ADS1158>
 592:	c1 cf       	rjmp	.-126    	; 0x516 <main+0x46>

00000594 <_exit>:
 594:	f8 94       	cli

00000596 <__stop_program>:
 596:	ff cf       	rjmp	.-2      	; 0x596 <__stop_program>

⌨️ 快捷键说明

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