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

📄 main.lss

📁 atmel at91SAM7a3 ADC sample
💻 LSS
📖 第 1 页 / 共 5 页
字号:
  100326:	2101      	mov	r1, #1  100328:	e000      	b	10032c <main+0xf8>  10032a:	2101      	mov	r1, #1			(9<<AT91C_ADC_PRESCAL_SHIFT); /* set 10-bit res., prescale = 9    */
	
	while (1)  {                                     /* loop forever                */
		
		pADC->ADC_CR = AT91C_ADC_START;                /* start ADC0 conversion       */
  10032c:	4bac      	ldr	r3, [pc, #688]	(1005e0 <.text+0x5e0>)  10032e:	681a      	ldr	r2, [r3, #0]  100330:	2302      	mov	r3, #2  100332:	6013      	str	r3, [r2, #0]		//while ((pADC->ADC_SR & AT91C_ADC_EOC0) == 0);  /* wait for ADC0 conversion    */
		
		/* Read result of ADC conversion   */
		//AT91C_BASE_PWMC->PWMC_CH[4].PWMC_CDTYR = ((MCK * PERIOD_CH0) / (2 * PWM_PRESCALE)) * adval;

		if ( drawmenu ) {
  100334:	2900      	cmp	r1, #0  100336:	d01e      	beq	100376 <main+0x142>			iprintf("** Test Menu **\n");
  100338:	48aa      	ldr	r0, [pc, #680]	(1005e4 <.text+0x5e4>)  10033a:	fc43f000 	bl	100bc4 <iprintf>			iprintf("(1) Read ADC0\n");
  10033e:	48aa      	ldr	r0, [pc, #680]	(1005e8 <.text+0x5e8>)  100340:	fc40f000 	bl	100bc4 <iprintf>			iprintf("(2) Read ADC1\n");
  100344:	48a9      	ldr	r0, [pc, #676]	(1005ec <.text+0x5ec>)  100346:	fc3df000 	bl	100bc4 <iprintf>			iprintf("(3) Read ADC2\n");
  10034a:	48a9      	ldr	r0, [pc, #676]	(1005f0 <.text+0x5f0>)  10034c:	fc3af000 	bl	100bc4 <iprintf>			iprintf("(4) Read ADC3\n");
  100350:	48a8      	ldr	r0, [pc, #672]	(1005f4 <.text+0x5f4>)  100352:	fc37f000 	bl	100bc4 <iprintf>			iprintf("(5) Flash leds\n");
  100356:	48a8      	ldr	r0, [pc, #672]	(1005f8 <.text+0x5f8>)  100358:	fc34f000 	bl	100bc4 <iprintf>			iprintf("(6) ADC0->PWM4\n");
  10035c:	48a7      	ldr	r0, [pc, #668]	(1005fc <.text+0x5fc>)  10035e:	fc31f000 	bl	100bc4 <iprintf>			iprintf("(7) PWM4->75%%\n");
  100362:	48a7      	ldr	r0, [pc, #668]	(100600 <.text+0x600>)  100364:	fc2ef000 	bl	100bc4 <iprintf>			iprintf("(8) PWM4->25%%\n");
  100368:	48a6      	ldr	r0, [pc, #664]	(100604 <.text+0x604>)  10036a:	fc2bf000 	bl	100bc4 <iprintf>			iprintf("Select > ");
  10036e:	48a6      	ldr	r0, [pc, #664]	(100608 <.text+0x608>)  100370:	fc28f000 	bl	100bc4 <iprintf>  100374:	e002      	b	10037c <main+0x148>			drawmenu = 0;
		}
		else {
			iprintf("Select (0 shows menu) > ");
  100376:	48a5      	ldr	r0, [pc, #660]	(10060c <.text+0x60c>)  100378:	fc24f000 	bl	100bc4 <iprintf>		}
		fflush(stdout);
  10037c:	4ba4      	ldr	r3, [pc, #656]	(100610 <.text+0x610>)  10037e:	681b      	ldr	r3, [r3, #0]  100380:	6898      	ldr	r0, [r3, #8]  100382:	fa6ff000 	bl	100864 <fflush>		AT91F_DBGU_scanf("%i", &choice);
  100386:	48a3      	ldr	r0, [pc, #652]	(100614 <.text+0x614>)  100388:	1c39      	mov	r1, r7		(add r1, r7, #0)  10038a:	3108      	add	r1, #8  10038c:	f9b6f000 	bl	1006fc <AT91F_DBGU_scanf>		iprintf("Selected %i\n\r", choice);
  100390:	48a1      	ldr	r0, [pc, #644]	(100618 <.text+0x618>)  100392:	68b9      	ldr	r1, [r7, #8]  100394:	fc16f000 	bl	100bc4 <iprintf>
		switch (choice) {
  100398:	68bb      	ldr	r3, [r7, #8]  10039a:	2b08      	cmp	r3, #8  10039c:	d900      	bls	1003a0 <main+0x16c>  10039e:	e0f5      	b	10058c <main+0x358>  1003a0:	009b      	lsl	r3, r3, #2  1003a2:	4a9e      	ldr	r2, [pc, #632]	(10061c <.text+0x61c>)  1003a4:	589b      	ldr	r3, [r3, r2]  1003a6:	469f      	mov	pc, r3		case 0 :
			drawmenu = 1;
			break;
		case 1 :
			/* Output 0-1023 AD0 value without using floating-point */
			while ((pADC->ADC_SR & AT91C_ADC_EOC0) == 0);
  1003a8:	4b8d      	ldr	r3, [pc, #564]	(1005e0 <.text+0x5e0>)  1003aa:	681a      	ldr	r2, [r3, #0]  1003ac:	2101      	mov	r1, #1  1003ae:	69d3      	ldr	r3, [r2, #28]  1003b0:	420b      	tst	r3, r1  1003b2:	d0fc      	beq	1003ae <main+0x17a>			adval = (unsigned int) pADC->ADC_CDR0 & AT91C_ADC_DATA;
  1003b4:	6b15      	ldr	r5, [r2, #48]  1003b6:	4b9a      	ldr	r3, [pc, #616]	(100620 <.text+0x620>)  1003b8:	401d      	and	r5, r3			iprintf ("\n\rAD0 Output Value %4u = %01u.%04u Volts\n\r",
  1003ba:	4e9a      	ldr	r6, [pc, #616]	(100624 <.text+0x624>)  1003bc:	006b      	lsl	r3, r5, #1  1003be:	195b      	add	r3, r3, r5  1003c0:	0a9b      	lsr	r3, r3, #10  1003c2:	4698      	mov	r8, r3  1003c4:	4b98      	ldr	r3, [pc, #608]	(100628 <.text+0x628>)  1003c6:	1c28      	mov	r0, r5		(add r0, r5, #0)  1003c8:	4358      	mul	r0, r3  1003ca:	0a80      	lsr	r0, r0, #10  1003cc:	4997      	ldr	r1, [pc, #604]	(10062c <.text+0x62c>)  1003ce:	ffd7f003 	bl	104380 <__umodsi3>  1003d2:	1c03      	mov	r3, r0		(add r3, r0, #0)  1003d4:	1c30      	mov	r0, r6		(add r0, r6, #0)  1003d6:	1c29      	mov	r1, r5		(add r1, r5, #0)  1003d8:	4642      	mov	r2, r8  1003da:	fbf3f000 	bl	100bc4 <iprintf>  1003de:	2100      	mov	r1, #0  1003e0:	e7a4      	b	10032c <main+0xf8>			(unsigned) adval,
			(unsigned) (adval * VREF) >> 10,                          /* Output Integer Portion */
			(unsigned) ((adval * VREF * 10000UL) >> 10UL) % 10000);   /* Output Decimal Portion */
			break;
		case 2 :
			while ((pADC->ADC_SR & AT91C_ADC_EOC1) == 0);
  1003e2:	4b7f      	ldr	r3, [pc, #508]	(1005e0 <.text+0x5e0>)  1003e4:	681a      	ldr	r2, [r3, #0]  1003e6:	2102      	mov	r1, #2  1003e8:	69d3      	ldr	r3, [r2, #28]  1003ea:	420b      	tst	r3, r1  1003ec:	d0fc      	beq	1003e8 <main+0x1b4>			adval = (unsigned int) pADC->ADC_CDR1 & AT91C_ADC_DATA;
  1003ee:	6b55      	ldr	r5, [r2, #52]  1003f0:	4b8b      	ldr	r3, [pc, #556]	(100620 <.text+0x620>)  1003f2:	401d      	and	r5, r3			iprintf ("\n\rAD1 Output Value %4u = %01u.%04u Volts\n\r",
  1003f4:	4e8e      	ldr	r6, [pc, #568]	(100630 <.text+0x630>)  1003f6:	006b      	lsl	r3, r5, #1  1003f8:	195b      	add	r3, r3, r5  1003fa:	0a9b      	lsr	r3, r3, #10  1003fc:	4698      	mov	r8, r3  1003fe:	4b8a      	ldr	r3, [pc, #552]	(100628 <.text+0x628>)  100400:	1c28      	mov	r0, r5		(add r0, r5, #0)  100402:	4358      	mul	r0, r3  100404:	0a80      	lsr	r0, r0, #10  100406:	4989      	ldr	r1, [pc, #548]	(10062c <.text+0x62c>)  100408:	ffbaf003 	bl	104380 <__umodsi3>  10040c:	1c03      	mov	r3, r0		(add r3, r0, #0)  10040e:	1c30      	mov	r0, r6		(add r0, r6, #0)  100410:	1c29      	mov	r1, r5		(add r1, r5, #0)  100412:	4642      	mov	r2, r8  100414:	fbd6f000 	bl	100bc4 <iprintf>  100418:	2100      	mov	r1, #0  10041a:	e787      	b	10032c <main+0xf8>			(unsigned) adval,
			(unsigned) (adval * VREF) >> 10,                          /* Output Integer Portion */
			(unsigned) ((adval * VREF * 10000UL) >> 10UL) % 10000);   /* Output Decimal Portion */
			break;
		case 3 :
			while ((pADC->ADC_SR & AT91C_ADC_EOC2) == 0);
  10041c:	4b70      	ldr	r3, [pc, #448]	(1005e0 <.text+0x5e0>)  10041e:	681a      	ldr	r2, [r3, #0]  100420:	2104      	mov	r1, #4  100422:	69d3      	ldr	r3, [r2, #28]  100424:	420b      	tst	r3, r1  100426:	d0fc      	beq	100422 <main+0x1ee>			adval = (unsigned int) pADC->ADC_CDR2 & AT91C_ADC_DATA;
  100428:	6b95      	ldr	r5, [r2, #56]  10042a:	4b7d      	ldr	r3, [pc, #500]	(100620 <.text+0x620>)  10042c:	401d      	and	r5, r3			iprintf ("\n\rAD2 Output Value %4u = %01u.%04u Volts\n\r",
  10042e:	4e81      	ldr	r6, [pc, #516]	(100634 <.text+0x634>)  100430:	006b      	lsl	r3, r5, #1  100432:	195b      	add	r3, r3, r5  100434:	0a9b      	lsr	r3, r3, #10  100436:	4698      	mov	r8, r3  100438:	4b7b      	ldr	r3, [pc, #492]	(100628 <.text+0x628>)  10043a:	1c28      	mov	r0, r5		(add r0, r5, #0)  10043c:	4358      	mul	r0, r3  10043e:	0a80      	lsr	r0, r0, #10  100440:	497a      	ldr	r1, [pc, #488]	(10062c <.text+0x62c>)  100442:	ff9df003 	bl	104380 <__umodsi3>  100446:	1c03      	mov	r3, r0		(add r3, r0, #0)  100448:	1c30      	mov	r0, r6		(add r0, r6, #0)  10044a:	1c29      	mov	r1, r5		(add r1, r5, #0)  10044c:	4642      	mov	r2, r8  10044e:	fbb9f000 	bl	100bc4 <iprintf>  100452:	2100      	mov	r1, #0  100454:	e76a      	b	10032c <main+0xf8>			(unsigned) adval,
			(unsigned) (adval * VREF) >> 10,                          /* Output Integer Portion */
			(unsigned) ((adval * VREF * 10000UL) >> 10UL) % 10000);   /* Output Decimal Portion */
			break;
		case 4 :
			while ((pADC->ADC_SR & AT91C_ADC_EOC3) == 0);
  100456:	4b62      	ldr	r3, [pc, #392]	(1005e0 <.text+0x5e0>)  100458:	681a      	ldr	r2, [r3, #0]  10045a:	2108      	mov	r1, #8  10045c:	69d3      	ldr	r3, [r2, #28]  10045e:	420b      	tst	r3, r1  100460:	d0fc      	beq	10045c <main+0x228>			adval = (unsigned int) pADC->ADC_CDR3 & AT91C_ADC_DATA;
  100462:	6bd5      	ldr	r5, [r2, #60]  100464:	4b6e      	ldr	r3, [pc, #440]	(100620 <.text+0x620>)  100466:	401d      	and	r5, r3			iprintf ("\n\rAD3 Output Value %4u = %01u.%04u Volts\n\r",
  100468:	4e73      	ldr	r6, [pc, #460]	(100638 <.text+0x638>)  10046a:	006b      	lsl	r3, r5, #1  10046c:	195b      	add	r3, r3, r5  10046e:	0a9b      	lsr	r3, r3, #10  100470:	4698      	mov	r8, r3  100472:	4b6d      	ldr	r3, [pc, #436]	(100628 <.text+0x628>)  100474:	1c28      	mov	r0, r5		(add r0, r5, #0)  100476:	4358      	mul	r0, r3  100478:	0a80      	lsr	r0, r0, #10  10047a:	496c      	ldr	r1, [pc, #432]	(10062c <.text+0x62c>)  10047c:	ff80f003 	bl	104380 <__umodsi3>  100480:	1c03      	mov	r3, r0		(add r3, r0, #0)  100482:	1c30      	mov	r0, r6		(add r0, r6, #0)  100484:	1c29      	mov	r1, r5		(add r1, r5, #0)  100486:	4642      	mov	r2, r8  100488:	fb9cf000 	bl	100bc4 <iprintf>  10048c:	2100      	mov	r1, #0  10048e:	e74d      	b	10032c <main+0xf8>			(unsigned) adval,
			(unsigned) (adval * VREF) >> 10,                          /* Output Integer Portion */
			(unsigned) ((adval * VREF * 10000UL) >> 10UL) % 10000);   /* Output Decimal Portion */
			break;
  100490:	4d6a      	ldr	r5, [pc, #424]	(10063c <.text+0x63c>)  100492:	4a44      	ldr	r2, [pc, #272]	(1005a4 <.text+0x5a4>)  100494:	4690      	mov	r8, r2  100496:	4e6a      	ldr	r6, [pc, #424]	(100640 <.text+0x640>)		case 5 :
			// Once a Shot on each led		
			for ( int i=0 ; i < 3 ; i++ )
			{
				AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, led_mask[i]) ;
  100498:	cd08      	ldmia	r5!,{r3}  10049a:	603b      	str	r3, [r7, #0]__inline void AT91F_PIO_ClearOutput(
	AT91PS_PIO pPio,   // \arg  pointer to a PIO controller
	unsigned int flag) // \arg  output to be cleared
{
	pPio->PIO_CODR = flag;
  10049c:	4642      	mov	r2, r8  10049e:	6353      	str	r3, [r2, #52]				wait();
  1004a0:	feb6f7ff 	bl	100210 <wait>__inline void AT91F_PIO_SetOutput(
	AT91PS_PIO pPio,   // \arg  pointer to a PIO controller
	unsigned int flag) // \arg  output to be set
{
	pPio->PIO_SODR = flag;
  1004a4:	683b      	ldr	r3, [r7, #0]  1004a6:	4642      	mov	r2, r8  1004a8:	6313      	str	r3, [r2, #48]				AT91F_PIO_SetOutput( AT91C_BASE_PIOA, led_mask[i] ) ;
				wait();
  1004aa:	feb1f7ff 	bl	100210 <wait>  1004ae:	42b5      	cmp	r5, r6  1004b0:	d1f2      	bne	100498 <main+0x264>  1004b2:	3d04      	sub	r5, #4  1004b4:	4c3b      	ldr	r4, [pc, #236]	(1005a4 <.text+0x5a4>)  1004b6:	4e63      	ldr	r6, [pc, #396]	(100644 <.text+0x644>)			}// End for
			// Once a Shot on each led
			for ( int i=(3-1) ; i >= 0 ; i-- )
			{
				AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, led_mask[i]) ;
  1004b8:	682b      	ldr	r3, [r5, #0]  1004ba:	607b      	str	r3, [r7, #4]__inline void AT91F_PIO_ClearOutput(
	AT91PS_PIO pPio,   // \arg  pointer to a PIO controller
	unsigned int flag) // \arg  output to be cleared
{
	pPio->PIO_CODR = flag;
  1004bc:	6363      	str	r3, [r4, #52]				wait();
  1004be:	fea7f7ff 	bl	100210 <wait>__inline void AT91F_PIO_SetOutput(
	AT91PS_PIO pPio,   // \arg  pointer to a PIO controller
	unsigned int flag) // \arg  output to be set
{
	pPio->PIO_SODR = flag;
  1004c2:	687a      	ldr	r2, [r7, #4]  1004c4:	6322      	str	r2, [r4, #48]				AT91F_PIO_SetOutput( AT91C_BASE_PIOA, led_mask[i] ) ;
				wait();
  1004c6:	fea3f7ff 	bl	100210 <wait>  1004ca:	3d04      	sub	r5, #4  1004cc:	42b5      	cmp	r5, r6  1004ce:	d1f3      	bne	1004b8 <main+0x284>  1004d0:	2100      	mov	r1, #0  1004d2:	e72b      	b	10032c <main+0xf8>			}
			break;
		case 6 :
			adval = (unsigned int) pADC->ADC_CDR0 & AT91C_ADC_DATA;
  1004d4:	4b42      	ldr	r3, [pc, #264]	(1005e0 <.text+0x5e0>)  1004d6:	681b      	ldr	r3, [r3, #0]  1004d8:	6b1a      	ldr	r2, [r3, #48]  1004da:	4b51      	ldr	r3, [pc, #324]	(100620 <.text+0x620>)  1004dc:	1c16      	mov	r6, r2		(add r6, r2, #0)  1004de:	401e      	and	r6, r3			iprintf ("\n\rAD0 Output Value %4u = %01u.%04u Volts\n\r",
  1004e0:	4d50      	ldr	r5, [pc, #320]	(100624 <.text+0x624>)  1004e2:	0073      	lsl	r3, r6, #1  1004e4:	199b      	add	r3, r3, r6  1004e6:	0a9b      	lsr	r3, r3, #10  1004e8:	4698      	mov	r8, r3  1004ea:	4b4f      	ldr	r3, [pc, #316]	(100628 <.text+0x628>)  1004ec:	1c30      	mov	r0, r6		(add r0, r6, #0)  1004ee:	4358      	mul	r0, r3  1004f0:	0a80      	lsr	r0, r0, #10  1004f2:	494e      	ldr	r1, [pc, #312]	(10062c <.text+0x62c>)  1004f4:	ff44f003 	bl	104380 <__umodsi3>  1004f8:	1c03      	mov	r3, r0		(add r3, r0, #0)  1004fa:	1c28      	mov	r0, r5		(add r0, r5, #0)  1004fc:	1c31      	mov	r1, r6		(add r1, r6, #0)  1004fe:	4642      	mov	r2, r8  100500:	fb60f000 	bl	100bc4 <iprintf>__inline void AT91F_PWMC_StopChannel(
        AT91PS_PWMC pPWM,   // \arg  pointer to a PWM controller
        unsigned int flag) // \arg  Channels IDs to be enabled
{
	pPWM->PWMC_DIS = flag;
  100504:	2210      	mov	r2, #16  100506:	4b2a      	ldr	r3, [pc, #168]	(1005b0 <.text+0x5b0>)  100508:	609a      	str	r2, [r3, #8]  10050a:	1c19      	mov	r1, r3		(add r1, r3, #0)			(unsigned) adval,
			(unsigned) (adval * VREF) >> 10,                          /* Output Integer Portion */
			(unsigned) ((adval * VREF * 10000UL) >> 10UL) % 10000);   /* Output Decimal Portion */

⌨️ 快捷键说明

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