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

📄 eint.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]

; commandline [-errors .\err\eint.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
                          CODE32

                          AREA ||.text||, CODE, READONLY

                  Ch6_INTERRUPT_CONTROLLER PROC
;;;28     void Ch6_INTERRUPT_CONTROLLER(void)
;;;29     {
000000  e92d4010          STMFD    sp!,{r4,lr}
;;;30     	while(1)
000004  e1a00000          NOP      
                  |L1.8|
000008  e1a00000          NOP      
;;;31     	{
;;;32     		int i =0;
00000c  e3a04000          MOV      r4,#0
;;;33       
;;;34     		while(1)
000010  e1a00000          NOP      
                  |L1.20|
000014  e1a00000          NOP      
;;;35     		{	//display menu
;;;36     			Uart_Printf("%2d:%s  ",i,int_func[i][1]);
000018  e59f008c          LDR      r0,|L1.172|
00001c  e0800184          ADD      r0,r0,r4,LSL #3
000020  e1a01004          MOV      r1,r4
000024  e5902004          LDR      r2,[r0,#4]
000028  e28f0080          ADR      r0,|L1.176|
00002c  ebfffffe          BL       _printf
;;;37     			i++;
000030  e2844001          ADD      r4,r4,#1
;;;38     			if((int)(int_func[i][0])==0)
000034  e59f0070          LDR      r0,|L1.172|
000038  e7900184          LDR      r0,[r0,r4,LSL #3]
00003c  e3500000          CMP      r0,#0
000040  1a000002          BNE      |L1.80|
;;;39     			{
;;;40     				Uart_Printf("\n");
000044  e28f0070          ADR      r0,|L1.188|
000048  ebfffffe          BL       _printf
;;;41     				break;
00004c  ea000004          B        |L1.100|
;;;42     			}
;;;43     			if((i%4)==0)
                  |L1.80|
000050  e3140003          TST      r4,#3
000054  1a000001          BNE      |L1.96|
;;;44     			Uart_Printf("\n");
000058  e28f005c          ADR      r0,|L1.188|
00005c  ebfffffe          BL       _printf
;;;45     		}
                  |L1.96|
000060  eaffffeb          B        |L1.20|
;;;46     		
;;;47     		Uart_Printf("\nSelect (\"-1\" to exit) : ");
                  |L1.100|
000064  e28f0054          ADR      r0,|L1.192|
000068  ebfffffe          BL       _printf
;;;48     		i = Uart_GetIntNum();
00006c  ebfffffe          BL       Uart_GetIntNum
000070  e1a04000          MOV      r4,r0
;;;49     		Uart_Printf("\n");
000074  e28f0040          ADR      r0,|L1.188|
000078  ebfffffe          BL       _printf
;;;50     		if(i==-1) break;	 	
00007c  e3740001          CMN      r4,#1
000080  1a000000          BNE      |L1.136|
000084  ea000007          B        |L1.168|
;;;51     		if(i>=0 && (i<(sizeof(int_func)/8)) ) 
                  |L1.136|
000088  e3540000          CMP      r4,#0
00008c  ba000004          BLT      |L1.164|
000090  e3540004          CMP      r4,#4
000094  2a000002          BCS      |L1.164|
;;;52     		( (void (*)(void)) (int_func[i][0]) )();			
000098  e59f100c          LDR      r1,|L1.172|
00009c  e7910184          LDR      r0,[r1,r4,LSL #3]
0000a0  e12fff30          BLX      r0
;;;53     }
                  |L1.164|
0000a4  eaffffd7          B        |L1.8|
;;;54     }
                  |L1.168|
0000a8  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.172|
0000ac  00000000          DCD      int_func
                  |L1.176|
0000b0  3a643225          DCB      "%2d:"
0000b4  20207325          DCB      "%s  "
0000b8  00000000          DCB      "\0\0\0\0"
                  |L1.188|
0000bc  0000000a          DCB      "\n\0\0\0"
                  |L1.192|
0000c0  6c65530a          DCB      "\nSel"
0000c4  20746365          DCB      "ect "
0000c8  312d2228          DCB      "(\"-1"
0000cc  6f742022          DCB      "\" to"
0000d0  69786520          DCB      " exi"
0000d4  3a202974          DCB      "t) :"
0000d8  00000020          DCB      " \0\0\0"
                          ENDP

                  Eint0_1 PROC
;;;57     static void __irq Eint0_1(void)
;;;58     {
                  |L1.220|
0000dc  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;59     	if(rEINTPEND==(1<<0))
0000e0  e59f0090          LDR      r0,|L1.376|
0000e4  e5900038          LDR      r0,[r0,#0x38]
0000e8  e3500001          CMP      r0,#1
0000ec  1a000005          BNE      |L1.264|
;;;60     		{
;;;61     		Uart_Printf("EINT0 interrupt is occured\n");
0000f0  e28f0084          ADR      r0,|L1.380|
0000f4  ebfffffe          BL       _printf
;;;62     		rEINTPEND=(1<<0);
0000f8  e3a00001          MOV      r0,#1
0000fc  e59f1074          LDR      r1,|L1.376|
000100  e5810038          STR      r0,[r1,#0x38]
000104  ea000011          B        |L1.336|
;;;63     		}
;;;64     	else if(rEINTPEND==(1<<1))
                  |L1.264|
000108  e59f0068          LDR      r0,|L1.376|
00010c  e5900038          LDR      r0,[r0,#0x38]
000110  e3500002          CMP      r0,#2
000114  1a000005          BNE      |L1.304|
;;;65     		{
;;;66     		Uart_Printf("EINT1 interrupt is occured\n");
000118  e28f0078          ADR      r0,|L1.408|
00011c  ebfffffe          BL       _printf
;;;67     		rEINTPEND=(1<<1);
000120  e3a00002          MOV      r0,#2
000124  e59f104c          LDR      r1,|L1.376|
000128  e5810038          STR      r0,[r1,#0x38]
00012c  ea000007          B        |L1.336|
;;;68     		}
;;;69     	else
;;;70     		{
;;;71     		Uart_Printf("rEINTPEND=%x\n",rEINTPEND);
                  |L1.304|
000130  e59f0040          LDR      r0,|L1.376|
000134  e5900038          LDR      r0,[r0,#0x38]
000138  e1a01000          MOV      r1,r0
00013c  e28f0070          ADR      r0,|L1.436|
000140  ebfffffe          BL       _printf
;;;72     		rEINTPEND=((1<<0)|(1<<1));
000144  e3a00003          MOV      r0,#3
000148  e59f1028          LDR      r1,|L1.376|
00014c  e5810038          STR      r0,[r1,#0x38]
;;;73     		}
;;;74     	ClearPending(BIT_EINT0_2);
                  |L1.336|
000150  e3a00001          MOV      r0,#1
000154  e59f1068          LDR      r1,|L1.452|
000158  e5810000          STR      r0,[r1,#0]
00015c  e1c10000          BIC      r0,r1,r0
000160  e5900010          LDR      r0,[r0,#0x10]
000164  e5810010          STR      r0,[r1,#0x10]
000168  e1a00001          MOV      r0,r1
00016c  e5900010          LDR      r0,[r0,#0x10]
;;;75     }
000170  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
000174  e25ef004          SUBS     pc,lr,#4
                  |L1.376|
000178  44800000          DCD      0x44800000
                  |L1.380|
00017c  544e4945          DCB      "EINT"
000180  6e692030          DCB      "0 in"
000184  72726574          DCB      "terr"
000188  20747075          DCB      "upt "
00018c  6f207369          DCB      "is o"
000190  72756363          DCB      "ccur"
000194  000a6465          DCB      "ed\n\0"
                  |L1.408|
000198  544e4945          DCB      "EINT"
00019c  6e692031          DCB      "1 in"
0001a0  72726574          DCB      "terr"
0001a4  20747075          DCB      "upt "
0001a8  6f207369          DCB      "is o"
0001ac  72756363          DCB      "ccur"
0001b0  000a6465          DCB      "ed\n\0"
                  |L1.436|
0001b4  4e494572          DCB      "rEIN"
0001b8  4e455054          DCB      "TPEN"
0001bc  78253d44          DCB      "D=%x"
0001c0  0000000a          DCB      "\n\0\0\0"
                  |L1.452|
0001c4  40200000          DCD      0x40200000
                          ENDP

                  Eint9 PROC
;;;78     static void __irq Eint9(void)
;;;79     {
                  |L1.456|
0001c8  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;80     	if(rEINTPEND==(1<<9))
0001cc  e51f005c          LDR      r0,|L1.376|
0001d0  e5900038          LDR      r0,[r0,#0x38]
0001d4  e3500f80          CMP      r0,#0x200
0001d8  1a000005          BNE      |L1.500|
;;;81     		{
;;;82     		Uart_Printf("EINT9 interrupt is occured\n");
0001dc  e28f004c          ADR      r0,|L1.560|
0001e0  ebfffffe          BL       _printf
;;;83     		rEINTPEND=(1<<9);
0001e4  e3a00f80          MOV      r0,#0x200
0001e8  e51f1078          LDR      r1,|L1.376|
0001ec  e5810038          STR      r0,[r1,#0x38]
0001f0  ea000004          B        |L1.520|
;;;84     		}
;;;85     	else
;;;86     		{
;;;87     		Uart_Printf("rEINTPEND=%x\n",rEINTPEND);
                  |L1.500|
0001f4  e51f0084          LDR      r0,|L1.376|
0001f8  e5900038          LDR      r0,[r0,#0x38]
0001fc  e1a01000          MOV      r1,r0
000200  e24f0054          ADR      r0,|L1.436|
000204  ebfffffe          BL       _printf
;;;88     		}
;;;89     	ClearPending(BIT_EINT7_10);
                  |L1.520|
000208  e3a00004          MOV      r0,#4
00020c  e51f1050          LDR      r1,|L1.452|
000210  e5810000          STR      r0,[r1,#0]
000214  e1c10000          BIC      r0,r1,r0
000218  e5900010          LDR      r0,[r0,#0x10]
00021c  e5810010          STR      r0,[r1,#0x10]
000220  e1a00001          MOV      r0,r1
000224  e5900010          LDR      r0,[r0,#0x10]
;;;90     }
000228  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
00022c  e25ef004          SUBS     pc,lr,#4
                  |L1.560|
000230  544e4945          DCB      "EINT"
000234  6e692039          DCB      "9 in"
000238  72726574          DCB      "terr"
00023c  20747075          DCB      "upt "
000240  6f207369          DCB      "is o"
000244  72756363          DCB      "ccur"
000248  000a6465          DCB      "ed\n\0"
                          ENDP

                  Eint11 PROC
;;;92     static void __irq Eint11(void)
;;;93     {
                  |L1.588|
00024c  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;94     	if(rEINTPEND==(1<<11))
000250  e51f00e0          LDR      r0,|L1.376|
000254  e5900038          LDR      r0,[r0,#0x38]
000258  e3500e80          CMP      r0,#0x800
00025c  1a000005          BNE      |L1.632|
;;;95     		{
;;;96     		Uart_Printf("EINT11 interrupt is occured\n");
000260  e28f0058          ADR      r0,|L1.704|
000264  ebfffffe          BL       _printf
;;;97     		rEINTPEND=(1<<11);
000268  e3a00e80          MOV      r0,#0x800
00026c  e51f10fc          LDR      r1,|L1.376|
000270  e5810038          STR      r0,[r1,#0x38]
000274  ea000007          B        |L1.664|
;;;98     		}
;;;99     	else
;;;100    		{
;;;101    		Uart_Printf("rEINTPEND=%x\n",rEINTPEND);
                  |L1.632|
000278  e51f0108          LDR      r0,|L1.376|
00027c  e5900038          LDR      r0,[r0,#0x38]
000280  e1a01000          MOV      r1,r0
000284  e24f00d8          ADR      r0,|L1.436|
000288  ebfffffe          BL       _printf
;;;102    		rEINTPEND=(1<<11);
00028c  e3a00e80          MOV      r0,#0x800
000290  e51f1120          LDR      r1,|L1.376|
000294  e5810038          STR      r0,[r1,#0x38]
;;;103    		}
;;;104    	ClearPending(BIT_EINT11_14);
                  |L1.664|
000298  e3a00008          MOV      r0,#8
00029c  e51f10e0          LDR      r1,|L1.452|
0002a0  e5810000          STR      r0,[r1,#0]
0002a4  e1c10000          BIC      r0,r1,r0
0002a8  e5900010          LDR      r0,[r0,#0x10]
0002ac  e5810010          STR      r0,[r1,#0x10]
0002b0  e1a00001          MOV      r0,r1
0002b4  e5900010          LDR      r0,[r0,#0x10]
;;;105    }
0002b8  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
0002bc  e25ef004          SUBS     pc,lr,#4
                  |L1.704|
0002c0  544e4945          DCB      "EINT"
0002c4  69203131          DCB      "11 i"
0002c8  7265746e          DCB      "nter"
0002cc  74707572          DCB      "rupt"
0002d0  20736920          DCB      " is "
0002d4  7563636f          DCB      "occu"
0002d8  0a646572          DCB      "red\n"
0002dc  00000000          DCB      "\0\0\0\0"
                          ENDP

                  Test_Eint PROC
;;;108    void Test_Eint(void)
;;;109    {
0002e0  e92d4010          STMFD    sp!,{r4,lr}
;;;110    //    int i;
;;;111        char extintMode;
;;;112    
;;;113        Uart_Printf("External interrupt test is EINT0/1/9/11\n");
0002e4  e28f0fab          ADR      r0,|L1.1432|
0002e8  ebfffffe          BL       _printf
;;;114        Uart_Printf("1.L-evel   2.H-evel   3.F-edge   4.R-edge 5.B-edge\n");
0002ec  e28f0fb4          ADR      r0,|L1.1476|
0002f0  ebfffffe          BL       _printf
;;;115        Uart_Printf("Select the external interrupt type.\n");
0002f4  e28f0fbf          ADR      r0,|L1.1528|
0002f8  ebfffffe          BL       _printf
;;;116        extintMode=Uart_Getch();
0002fc  ebfffffe          BL       Uart_Getch
000300  e1a04000          MOV      r4,r0
;;;117        Uart_Printf("%c is selected\n",extintMode);
000304  e1a01004          MOV      r1,r4
000308  e28f0fc4          ADR      r0,|L1.1568|
00030c  ebfffffe          BL       _printf
;;;118    

⌨️ 快捷键说明

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