📄 main.lst
字号:
56 change_speed () ;
\ 00000002 ........ BL change_speed
57 for(waiting_time = 0; waiting_time < LedSpeed; waiting_time++) ;
\ 00000006 0020 MOVS R0,#+0
\ 00000008 00E0 B ??wait_0
\ ??wait_1:
\ 0000000A 401C ADDS R0,R0,#+1
\ ??wait_0:
\ 0000000C .... LDR R1,??DataTable1 ;; LedSpeed
\ 0000000E 0968 LDR R1,[R1, #+0]
\ 00000010 8842 CMP R0,R1
\ 00000012 FAD3 BCC ??wait_1
58 }//* End
\ 00000014 01BC POP {R0}
\ 00000016 0047 BX R0 ;; return
59
60 //*--------------------------------------------------------------------------------------
61 //* Function Name : Main
62 //* Object : Software entry point
63 //* Input Parameters : none.
64 //* Output Parameters : none.
65 //*--------------------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
66 int main()
67 {//* Begin
\ main:
\ 00000000 F0B5 PUSH {R4-R7,LR}
68 int i;
69 // First, enable the clock of the PIO
70 AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ) ;
\ 00000002 1448 LDR R0,??main_0 ;; 0xfffffc10
\ 00000004 0421 MOVS R1,#+4
\ 00000006 0160 STR R1,[R0, #+0]
71
72 // then, we configure the PIO Lines corresponding to LED1 to LED4
73 // to be outputs. No need to set these pins to be driven by the PIO because it is GPIO pins only.
74 AT91F_PIO_CfgOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;
\ 00000008 F020 MOVS R0,#+240
\ 0000000A C003 LSLS R0,R0,#+15 ;; #+7864320
\ 0000000C 1249 LDR R1,??main_0+0x4 ;; 0xfffff600
\ 0000000E 0860 STR R0,[R1, #+0]
\ 00000010 1249 LDR R1,??main_0+0x8 ;; 0xfffff610
\ 00000012 0860 STR R0,[R1, #+0]
\ 00000014 1249 LDR R1,??main_0+0xC ;; 0xfffff630
\ 00000016 0860 STR R0,[R1, #+0]
75
76 // Clear the LED's. On the EB55 we must apply a "1" to turn off LEDs
77 AT91F_PIO_SetOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;
78 // Clear the LED's. On the EB55 we must apply a "1" to turn off LEDs
79 AT91F_PIO_ClearOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;
\ 00000018 124C LDR R4,??main_0+0x10 ;; 0xfffff634
\ 0000001A 2060 STR R0,[R4, #+0]
\ 0000001C 124D LDR R5,??main_0+0x14 ;; led_mask
80
81 // Loop forever
82 for (;;)
83 {
84 // Once a Shot on each led
85 for ( i=0 ; i < AT91B_NB_LEB ; i++ )
\ ??main_1:
\ 0000001E 0026 MOVS R6,#+0
86 {
87 AT91F_PIO_ClearOutput( AT91D_BASE_PIO_LED, led_mask[i]) ;
\ ??main_2:
\ 00000020 B000 LSLS R0,R6,#+2
\ 00000022 2F58 LDR R7,[R5, R0]
\ 00000024 2760 STR R7,[R4, #+0]
88 wait();
\ 00000026 ........ BL wait
89 AT91F_PIO_SetOutput( AT91D_BASE_PIO_LED, led_mask[i] ) ;
\ 0000002A 0D48 LDR R0,??main_0+0xC ;; 0xfffff630
\ 0000002C 0760 STR R7,[R0, #+0]
90 wait();
\ 0000002E ........ BL wait
91 }// End for
\ 00000032 761C ADDS R6,R6,#+1
\ 00000034 042E CMP R6,#+4
\ 00000036 F3DB BLT ??main_2
92 // Once a Shot on each led
93 for ( i=(AT91B_NB_LEB-1) ; i >= 0 ; i-- )
\ 00000038 0326 MOVS R6,#+3
94 {
95 AT91F_PIO_ClearOutput( AT91D_BASE_PIO_LED, led_mask[i]) ;
\ ??main_3:
\ 0000003A B000 LSLS R0,R6,#+2
\ 0000003C 2F58 LDR R7,[R5, R0]
\ 0000003E 2760 STR R7,[R4, #+0]
96 wait();
\ 00000040 ........ BL wait
97 AT91F_PIO_SetOutput( AT91D_BASE_PIO_LED, led_mask[i] ) ;
\ 00000044 0648 LDR R0,??main_0+0xC ;; 0xfffff630
\ 00000046 0760 STR R7,[R0, #+0]
98 wait();
\ 00000048 ........ BL wait
99 }
\ 0000004C 761E SUBS R6,R6,#+1
\ 0000004E E6D4 BMI ??main_1
\ 00000050 F3E7 B ??main_3
\ 00000052 C046 Nop
\ ??main_0:
\ 00000054 10FCFFFF DC32 0xfffffc10
\ 00000058 00F6FFFF DC32 0xfffff600
\ 0000005C 10F6FFFF DC32 0xfffff610
\ 00000060 30F6FFFF DC32 0xfffff630
\ 00000064 34F6FFFF DC32 0xfffff634
\ 00000068 ........ DC32 led_mask
100 }// End for
101 }//* End
\ In segment CODE, align 4, keep-with-next
\ ??DataTable1:
\ 00000000 ........ DC32 LedSpeed
\ In segment DATA_ID, align 4, align-sorted
\ `?<Initializer for LedSpeed>`:
\ 00000000 00A00500 DC32 368640
Maximum stack usage in bytes:
Function CSTACK
-------- ------
change_speed 4
main 20
wait 4
Segment part sizes:
Function/Label Bytes
-------------- -----
LedSpeed 4
led_mask 16
change_speed 68
wait 24
main 108
??DataTable1 4
?<Initializer for LedSpeed> 4
Others 36
228 bytes in segment CODE
16 bytes in segment DATA_C
4 bytes in segment DATA_I
4 bytes in segment DATA_ID
12 bytes in segment INITTAB
204 bytes of CODE memory (+ 36 bytes shared)
20 bytes of CONST memory
4 bytes of DATA memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -