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

📄 target.txt

📁 uc/os在lpc2100系列的KEIL模板 uc/os在lpc2100系列的real view模板 uc/os在lpc210X系列的real view模板
💻 TXT
📖 第 1 页 / 共 2 页
字号:
000198  e3a0c002          MOV      r12,#2
00019c  e5c0c000          STRB     r12,[r0,#0]
;;;327    
;;;328    /* 设置串行口 */
;;;329      //  InitialiseUART0(115200);
;;;330    
;;;331    /* 设置实时时钟 */
;;;332        CCR = 1;
0001a0  e59f01e4          LDR      r0,|L1.908|
0001a4  e5c03008          STRB     r3,[r0,#8]
;;;333        PREINT = Fpclk / 32768 - 1;
0001a8  e3a03e15          MOV      r3,#0x150
0001ac  e1c038b0          STRH     r3,[r0,#0x80]
;;;334        PREFRAC = Fpclk - (Fpclk / 32768) * 32768;
0001b0  e3a03901          MOV      r3,#0x4000
0001b4  e1c038b4          STRH     r3,[r0,#0x84]
;;;335        YEAR = 2004;
0001b8  e59f31d0          LDR      r3,|L1.912|
0001bc  e1c033bc          STRH     r3,[r0,#0x3c]
;;;336        MONTH = 3;
0001c0  e5c01038          STRB     r1,[r0,#0x38]
;;;337        DOM = 25;
0001c4  e3a01019          MOV      r1,#0x19
0001c8  e5c0102c          STRB     r1,[r0,#0x2c]
;;;338        
;;;339    
;;;340        VICIntEnClr = 0xffffffff;
0001cc  e3e00000          MVN      r0,#0
0001d0  e5020fec          STR      r0,[r2,#-0xfec]
;;;341        VICVectAddr = 0;
0001d4  e5022fd0          STR      r2,[r2,#-0xfd0]
;;;342        VICIntSelect = 0;
0001d8  e5022ff4          STR      r2,[r2,#-0xff4]
;;;343        T0IR = 0xffffffff;
0001dc  e59f1194          LDR      r1,|L1.888|
0001e0  e5810000          STR      r0,[r1,#0]
;;;344        T0TCR = 0X02;
0001e4  e581c004          STR      r12,[r1,#4]
;;;345    }
0001e8  e49de004          POP      {lr}
0001ec  e12fff1e          BX       lr
;;;346    
                          ENDP

                  install_irq_pro PROC
;;;357    BOOLEAN install_irq_pro( uint8 pro,uint8 IntNumber, void *HandlerAddr )
;;;358    {
0001f0  e92d4010          PUSH     {r4,lr}
;;;359        uint32 *vect_addr;
;;;360        uint32 *vect_cntl;
;;;361          
;;;362        VICIntEnClr = 1 << IntNumber;	/* 禁止中断 */
0001f4  e3a03001          MOV      r3,#1
0001f8  e1a0c113          LSL      r12,r3,r1
0001fc  e3a0e000          MOV      lr,#0
000200  e50ecfec          STR      r12,[lr,#-0xfec]
;;;363        
;;;364    	vect_addr = (uint32 *)(VICVectAddr0+pro*4);
000204  e51e3f00          LDR      r3,[lr,#-0xf00]
000208  e0833100          ADD      r3,r3,r0,LSL #2
;;;365    	vect_cntl = (uint32 *)(VICVectCntl0+pro*4);
00020c  e51e4e00          LDR      r4,[lr,#-0xe00]
000210  e0840100          ADD      r0,r4,r0,LSL #2
;;;366    	if ( *vect_addr == (uint32)NULL )
000214  e5934000          LDR      r4,[r3,#0]
000218  e3540000          CMP      r4,#0
00021c  1a000006          BNE      |L1.572|
;;;367    	{
;;;368    	    *vect_addr = (uint32)HandlerAddr;	/* 设置中断向量 */
000220  e5832000          STR      r2,[r3,#0]
;;;369    	    *vect_cntl = (uint32)( VIC_IRQEN| IntNumber);
000224  e3811020          ORR      r1,r1,#0x20
000228  e5801000          STR      r1,[r0,#0]
;;;370    	    VICIntEnable = 1 << IntNumber;	/* 使能Interrupt */
00022c  e50ecff0          STR      r12,[lr,#-0xff0]
;;;371    	     return( TRUE );
000230  e3a00001          MOV      r0,#1
                  |L1.564|
000234  e8bd4010          POP      {r4,lr}
;;;372    	}
;;;373    	else return FALSE;
;;;374        
;;;375        
;;;376    }
000238  e12fff1e          BX       lr
                  |L1.572|
00023c  e3a00000          MOV      r0,#0                 ;373
000240  eafffffb          B        |L1.564|
;;;377    BOOLEAN install_irq( uint8 IntNumber, void *HandlerAddr )
                          ENDP

                  install_irq PROC
;;;378    {
000244  e92d4070          PUSH     {r4-r6,lr}
000248  e1a05000          MOV      r5,r0
00024c  e1a06001          MOV      r6,r1
;;;379    	uint8 i;
;;;380    	for ( i = 0; i < VIC_SIZE; i++ )
000250  e3a04000          MOV      r4,#0
                  |L1.596|
;;;381        {
;;;382    		if(install_irq_pro(i,IntNumber,HandlerAddr))return TRUE;
000254  e1a02006          MOV      r2,r6
000258  e1a01005          MOV      r1,r5
00025c  e1a00004          MOV      r0,r4
000260  ebfffffe          BL       install_irq_pro
000264  e3500000          CMP      r0,#0
000268  0a000002          BEQ      |L1.632|
00026c  e3a00001          MOV      r0,#1
                  |L1.624|
000270  e8bd4070          POP      {r4-r6,lr}
;;;383    	}
;;;384    	if ( i == VIC_SIZE )
;;;385        {
;;;386    		return( FALSE );		
;;;387        }
;;;388    	return TRUE;
;;;389    }
000274  e12fff1e          BX       lr
                  |L1.632|
000278  e2840001          ADD      r0,r4,#1              ;380
00027c  e20040ff          AND      r4,r0,#0xff           ;380
000280  e3540010          CMP      r4,#0x10              ;380
000284  3afffff2          BCC      |L1.596|
000288  e3540010          CMP      r4,#0x10              ;384
00028c  1a000001          BNE      |L1.664|
000290  e3a00000          MOV      r0,#0                 ;386
000294  eafffff5          B        |L1.624|
                  |L1.664|
000298  e3a00001          MOV      r0,#1                 ;388
00029c  eafffff3          B        |L1.624|
;;;390    
                          ENDP

                  uninstall_irq PROC
;;;400    BOOLEAN uninstall_irq( uint8 IntNumber )
;;;401    {
0002a0  e52de004          PUSH     {lr}
;;;402        uint8 i;
;;;403        uint32 *vect_addr;
;;;404        uint32 *vect_cntl;
;;;405          
;;;406        VICIntEnClr = 1 << IntNumber;
0002a4  e3a01001          MOV      r1,#1
0002a8  e1a01011          LSL      r1,r1,r0
0002ac  e3a03000          MOV      r3,#0
0002b0  e5031fec          STR      r1,[r3,#-0xfec]
;;;407        
;;;408        for ( i = 0; i < VIC_SIZE; i++ )
0002b4  e3a01000          MOV      r1,#0
                  |L1.696|
;;;409        {
;;;410    	/* 找到第一个未分配的VIC address  */
;;;411    	vect_addr = (uint32 *)(VICVectAddr0+i*4);
0002b8  e5132f00          LDR      r2,[r3,#-0xf00]
0002bc  e082c101          ADD      r12,r2,r1,LSL #2
;;;412    	vect_cntl = (uint32 *)(VICVectCntl0+i*4);
0002c0  e5132e00          LDR      r2,[r3,#-0xe00]
0002c4  e0822101          ADD      r2,r2,r1,LSL #2
;;;413    	if ( (*vect_cntl & ~VIC_IRQEN) == IntNumber )
0002c8  e592e000          LDR      lr,[r2,#0]
0002cc  e3cee020          BIC      lr,lr,#0x20
0002d0  e15e0000          CMP      lr,r0
0002d4  1a000004          BNE      |L1.748|
;;;414    	{
;;;415    	     *vect_addr = (uint32)NULL;	/* 清VIC地址 */
0002d8  e58c3000          STR      r3,[r12,#0]
;;;416    	    *vect_cntl &= ~VIC_IRQEN;	/*清使能位 */	
0002dc  e5920000          LDR      r0,[r2,#0]
0002e0  e3c00020          BIC      r0,r0,#0x20
0002e4  e5820000          STR      r0,[r2,#0]
;;;417    	    break;
0002e8  ea000003          B        |L1.764|
                  |L1.748|
0002ec  e2811001          ADD      r1,r1,#1              ;408
0002f0  e20110ff          AND      r1,r1,#0xff           ;408
0002f4  e3510010          CMP      r1,#0x10              ;408
0002f8  3affffee          BCC      |L1.696|
                  |L1.764|
;;;418    	}
;;;419        }
;;;420        if ( i == VIC_SIZE )
0002fc  e3510010          CMP      r1,#0x10
000300  1a000002          BNE      |L1.784|
;;;421        {
;;;422    	return( FALSE );		
000304  e3a00000          MOV      r0,#0
                  |L1.776|
000308  e49de004          POP      {lr}
;;;423        }
;;;424        return( TRUE );
;;;425    }
00030c  e12fff1e          BX       lr
                  |L1.784|
000310  e3a00001          MOV      r0,#1                 ;424
000314  eafffffb          B        |L1.776|
;;;426    /******************************************************************************
                          ENDP

                  uninstall_irq_pro PROC
;;;438        uint32 *vect_cntl;
;;;439         vect_addr = (uint32 *)(VICVectAddr0+pro*4);
000318  e3a03000          MOV      r3,#0
00031c  e5131f00          LDR      r1,[r3,#-0xf00]
000320  e0812100          ADD      r2,r1,r0,LSL #2
;;;440         vect_cntl = (uint32 *)(VICVectCntl0+pro*4); 
000324  e5131e00          LDR      r1,[r3,#-0xe00]
000328  e0811100          ADD      r1,r1,r0,LSL #2
;;;441    	if(pro==0)return FALSE;		//不允许卸载优先级为0的中断,因为是系统时钟服务 
00032c  e3500000          CMP      r0,#0
000330  1a000001          BNE      |L1.828|
000334  e3a00000          MOV      r0,#0
                  |L1.824|
;;;442         if(!(*vect_cntl & VIC_IRQEN))
;;;443         	{
;;;444        		VICIntEnClr = 1 << (*vect_cntl & ~VIC_IRQEN);
;;;445    		*vect_addr = (uint32)NULL;	/* 清VIC地址 */
;;;446    	       *vect_cntl &= ~VIC_IRQEN;	/*清使能位 */	
;;;447    	        return( TRUE );
;;;448         	}
;;;449        	else 
;;;450        {
;;;451    	return( FALSE );		
;;;452        }
;;;453    }
000338  e12fff1e          BX       lr
                  |L1.828|
00033c  e5910000          LDR      r0,[r1,#0]            ;442
000340  e3100020          TST      r0,#0x20              ;442
000344  1a000009          BNE      |L1.880|
000348  e3c00020          BIC      r0,r0,#0x20           ;444
00034c  e3a0c001          MOV      r12,#1                ;444
000350  e1a0001c          LSL      r0,r12,r0             ;444
000354  e5030fec          STR      r0,[r3,#-0xfec]       ;444
000358  e5823000          STR      r3,[r2,#0]            ;445
00035c  e5910000          LDR      r0,[r1,#0]            ;446
000360  e3c00020          BIC      r0,r0,#0x20           ;446
000364  e5810000          STR      r0,[r1,#0]            ;446
000368  e3a00001          MOV      r0,#1                 ;447
00036c  eafffff1          B        |L1.824|
                  |L1.880|
000370  e3a00000          MOV      r0,#0                 ;451
000374  eaffffef          B        |L1.824|
;;;454    
                          ENDP

                  |L1.888|
000378  e0004000          DCD      0xe0004000
                  |L1.892|
00037c  e002c000          DCD      0xe002c000
                  |L1.896|
000380  e000c000          DCD      0xe000c000
                  |L1.900|
000384  000a8c00          DCD      0x000a8c00
                  |L1.904|
000388  e01fc000          DCD      0xe01fc000
                  |L1.908|
00038c  e0024000          DCD      0xe0024000
                  |L1.912|
000390  000007d4          DCD      0x000007d4

⌨️ 快捷键说明

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