?? main.lst
字號(hào):
73 //*----------------------------------------------------------------------------
74 //__ramfunc void pio_c_irq_handler ( void )
\ In segment CODE, align 4, keep-with-next
75 void pio_c_irq_handler ( void )
76 {
\ pio_c_irq_handler:
\ 00000000 00B5 PUSH {LR}
77 int dummy;
78 dummy = 135;
79 AT91F_DBGU_Printk("-I- pio interrupt\n\r");
\ 00000002 0A48 LDR R0,??pio_c_irq_handler_0 ;; `?<Constant "-I- pio interrupt\\n\\r">`
\ 00000004 ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
80 //* Read the output state
81 if ( (AT91F_PIO_GetInput(AT91C_BASE_PIOB) & AT91B_LED2 ) == AT91B_LED2 )
\ 00000008 0948 LDR R0,??pio_c_irq_handler_0+0x4 ;; 0xfffff63c
\ 0000000A 0168 LDR R1,[R0, #+0]
\ 0000000C 8022 MOV R2,#+0x80
\ 0000000E 5203 LSL R2,R2,#+0xD ;; #+0x100000
\ 00000010 1142 TST R1,R2
\ 00000012 01D0 BEQ ??pio_c_irq_handler_1
82 {
83 AT91F_PIO_ClearOutput( AT91C_BASE_PIOB, AT91B_LED2);
\ 00000014 .... LDR R1,??DataTable3 ;; 0xfffff634
\ 00000016 00E0 B ??pio_c_irq_handler_2
84 }
85 else
86 {
87 AT91F_PIO_SetOutput( AT91C_BASE_PIOB, AT91B_LED2);
\ ??pio_c_irq_handler_1:
\ 00000018 .... LDR R1,??DataTable4 ;; 0xfffff630
\ ??pio_c_irq_handler_2:
\ 0000001A 0A60 STR R2,[R1, #+0]
88 }
89 //* enable the next PIO IRQ
90 dummy =AT91C_BASE_PIOB->PIO_ISR;
\ 0000001C 0549 LDR R1,??pio_c_irq_handler_0+0x8 ;; 0xfffff64c
\ 0000001E 0968 LDR R1,[R1, #+0]
91 //* suppress the compilation warning
92 dummy =dummy;
93 //* while SW3 is push wait
94 while ( (AT91F_PIO_GetInput(AT91D_BASE_PIO_SW) & AT91B_SW3 ) != AT91B_SW3 );
\ ??pio_c_irq_handler_3:
\ 00000020 0168 LDR R1,[R0, #+0]
\ 00000022 8900 LSL R1,R1,#+0x2
\ 00000024 FCD5 BPL ??pio_c_irq_handler_3
95 }
\ 00000026 01BC POP {R0}
\ 00000028 0047 BX R0 ;; return
\ 0000002A C046 NOP
\ ??pio_c_irq_handler_0:
\ 0000002C ........ DC32 `?<Constant "-I- pio interrupt\\n\\r">`
\ 00000030 3CF6FFFF DC32 0xfffff63c
\ 00000034 4CF6FFFF DC32 0xfffff64c
96
97 //*----------------------------------------------------------------------------
98 //* Function Name : delay
99 //* Object : Wait
100 //* Input Parameters : none
101 //* Output Parameters : none
102 //* Functions calAT91B_LED : none
103 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
104 void delay ( void )
105 {
\ delay:
\ 00000000 81B0 ADD SP,#-4
106 //* Set in Volatile for Optimisation
107 volatile unsigned int i ;
108 //* loop delay
109 for ( i = 0 ;(i < WAIT_TIME/100 );i++ ) ;
\ 00000002 0020 MOV R0,#+0
\ 00000004 0090 STR R0,[SP, #+0]
\ 00000006 0549 LDR R1,??delay_0 ;; 0x75524
\ 00000008 02E0 B ??delay_1
\ ??delay_2:
\ 0000000A 0098 LDR R0,[SP, #+0]
\ 0000000C 401C ADD R0,R0,#+0x1
\ 0000000E 0090 STR R0,[SP, #+0]
\ ??delay_1:
\ 00000010 0098 LDR R0,[SP, #+0]
\ 00000012 8842 CMP R0,R1
\ 00000014 F9D3 BCC ??delay_2
110 }
\ 00000016 08BC POP {R3}
\ 00000018 00B0 ADD SP,#+0
\ 0000001A 7047 BX LR ;; return
\ ??delay_0:
\ 0000001C 24550700 DC32 0x75524
111
112 //*----------------------------------------------------------------------------
113 //* Function Name : main
114 //* Object : Main interrupt function
115 //* Input Parameters : none
116 //* Output Parameters : TRUE
117 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
118 int main( void )
119 //* Begin
120 {
\ main:
\ 00000000 F0B5 PUSH {R4-R7,LR}
121 unsigned int loop_count ;
122 AT91PS_AIC pAic;
123 //* Load System pAic Base address
124 pAic = AT91C_BASE_AIC;
125 Init_DBGU();
\ 00000002 ........ _BLF Init_DBGU,Init_DBGU??rT
126
127 AT91F_DBGU_Printk("-I- AT91SAM7X256 interrupt_demo\n\r");
\ 00000006 2C48 LDR R0,??main_0 ;; `?<Constant "-I- AT91SAM7X256 inte...">`
\ 00000008 ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
128
129 //* Enable User Reset and set its minimal assertion to 960 us
130 AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (0x4<<8) | (unsigned int)(0xA5<<24);
\ 0000000C 2B48 LDR R0,??main_0+0x4 ;; 0xfffffd08
\ 0000000E 2C49 LDR R1,??main_0+0x8 ;; 0xa5000401
\ 00000010 0160 STR R1,[R0, #+0]
\ 00000012 0024 MOV R4,#+0
131
132 //* Init
133 loop_count = 0 ;
134 // First, enable the clock of the PIOB
135 AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOB ) ;
\ 00000014 0827 MOV R7,#+0x8
\ 00000016 2B48 LDR R0,??main_0+0xC ;; 0xfffffc10
\ 00000018 0760 STR R7,[R0, #+0]
136
137 //* then, we configure the PIO Lines corresponding to AT91B_LEDx
138 //* to be outputs. No need to set these pins to be driven by the PIO because it is GPIO pins only.
139 AT91F_PIO_CfgOutput( AT91C_BASE_PIOB, AT91B_LED_MASK ) ;
\ 0000001A 2B48 LDR R0,??main_0+0x10 ;; 0xfffff600
\ 0000001C F021 MOV R1,#+0xF0
\ 0000001E C903 LSL R1,R1,#+0xF ;; #+0x780000
\ 00000020 0160 STR R1,[R0, #+0]
\ 00000022 2A4A LDR R2,??main_0+0x14 ;; 0xfffff610
\ 00000024 1160 STR R1,[R2, #+0]
\ 00000026 .... LDR R2,??DataTable4 ;; 0xfffff630
\ 00000028 1160 STR R1,[R2, #+0]
140 //* Clear the AT91B_LED's. On the EK we must apply a "1" to turn off AT91B_LEDs
141 AT91F_PIO_SetOutput( AT91C_BASE_PIOB, AT91B_LED_MASK ) ;
142 //* Clear the AT91B_LED's. On the EK we must apply a "1" to turn off AT91B_LEDs
143
144
145 // open external PIO interrupt
146 AT91F_PIO_CfgInput(AT91C_BASE_PIOB, AT91B_SW3 | AT91B_SW4);
\ 0000002A C021 MOV R1,#+0xC0
\ 0000002C C905 LSL R1,R1,#+0x17 ;; #+0x60000000
\ 0000002E 284A LDR R2,??main_0+0x18 ;; 0xfffff614
\ 00000030 1160 STR R1,[R2, #+0]
\ 00000032 0160 STR R1,[R0, #+0]
147
148 AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_PIOB, PIO_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, pio_c_irq_handler);
\ 00000034 274D LDR R5,??main_0+0x1C ;; 0xfffff000
\ 00000036 2848 LDR R0,??main_0+0x20 ;; pio_c_irq_handler
\ 00000038 01B4 PUSH {R0}
\ 0000003A 0023 MOV R3,#+0
\ 0000003C 0622 MOV R2,#+0x6
\ 0000003E 0321 MOV R1,#+0x3
\ 00000040 281C MOV R0,R5
\ 00000042 ........ _BLF AT91F_AIC_ConfigureIt,AT91F_AIC_ConfigureIt??rT
149 AT91F_PIO_InterruptEnable(AT91C_BASE_PIOB,AT91B_SW4);
\ 00000046 2548 LDR R0,??main_0+0x24 ;; 0xfffff640
\ 00000048 F906 LSL R1,R7,#+0x1B
\ 0000004A 0160 STR R1,[R0, #+0]
150 // set the interrupt by software
151 AT91F_AIC_EnableIt (pAic, AT91C_ID_PIOB);
\ 0000004C 244E LDR R6,??main_0+0x28 ;; 0xfffff120
\ 0000004E 3760 STR R7,[R6, #+0]
152
153
154 // Open the software interrupt on the AIC
155 AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_SYS, SOFT_INTERRUPT_LEVEL, AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE, aic_software_interrupt);
\ 00000050 2448 LDR R0,??main_0+0x2C ;; aic_software_interrupt
\ 00000052 01B4 PUSH {R0}
\ 00000054 2023 MOV R3,#+0x20
\ 00000056 0222 MOV R2,#+0x2
\ 00000058 0121 MOV R1,#+0x1
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -