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

📄 irda.txt

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

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

                          AREA ||.text||, CODE, READONLY

                  Ch12_IrDA PROC
;;;104    void Ch12_IrDA(void)
;;;105    {
                  |L1.0|
000000  e92d4010          STMFD    sp!,{r4,lr}
;;;106    	while(1)
000004  e1a00000          NOP      
                  |L1.8|
000008  e1a00000          NOP      
;;;107    	{
;;;108    		int i = 0;
00000c  e3a04000          MOV      r4,#0
;;;109      
;;;110    		while(1)
000010  e1a00000          NOP      
                  |L1.20|
000014  e1a00000          NOP      
;;;111    		{	//display menu
;;;112    			Uart_Printf("%2d:%s",i,IrDA_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
;;;113    			i++;
000030  e2844001          ADD      r4,r4,#1
;;;114    			if((int)(IrDA_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|
;;;115    			{
;;;116    				Uart_Printf("\n");
000044  e28f006c          ADR      r0,|L1.184|
000048  ebfffffe          BL       _printf
;;;117    				break;
00004c  ea000004          B        |L1.100|
;;;118    			}
;;;119    			if((i%4)==0)
                  |L1.80|
000050  e3140003          TST      r4,#3
000054  1a000001          BNE      |L1.96|
;;;120    			Uart_Printf("\n");
000058  e28f0058          ADR      r0,|L1.184|
00005c  ebfffffe          BL       _printf
;;;121    		}
                  |L1.96|
000060  eaffffeb          B        |L1.20|
;;;122    		
;;;123    		Uart_Printf("\nSelect the function to test : ");
                  |L1.100|
000064  e28f0050          ADR      r0,|L1.188|
000068  ebfffffe          BL       _printf
;;;124    		i = Uart_GetIntNum();
00006c  ebfffffe          BL       Uart_GetIntNum
000070  e1a04000          MOV      r4,r0
;;;125    		Uart_Printf("\n");
000074  e28f003c          ADR      r0,|L1.184|
000078  ebfffffe          BL       _printf
;;;126    		if(i==-1) break;	 	
00007c  e3740001          CMN      r4,#1
000080  1a000000          BNE      |L1.136|
000084  ea000007          B        |L1.168|
;;;127    		if(i>=0 && (i<(sizeof(IrDA_func)/8)) ) 
                  |L1.136|
000088  e3540000          CMP      r4,#0
00008c  ba000004          BLT      |L1.164|
000090  e3540003          CMP      r4,#3
000094  2a000002          BCS      |L1.164|
;;;128    		( (void (*)(void)) (IrDA_func[i][0]) )();			
000098  e59f100c          LDR      r1,|L1.172|
00009c  e7910184          LDR      r0,[r1,r4,LSL #3]
0000a0  e12fff30          BLX      r0
;;;129    	}
                  |L1.164|
0000a4  eaffffd7          B        |L1.8|
;;;130    }
                  |L1.168|
0000a8  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.172|
0000ac  00000000          DCD      IrDA_func
                  |L1.176|
0000b0  3a643225          DCB      "%2d:"
0000b4  00007325          DCB      "%s\0\0"
                  |L1.184|
0000b8  0000000a          DCB      "\n\0\0\0"
                  |L1.188|
0000bc  6c65530a          DCB      "\nSel"
0000c0  20746365          DCB      "ect "
0000c4  20656874          DCB      "the "
0000c8  636e7566          DCB      "func"
0000cc  6e6f6974          DCB      "tion"
0000d0  206f7420          DCB      " to "
0000d4  74736574          DCB      "test"
0000d8  00203a20          DCB      " : \0"
                          ENDP

                  IrDA_Port_Return PROC
;;;171    void IrDA_Port_Return(void)
;;;172    {
0000dc  e59f00b4          LDR      r0,|L1.408|
;;;173        rGPCON_M=IrDA_rGPCON;
0000e0  e5900000          LDR      r0,[r0,#0]  ; IrDA_rGPCON
0000e4  e59f10b0          LDR      r1,|L1.412|
0000e8  e5810004          STR      r0,[r1,#4]
;;;174        rGPPU=IrDA_rGPUP;
0000ec  e59f00ac          LDR      r0,|L1.416|
0000f0  e5900000          LDR      r0,[r0,#0]  ; IrDA_rGPUP
0000f4  e5810010          STR      r0,[r1,#0x10]
;;;175    }
0000f8  e12fff1e          BX       lr
                          ENDP

                  __sub_Irda_Err_Int_Rx PROC
;;;383    void __sub_Irda_Err_Int_Rx()
;;;384    {
0000fc  e92d4008          STMFD    sp!,{r3,lr}
;;;385    	switch((rIrDA_LSR & 0x1c)>>2)//to clear and check the status of register bits
000100  e59f009c          LDR      r0,|L1.420|
000104  e5900014          LDR      r0,[r0,#0x14]
000108  e1a00d80          MOV      r0,r0,LSL #27
00010c  e1a00ea0          MOV      r0,r0,LSR #29
000110  e3500007          CMP      r0,#7
000114  908ff100          ADDLS    pc,pc,r0,LSL #2
000118  ea00001c          B        |L1.400|
00011c  ea00001b          B        |L1.400|
000120  ea000005          B        |L1.316|
000124  ea000007          B        |L1.328|
000128  ea000009          B        |L1.340|
00012c  ea00000b          B        |L1.352|
000130  ea00000d          B        |L1.364|
000134  ea00000f          B        |L1.376|
000138  ea000011          B        |L1.388|
;;;386    	{
;;;387    		case 1:
;;;388    			Uart_Printf("CRC error\n");
                  |L1.316|
00013c  e28f0064          ADR      r0,|L1.424|
000140  ebfffffe          BL       _printf
;;;389    			break;
000144  ea000012          B        |L1.404|
;;;390    		case 2:
;;;391    			Uart_Printf("Phy error\n");
                  |L1.328|
000148  e28f0064          ADR      r0,|L1.436|
00014c  ebfffffe          BL       _printf
;;;392    			break;
000150  ea00000f          B        |L1.404|
;;;393    		case 3:
;;;394    			Uart_Printf("CRC and Phy error\n");
                  |L1.340|
000154  e28f0064          ADR      r0,|L1.448|
000158  ebfffffe          BL       _printf
;;;395    			break;
00015c  ea00000c          B        |L1.404|
;;;396    		case 4:
;;;397    			Uart_Printf("Frame Length error\n");
                  |L1.352|
000160  e28f006c          ADR      r0,|L1.468|
000164  ebfffffe          BL       _printf
;;;398    			break;
000168  ea000009          B        |L1.404|
;;;399    		case 5:
;;;400    			Uart_Printf("CRC and Frame Length error\n");
                  |L1.364|
00016c  e28f0074          ADR      r0,|L1.488|
000170  ebfffffe          BL       _printf
;;;401    			break;
000174  ea000006          B        |L1.404|
;;;402    		case 6:
;;;403    			Uart_Printf("Phy and Frame Length error\n");
                  |L1.376|
000178  e28f0084          ADR      r0,|L1.516|
00017c  ebfffffe          BL       _printf
;;;404    			break;
000180  ea000003          B        |L1.404|
;;;405    		case 7:
;;;406    			Uart_Printf("CRC, Phy and Frame Length error\n");
                  |L1.388|
000184  e28f0094          ADR      r0,|L1.544|
000188  ebfffffe          BL       _printf
;;;407    			break;
00018c  ea000000          B        |L1.404|
;;;408    		default :
;;;409    			break;
                  |L1.400|
000190  e1a00000          NOP      
;;;410    	}
;;;411    }
                  |L1.404|
000194  e8bd8008          LDMFD    sp!,{r3,pc}
                  |L1.408|
000198  0000001c          DCD      ||.bss$2|| + 28
                  |L1.412|
00019c  44800000          DCD      0x44800000
                  |L1.416|
0001a0  00000020          DCD      ||.bss$2|| + 32
                  |L1.420|
0001a4  41800000          DCD      0x41800000
                  |L1.424|
0001a8  20435243          DCB      "CRC "
0001ac  6f727265          DCB      "erro"
0001b0  00000a72          DCB      "r\n\0\0"
                  |L1.436|
0001b4  20796850          DCB      "Phy "
0001b8  6f727265          DCB      "erro"
0001bc  00000a72          DCB      "r\n\0\0"
                  |L1.448|
0001c0  20435243          DCB      "CRC "
0001c4  20646e61          DCB      "and "
0001c8  20796850          DCB      "Phy "
0001cc  6f727265          DCB      "erro"
0001d0  00000a72          DCB      "r\n\0\0"
                  |L1.468|
0001d4  6d617246          DCB      "Fram"
0001d8  654c2065          DCB      "e Le"
0001dc  6874676e          DCB      "ngth"
0001e0  72726520          DCB      " err"
0001e4  000a726f          DCB      "or\n\0"
                  |L1.488|
0001e8  20435243          DCB      "CRC "
0001ec  20646e61          DCB      "and "
0001f0  6d617246          DCB      "Fram"
0001f4  654c2065          DCB      "e Le"
0001f8  6874676e          DCB      "ngth"
0001fc  72726520          DCB      " err"
000200  000a726f          DCB      "or\n\0"
                  |L1.516|
000204  20796850          DCB      "Phy "
000208  20646e61          DCB      "and "
00020c  6d617246          DCB      "Fram"
000210  654c2065          DCB      "e Le"
000214  6874676e          DCB      "ngth"
000218  72726520          DCB      " err"
00021c  000a726f          DCB      "or\n\0"
                  |L1.544|
000220  2c435243          DCB      "CRC,"
000224  79685020          DCB      " Phy"
000228  646e6120          DCB      " and"
00022c  61724620          DCB      " Fra"
000230  4c20656d          DCB      "me L"
000234  74676e65          DCB      "engt"
000238  72652068          DCB      "h er"
00023c  0a726f72          DCB      "ror\n"
000240  00000000          DCB      "\0\0\0\0"
                          ENDP

                  Irda_Int_Rx PROC
;;;256    void __irq Irda_Int_Rx(void)
;;;257    {
000244  e92d503f          STMFD    sp!,{r0-r5,r12,lr}
;;;258    	U8 status=0;
000248  e3a04000          MOV      r4,#0
;;;259    	U8 i;
;;;260    	U8 RxCount=0;
00024c  e3a05000          MOV      r5,#0
;;;261    
;;;262    	// masking
;;;263    	rINTSUBMSK |= BIT_SUB_IrDA;
000250  e59f01a4          LDR      r0,|L1.1020|
000254  e590001c          LDR      r0,[r0,#0x1c]
000258  e3800040          ORR      r0,r0,#0x40
00025c  e59f1198          LDR      r1,|L1.1020|
000260  e581001c          STR      r0,[r1,#0x1c]
;;;264    	rINTMSK    |= BIT_IrDA_MSTICK;
000264  e1a00001          MOV      r0,r1
000268  e5900008          LDR      r0,[r0,#8]
00026c  e3800540          ORR      r0,r0,#0x10000000
000270  e5810008          STR      r0,[r1,#8]
;;;265    	
;;;266    
;;;267    	// clear pending bit
;;;268    	status = (U8)rIrDA_IIR; // Sub-sub pending clear
000274  e2810758          ADD      r0,r1,#0x1600000
000278  e5900010          LDR      r0,[r0,#0x10]
00027c  e20040ff          AND      r4,r0,#0xff
;;;269    
;;;270    	rSUBSRCPND = BIT_SUB_IrDA;
000280  e3a00040          MOV      r0,#0x40
000284  e1c11000          BIC      r1,r1,r0
000288  e5810018          STR      r0,[r1,#0x18]
;;;271    	ClearPending(BIT_IrDA_MSTICK);
00028c  e3a00540          MOV      r0,#0x10000000
000290  e1c11000          BIC      r1,r1,r0
000294  e5810000          STR      r0,[r1,#0]
000298  e1c10000          BIC      r0,r1,r0
00029c  e5900010          LDR      r0,[r0,#0x10]
0002a0  e5810010          STR      r0,[r1,#0x10]
0002a4  e1a00001          MOV      r0,r1
0002a8  e5900010          LDR      r0,[r0,#0x10]
;;;272    
;;;273    //	Uart_Printf("rIrDA_IIR=%x\n",status);	
;;;274    	
;;;275    	if(status & 0x40) { // RX error indication

⌨️ 快捷键说明

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