📄 main.lss
字号:
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 + -