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

📄 main.lss

📁 24位
💻 LSS
📖 第 1 页 / 共 3 页
字号:
	    ads_senddata(0xf0);         //自校准
	    aa=ad_read();               //读24位A/D数据。
 2d0:	5c df       	rcall	.-328    	; 0x18a <ad_read>
 2d2:	9b 01       	movw	r18, r22
 2d4:	ac 01       	movw	r20, r24
		}
	 return aa;
  }
 2d6:	b9 01       	movw	r22, r18
 2d8:	ca 01       	movw	r24, r20
 2da:	08 95       	ret

000002dc <SPI_MasterInit>:
#include "ADS1256.H"

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

void SPI_MasterInit(void)     //配置SPI为主机
{
 2dc:	87 b3       	in	r24, 0x17	; 23
 2de:	8e 62       	ori	r24, 0x2E	; 46
 2e0:	87 bb       	out	0x17, r24	; 23
/* 设置MOSI 和SCK 为输出,其他为输入 */
DDRB|=(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB5);
DDRB&=~(1<<PB4);
 2e2:	bc 98       	cbi	0x17, 4	; 23
PORTB|=(1<<PB1)|(1<<PB2)|(1<<PB4); //定义SS的使能端
 2e4:	88 b3       	in	r24, 0x18	; 24
 2e6:	86 61       	ori	r24, 0x16	; 22
 2e8:	88 bb       	out	0x18, r24	; 24
/* 使能SPI 主机模式,设置时钟速率为fck/16 */
SPCR = 0x52; //7e 高位首发,SPI使能,主机模式,SCK空闲保持为低电平,数据在上升沿采样,速率为1:64(FOSC/128) 
 2ea:	82 e5       	ldi	r24, 0x52	; 82
 2ec:	8d b9       	out	0x0d, r24	; 13
SPSR = 0x01; //使能倍速1:32
 2ee:	81 e0       	ldi	r24, 0x01	; 1
 2f0:	8e b9       	out	0x0e, r24	; 14
}
 2f2:	08 95       	ret

000002f4 <port>:

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

void  port (void)
{
 2f4:	8a 9a       	sbi	0x11, 2	; 17
  DDRD|=(1<<PD2);    //485  cs
  PORTD&=~(1<<PD2);  
 2f6:	92 98       	cbi	0x12, 2	; 18
  DDRB|=(1<<PB0);    //power 灯
 2f8:	b8 9a       	sbi	0x17, 0	; 23
  PORTB&=~(1<<PB0);  
 2fa:	c0 98       	cbi	0x18, 0	; 24
  
}
 2fc:	08 95       	ret

000002fe <main>:



//--------------------------------------------------------------------------------------------
 main(void) 
{ 
 2fe:	3f 92       	push	r3
 300:	4f 92       	push	r4
 302:	5f 92       	push	r5
 304:	6f 92       	push	r6
 306:	7f 92       	push	r7
 308:	8f 92       	push	r8
 30a:	9f 92       	push	r9
 30c:	af 92       	push	r10
 30e:	bf 92       	push	r11
 310:	cf 92       	push	r12
 312:	df 92       	push	r13
 314:	ef 92       	push	r14
 316:	ff 92       	push	r15
 318:	0f 93       	push	r16
 31a:	1f 93       	push	r17

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

void  port (void)
{
  DDRD|=(1<<PD2);    //485  cs
 31c:	8a 9a       	sbi	0x11, 2	; 17
  PORTD&=~(1<<PD2);  
 31e:	92 98       	cbi	0x12, 2	; 18
  DDRB|=(1<<PB0);    //power 灯
 320:	b8 9a       	sbi	0x17, 0	; 23
  PORTB&=~(1<<PB0);  
 322:	c0 98       	cbi	0x18, 0	; 24
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~配置SPI~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

void SPI_MasterInit(void)     //配置SPI为主机
{
/* 设置MOSI 和SCK 为输出,其他为输入 */
DDRB|=(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB5);
 324:	87 b3       	in	r24, 0x17	; 23
 326:	8e 62       	ori	r24, 0x2E	; 46
 328:	87 bb       	out	0x17, r24	; 23
DDRB&=~(1<<PB4);
 32a:	bc 98       	cbi	0x17, 4	; 23
PORTB|=(1<<PB1)|(1<<PB2)|(1<<PB4); //定义SS的使能端
 32c:	88 b3       	in	r24, 0x18	; 24
 32e:	86 61       	ori	r24, 0x16	; 22
 330:	88 bb       	out	0x18, r24	; 24
/* 使能SPI 主机模式,设置时钟速率为fck/16 */
SPCR = 0x52; //7e 高位首发,SPI使能,主机模式,SCK空闲保持为低电平,数据在上升沿采样,速率为1:64(FOSC/128) 
 332:	82 e5       	ldi	r24, 0x52	; 82
 334:	8d b9       	out	0x0d, r24	; 13
SPSR = 0x01; //使能倍速1:32
 336:	81 e0       	ldi	r24, 0x01	; 1
 338:	8e b9       	out	0x0e, r24	; 14

//设置串口的参数
void USART_Init( unsigned int baud )
{
/* 设置波特率9600*/
UBRRH = 0;
 33a:	10 bc       	out	0x20, r1	; 32
UBRRL = 47;
 33c:	8f e2       	ldi	r24, 0x2F	; 47
 33e:	89 b9       	out	0x09, r24	; 9
/* 接收器与发送器使能*/
UCSRB = (1<<TXCIE)|(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
 340:	88 ed       	ldi	r24, 0xD8	; 216
 342:	8a b9       	out	0x0a, r24	; 10
/* 设置帧格式: 8 个数据位, 2 个停止位*/
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
 344:	8e e8       	ldi	r24, 0x8E	; 142
 346:	80 bd       	out	0x20, r24	; 32
  unsigned long int d=0,p[12],n=0,m=0;
  unsigned char aa=0,a=0,b=0,c=0,i=0;
  port();     //端口初始化
  SPI_MasterInit();  //SPI端口初始化 
  USART_Init(1);     //串口初始化
  ADS1256();         //初始化ADS1256
 348:	9d df       	rcall	.-198    	; 0x284 <ADS1256>
  sei();
 34a:	78 94       	sei
 34c:	ee 24       	eor	r14, r14
 34e:	ff 24       	eor	r15, r15
 350:	87 01       	movw	r16, r14
   
  while(1) 
  {
    aa=sum;
	if(aa<=10)
	  {sum=15;
 352:	6f e0       	ldi	r22, 0x0F	; 15
 354:	36 2e       	mov	r3, r22
  ADS1256();         //初始化ADS1256
  sei();
   
  while(1) 
  {
    aa=sum;
 356:	40 90 60 00 	lds	r4, 0x0060
	if(aa<=10)
 35a:	8a e0       	ldi	r24, 0x0A	; 10
 35c:	84 15       	cp	r24, r4
 35e:	d8 f3       	brcs	.-10     	; 0x356 <main+0x58>
	  {sum=15;
 360:	30 92 60 00 	sts	0x0060, r3
 364:	61 2c       	mov	r6, r1
 366:	71 2c       	mov	r7, r1
 368:	50 e4       	ldi	r21, 0x40	; 64
 36a:	85 2e       	mov	r8, r21
 36c:	91 2c       	mov	r9, r1
 36e:	aa 24       	eor	r10, r10
 370:	bb 24       	eor	r11, r11
 372:	65 01       	movw	r12, r10
 374:	55 24       	eor	r5, r5
	   a=0;b=0;c=0;n=0x400000;m=0;
	   for (i=0;i<12;i++)
	     {
	      p[i]=ads_sum(aa);//读A/D数据。通道地址0~7  0、1、2、3、4、5、6、7
 376:	84 2d       	mov	r24, r4
 378:	9b df       	rcall	.-202    	; 0x2b0 <ads_sum>
 37a:	66 15       	cp	r22, r6
 37c:	77 05       	cpc	r23, r7
 37e:	88 05       	cpc	r24, r8
 380:	99 05       	cpc	r25, r9
 382:	10 f4       	brcc	.+4      	; 0x388 <main+0x8a>
 384:	3b 01       	movw	r6, r22
 386:	4c 01       	movw	r8, r24
 388:	a6 16       	cp	r10, r22
 38a:	b7 06       	cpc	r11, r23
 38c:	c8 06       	cpc	r12, r24
 38e:	d9 06       	cpc	r13, r25
 390:	10 f4       	brcc	.+4      	; 0x396 <main+0x98>
 392:	5b 01       	movw	r10, r22
 394:	6c 01       	movw	r12, r24
	      if(n>p[i])
	      n=p[i];
	      if (m<p[i])
	       m=p[i];
	      d=d+p[i];
 396:	e6 0e       	add	r14, r22
 398:	f7 1e       	adc	r15, r23
 39a:	08 1f       	adc	r16, r24
 39c:	19 1f       	adc	r17, r25
  {
    aa=sum;
	if(aa<=10)
	  {sum=15;
	   a=0;b=0;c=0;n=0x400000;m=0;
	   for (i=0;i<12;i++)
 39e:	53 94       	inc	r5
 3a0:	8c e0       	ldi	r24, 0x0C	; 12
 3a2:	58 16       	cp	r5, r24
 3a4:	41 f7       	brne	.-48     	; 0x376 <main+0x78>
	      n=p[i];
	      if (m<p[i])
	       m=p[i];
	      d=d+p[i];
	     }
	   d=(d-n-m)/10;
 3a6:	e6 18       	sub	r14, r6
 3a8:	f7 08       	sbc	r15, r7
 3aa:	08 09       	sbc	r16, r8
 3ac:	19 09       	sbc	r17, r9
 3ae:	ea 18       	sub	r14, r10
 3b0:	fb 08       	sbc	r15, r11
 3b2:	0c 09       	sbc	r16, r12
 3b4:	1d 09       	sbc	r17, r13
 3b6:	c8 01       	movw	r24, r16
 3b8:	b7 01       	movw	r22, r14
 3ba:	2a e0       	ldi	r18, 0x0A	; 10
 3bc:	30 e0       	ldi	r19, 0x00	; 0
 3be:	40 e0       	ldi	r20, 0x00	; 0
 3c0:	50 e0       	ldi	r21, 0x00	; 0
 3c2:	16 d0       	rcall	.+44     	; 0x3f0 <__udivmodsi4>
 3c4:	c9 01       	movw	r24, r18
 3c6:	da 01       	movw	r26, r20
	   a=d%256;
	   d=d>>8;
 3c8:	29 2f       	mov	r18, r25
 3ca:	3a 2f       	mov	r19, r26
 3cc:	4b 2f       	mov	r20, r27
 3ce:	55 27       	eor	r21, r21
	   b=d%256;
	   d=d>>8;
 3d0:	7d 01       	movw	r14, r26
 3d2:	00 27       	eor	r16, r16
 3d4:	11 27       	eor	r17, r17
}



void USART_Transmit( unsigned char data )
{PORTD|=(1<<PD2);   //485输出使能
 3d6:	92 9a       	sbi	0x12, 2	; 18
/* 等待发送缓冲器为空 */
while ( !( UCSRA & (1<<UDRE)) )
 3d8:	5d 9b       	sbis	0x0b, 5	; 11
 3da:	fe cf       	rjmp	.-4      	; 0x3d8 <main+0xda>
;
/* 将数据放入缓冲器,发送数据 */
UDR = data;
 3dc:	ec b8       	out	0x0c, r14	; 12
}



void USART_Transmit( unsigned char data )
{PORTD|=(1<<PD2);   //485输出使能
 3de:	92 9a       	sbi	0x12, 2	; 18
/* 等待发送缓冲器为空 */
while ( !( UCSRA & (1<<UDRE)) )
 3e0:	5d 9b       	sbis	0x0b, 5	; 11
 3e2:	fe cf       	rjmp	.-4      	; 0x3e0 <main+0xe2>
;
/* 将数据放入缓冲器,发送数据 */
UDR = data;
 3e4:	2c b9       	out	0x0c, r18	; 12
}



void USART_Transmit( unsigned char data )
{PORTD|=(1<<PD2);   //485输出使能
 3e6:	92 9a       	sbi	0x12, 2	; 18
/* 等待发送缓冲器为空 */
while ( !( UCSRA & (1<<UDRE)) )
 3e8:	5d 9b       	sbis	0x0b, 5	; 11
 3ea:	fe cf       	rjmp	.-4      	; 0x3e8 <main+0xea>
;
/* 将数据放入缓冲器,发送数据 */
UDR = data;
 3ec:	8c b9       	out	0x0c, r24	; 12
 3ee:	b3 cf       	rjmp	.-154    	; 0x356 <main+0x58>

000003f0 <__udivmodsi4>:
 3f0:	a1 e2       	ldi	r26, 0x21	; 33
 3f2:	1a 2e       	mov	r1, r26
 3f4:	aa 1b       	sub	r26, r26
 3f6:	bb 1b       	sub	r27, r27
 3f8:	fd 01       	movw	r30, r26
 3fa:	0d c0       	rjmp	.+26     	; 0x416 <__udivmodsi4_ep>

000003fc <__udivmodsi4_loop>:
 3fc:	aa 1f       	adc	r26, r26
 3fe:	bb 1f       	adc	r27, r27
 400:	ee 1f       	adc	r30, r30
 402:	ff 1f       	adc	r31, r31
 404:	a2 17       	cp	r26, r18
 406:	b3 07       	cpc	r27, r19
 408:	e4 07       	cpc	r30, r20
 40a:	f5 07       	cpc	r31, r21
 40c:	20 f0       	brcs	.+8      	; 0x416 <__udivmodsi4_ep>
 40e:	a2 1b       	sub	r26, r18
 410:	b3 0b       	sbc	r27, r19
 412:	e4 0b       	sbc	r30, r20
 414:	f5 0b       	sbc	r31, r21

00000416 <__udivmodsi4_ep>:
 416:	66 1f       	adc	r22, r22
 418:	77 1f       	adc	r23, r23
 41a:	88 1f       	adc	r24, r24
 41c:	99 1f       	adc	r25, r25
 41e:	1a 94       	dec	r1
 420:	69 f7       	brne	.-38     	; 0x3fc <__udivmodsi4_loop>
 422:	60 95       	com	r22
 424:	70 95       	com	r23
 426:	80 95       	com	r24
 428:	90 95       	com	r25
 42a:	9b 01       	movw	r18, r22
 42c:	ac 01       	movw	r20, r24
 42e:	bd 01       	movw	r22, r26
 430:	cf 01       	movw	r24, r30
 432:	08 95       	ret

00000434 <_exit>:
 434:	f8 94       	cli

00000436 <__stop_program>:
 436:	ff cf       	rjmp	.-2      	; 0x436 <__stop_program>

⌨️ 快捷键说明

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