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

📄 irda.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;738    			while (bTail != bHead)
000bec  e1a00000          NOP      
                  |L1.3056|
000bf0  e59f0068          LDR      r0,|L1.3168|
000bf4  e5900000          LDR      r0,[r0,#0]  ; bTail
000bf8  e51f117c          LDR      r1,|L1.2692|
000bfc  e5911000          LDR      r1,[r1,#0]  ; bHead
000c00  e1500001          CMP      r0,r1
000c04  0a000007          BEQ      |L1.3112|
;;;739    				Uart_Printf("[D:%3d] ",*bTail++);
000c08  e59f0050          LDR      r0,|L1.3168|
000c0c  e5902000          LDR      r2,[r0,#0]  ; bTail
000c10  e4d21001          LDRB     r1,[r2],#1
000c14  e59f3044          LDR      r3,|L1.3168|
000c18  e24f0fc4          ADR      r0,|L1.2320|
000c1c  e5832000          STR      r2,[r3,#0]  ; bTail
000c20  ebfffffe          BL       _printf
000c24  eafffff1          B        |L1.3056|
;;;740    			IrDA_DONE=1;
                  |L1.3112|
000c28  e3a00001          MOV      r0,#1
000c2c  e51f1828          LDR      r1,|L1.1036|
000c30  e5810000          STR      r0,[r1,#0]  ; IrDA_DONE
;;;741    			Uart_Printf(".\n");
000c34  e28f0050          ADR      r0,|L1.3212|
000c38  ebfffffe          BL       _printf
;;;742    		}
;;;743    		if (Uart_GetKey() == '\r') break;
                  |L1.3132|
000c3c  ebfffffe          BL       Uart_GetKey
000c40  e350000d          CMP      r0,#0xd
000c44  1a000000          BNE      |L1.3148|
000c48  ea000000          B        |L1.3152|
;;;744    	}
                  |L1.3148|
000c4c  eaffffd4          B        |L1.2980|
;;;745    
;;;746    	rDMASKTRIG0 = 0; 	// Run, DMA3 channel on, no-sw trigger 
                  |L1.3152|
000c50  e3a00000          MOV      r0,#0
000c54  e51f11e0          LDR      r1,|L1.2684|
000c58  e5810020          STR      r0,[r1,#0x20]
;;;747    }
000c5c  e8bd87fc          LDMFD    sp!,{r2-r10,pc}
                  |L1.3168|
000c60  00000048          DCD      ||.bss$2|| + 72
                  |L1.3172|
000c64  00000000          DCD      Irda_Dma_Done
                  |L1.3176|
000c68  303a445b          DCB      "[D:0"
000c6c  5d782578          DCB      "x%x]"
000c70  00000020          DCB      " \0\0\0"
                  |L1.3188|
000c74  303a485b          DCB      "[H:0"
000c78  5d782578          DCB      "x%x]"
000c7c  00000020          DCB      " \0\0\0"
                  |L1.3200|
000c80  303a545b          DCB      "[T:0"
000c84  5d782578          DCB      "x%x]"
000c88  0000000a          DCB      "\n\0\0\0"
                  |L1.3212|
000c8c  00000a2e          DCB      ".\n\0\0"
                          ENDP

                  IrDA_Port_Init PROC
;;;162    void IrDA_Port_Init(void)
;;;163    {
000c90  e92d4008          STMFD    sp!,{r3,lr}
;;;164        IrDA_rGPCON=rGPCON_U;
000c94  e51f0b00          LDR      r0,|L1.412|
000c98  e5900000          LDR      r0,[r0,#0]
000c9c  e51f1b0c          LDR      r1,|L1.408|
000ca0  e5810000          STR      r0,[r1,#0]  ; IrDA_rGPCON
;;;165        IrDA_rGPUP=rGPPU;
000ca4  e51f0b10          LDR      r0,|L1.412|
000ca8  e5900010          LDR      r0,[r0,#0x10]
000cac  e51f1b14          LDR      r1,|L1.416|
000cb0  e5810000          STR      r0,[r1,#0]  ; IrDA_rGPUP
;;;166        rGPCON_U |= (3<<24)|(3<<22)|(3<<20); // Set IrDA_TXD, IrDA_RXD, IrDA_SDBW
000cb4  e51f0b20          LDR      r0,|L1.412|
000cb8  e5900000          LDR      r0,[r0,#0]
000cbc  e38007fc          ORR      r0,r0,#0x3f00000
000cc0  e51f1b2c          LDR      r1,|L1.412|
000cc4  e5810000          STR      r0,[r1,#0]
;;;167        rGPPU |= (7<<29); // Disable IrDA pullup
000cc8  e1a00001          MOV      r0,r1
000ccc  e5900010          LDR      r0,[r0,#0x10]
000cd0  e38004e0          ORR      r0,r0,#0xe0000000
000cd4  e5810010          STR      r0,[r1,#0x10]
;;;168        Uart_Printf("IrDA Initialize is done!!!\n");
000cd8  e28f0004          ADR      r0,|L1.3300|
000cdc  ebfffffe          BL       _printf
;;;169    }
000ce0  e8bd8008          LDMFD    sp!,{r3,pc}
                  |L1.3300|
000ce4  41447249          DCB      "IrDA"
000ce8  696e4920          DCB      " Ini"
000cec  6c616974          DCB      "tial"
000cf0  20657a69          DCB      "ize "
000cf4  64207369          DCB      "is d"
000cf8  21656e6f          DCB      "one!"
000cfc  000a2121          DCB      "!!\n\0"
                          ENDP

                  Test_IrDA_Fifo_Rx PROC
;;;132    void Test_IrDA_Fifo_Rx(void)
;;;133    {
000d00  e92d4008          STMFD    sp!,{r3,lr}
;;;134    	IrDA_Port_Init();
000d04  ebfffffe          BL       IrDA_Port_Init
;;;135    
;;;136    	Uart_Printf("IrDA Interrupt Rx Test\n");
000d08  e28f0058          ADR      r0,|L1.3432|
000d0c  ebfffffe          BL       _printf
;;;137    	Uart_Printf("Select control mode : 1. Interrupt(D)    2. DMA\n");
000d10  e28f0068          ADR      r0,|L1.3456|
000d14  ebfffffe          BL       _printf
;;;138    
;;;139    	if (Uart_Getch() == '2')
000d18  ebfffffe          BL       Uart_Getch
000d1c  e3500032          CMP      r0,#0x32
000d20  1a000007          BNE      |L1.3396|
;;;140    		Test_Irda_Fifo_Dma_Rx(MODE_VALUE, PREAMBLE_VALUE, STARTFLAG_VALUE, RXFL_VALUE, RXTR_VALUE);
000d24  e3a03001          MOV      r3,#1
000d28  e58d3000          STR      r3,[sp,#0]
000d2c  e3a03d40          MOV      r3,#0x1000
000d30  e3a02004          MOV      r2,#4
000d34  e3a01000          MOV      r1,#0
000d38  e3a00004          MOV      r0,#4
000d3c  ebfffffe          BL       Test_Irda_Fifo_Dma_Rx
000d40  ea000006          B        |L1.3424|
;;;141    	else
;;;142    		Test_Irda_Fifo_Int_Rx(MODE_VALUE, PREAMBLE_VALUE, STARTFLAG_VALUE, RXFL_VALUE, RXTR_VALUE);
                  |L1.3396|
000d44  e3a03001          MOV      r3,#1
000d48  e58d3000          STR      r3,[sp,#0]
000d4c  e3a03d40          MOV      r3,#0x1000
000d50  e3a02004          MOV      r2,#4
000d54  e3a01000          MOV      r1,#0
000d58  e3a00004          MOV      r0,#4
000d5c  ebfffffe          BL       Test_Irda_Fifo_Int_Rx
;;;143    
;;;144    	IrDA_Port_Return();
                  |L1.3424|
000d60  ebfffffe          BL       IrDA_Port_Return
;;;145    }
000d64  e8bd8008          LDMFD    sp!,{r3,pc}
                  |L1.3432|
000d68  41447249          DCB      "IrDA"
000d6c  746e4920          DCB      " Int"
000d70  75727265          DCB      "erru"
000d74  52207470          DCB      "pt R"
000d78  65542078          DCB      "x Te"
000d7c  000a7473          DCB      "st\n\0"
                  |L1.3456|
000d80  656c6553          DCB      "Sele"
000d84  63207463          DCB      "ct c"
000d88  72746e6f          DCB      "ontr"
000d8c  6d206c6f          DCB      "ol m"
000d90  2065646f          DCB      "ode "
000d94  2e31203a          DCB      ": 1."
000d98  746e4920          DCB      " Int"
000d9c  75727265          DCB      "erru"
000da0  44287470          DCB      "pt(D"
000da4  20202029          DCB      ")   "
000da8  202e3220          DCB      " 2. "
000dac  0a414d44          DCB      "DMA\n"
000db0  00000000          DCB      "\0\0\0\0"
                          ENDP

                  Irda_Int_Tx PROC
;;;541    void __irq Irda_Int_Tx()
;;;542    {
000db4  e92d503f          STMFD    sp!,{r0-r5,r12,lr}
;;;543    	U8 status=0;
000db8  e3a05000          MOV      r5,#0
;;;544    	U8 i =0;
000dbc  e3a04000          MOV      r4,#0
;;;545    	
;;;546    	// Mast interrupt Pending bit of IrDA
;;;547    	rINTSUBMSK |= BIT_SUB_IrDA;		// Mask IrDA sub-pending bit
000dc0  e51f09cc          LDR      r0,|L1.1020|
000dc4  e590001c          LDR      r0,[r0,#0x1c]
000dc8  e3800040          ORR      r0,r0,#0x40
000dcc  e51f19d8          LDR      r1,|L1.1020|
000dd0  e581001c          STR      r0,[r1,#0x1c]
;;;548    	rINTMSK    |= BIT_IrDA_MSTICK;	// Mask IrDA pending bit
000dd4  e1a00001          MOV      r0,r1
000dd8  e5900008          LDR      r0,[r0,#8]
000ddc  e3800540          ORR      r0,r0,#0x10000000
000de0  e5810008          STR      r0,[r1,#8]
;;;549    
;;;550    	// Clear interrupt pending bit of IrDA
;;;551    	rSUBSRCPND = BIT_SUB_IrDA;
000de4  e3a00040          MOV      r0,#0x40
000de8  e1c11000          BIC      r1,r1,r0
000dec  e5810018          STR      r0,[r1,#0x18]
;;;552    	ClearPending(BIT_IrDA_MSTICK);
000df0  e3a00540          MOV      r0,#0x10000000
000df4  e1c11000          BIC      r1,r1,r0
000df8  e5810000          STR      r0,[r1,#0]
000dfc  e1c10000          BIC      r0,r1,r0
000e00  e5900010          LDR      r0,[r0,#0x10]
000e04  e5810010          STR      r0,[r1,#0x10]
000e08  e1a00001          MOV      r0,r1
000e0c  e5900010          LDR      r0,[r0,#0x10]
;;;553    
;;;554    	status = (U8)rIrDA_IIR;			// Read IIR(Interrupt Identification Register) of IrDA
000e10  e2810758          ADD      r0,r1,#0x1600000
000e14  e5900010          LDR      r0,[r0,#0x10]
000e18  e20050ff          AND      r5,r0,#0xff
;;;555    	//Uart_Printf("IrDA IIR:0x%x\n", status);
;;;556    
;;;557    	if(status & 0x2) // TX Trigger
000e1c  e3150002          TST      r5,#2
000e20  0a00002b          BEQ      |L1.3796|
;;;558    	{
;;;559    		for (i=0;i<16;i++)
000e24  e3a04000          MOV      r4,#0
                  |L1.3624|
000e28  e3540010          CMP      r4,#0x10
000e2c  2a000014          BCS      |L1.3716|
000e30  ea000002          B        |L1.3648|
                  |L1.3636|
000e34  e2840001          ADD      r0,r4,#1
000e38  e20040ff          AND      r4,r0,#0xff
000e3c  eafffff9          B        |L1.3624|
;;;560    			{
;;;561    			rIrDA_RBR = cData;
                  |L1.3648|
000e40  e59f0148          LDR      r0,|L1.3984|
000e44  e5d00000          LDRB     r0,[r0,#0]  ; cData
000e48  e51f1cac          LDR      r1,|L1.420|
000e4c  e5810020          STR      r0,[r1,#0x20]
;;;562    			*IrDA_CKBUFFER++ = cData++;
000e50  e59f0138          LDR      r0,|L1.3984|
000e54  e5d00000          LDRB     r0,[r0,#0]  ; cData
000e58  e2801001          ADD      r1,r0,#1
000e5c  e59f012c          LDR      r0,|L1.3984|
000e60  e5d02000          LDRB     r2,[r0,#0]  ; cData
000e64  e5c01000          STRB     r1,[r0,#0]  ; cData
000e68  e51f0580          LDR      r0,|L1.2288|
000e6c  e5900000          LDR      r0,[r0,#0]  ; IrDA_CKBUFFER
000e70  e5c02000          STRB     r2,[r0,#0]
000e74  e2800001          ADD      r0,r0,#1
000e78  e51f1590          LDR      r1,|L1.2288|
000e7c  e5810000          STR      r0,[r1,#0]  ; IrDA_CKBUFFER
;;;563    			}
000e80  eaffffeb          B        |L1.3636|
;;;564    	
;;;565    		IrDA_TxCnt += IrDA_TxBUFLEN;
                  |L1.3716|
000e84  e59f0108          LDR      r0,|L1.3988|
000e88  e5900000          LDR      r0,[r0,#0]  ; IrDA_TxCnt
000e8c  e2800010          ADD      r0,r0,#0x10
000e90  e59f10fc          LDR      r1,|L1.3988|
000e94  e5810000          STR      r0,[r1,#0]  ; IrDA_TxCnt
;;;566    		//IrDA_TxCnt +=IrDA_TxNum;
;;;567    		if (IrDA_TxNum <= IrDA_TxCnt) {
000e98  e59f00f8          LDR      r0,|L1.3992|
000e9c  e5900000          LDR      r0,[r0,#0]  ; IrDA_TxNum
000ea0  e59f10ec          LDR      r1,|L1.3988|
000ea4  e5911000          LDR      r1,[r1,#0]  ; IrDA_TxCnt
000ea8  e1500001          CMP      r0,r1
000eac  ca00002c          BGT      |L1.3940|
;;;568    			rIrDA_IER &= ~(1<<1);
000eb0  e51f0d14          LDR      r0,|L1.420|
000eb4  e590000c          LDR      r0,[r0,#0xc]
000eb8  e3c00002          BIC      r0,r0,#2
000ebc  e51f1d20          LDR      r1,|L1.420|
000ec0  e581000c          STR      r0,[r1,#0xc]
;;;569    			IrDA_TxDone = 0;
000ec4  e3a00000          MOV      r0,#0
000ec8  e59f10cc          LDR      r1,|L1.3996|
000ecc  e5810000          STR      r0,[r1,#0]  ; IrDA_TxDone
000ed0  ea000023          B        |L1.3940|
;;;570    		}
;;;571    		
;;;572    	}
;;;573    	else if(status & 0x20) // TX Trigger
                  |L1.3796|
000ed4  e3150020          TST      r5,#0x20
000ed8  0a000021          BEQ      |L1.3940|
;;;574    		{
;;;575    			Uart_Printf("Tx Underrun error!! \n");
000edc  e28f00bc          ADR      r0,|L1.4000|
000ee0  ebfffffe          BL       _printf
;;;576    			IrDA_CKBUFFER  = (unsigned char *)MemoryCk; 
000ee4  e51f05f8          LDR      r0,|L1.2292|
000ee8  e51f1600          LDR      r1,|L1.2288|
000eec  e5810000          STR      r0,[r1,#0]  ; IrDA_CKBUFFER
;;;577    			IrDA_CKBUFFER1 = (unsigned char *)MemoryCk1;	
000ef0  e2800d40          ADD      r0,r0,#0x1000
000ef4  e59f10bc          LDR      r1,|L1.4024|
000ef8  e5810000          STR      r0,[r1,#0]  ; IrDA_CKBUFFER1
;;;578    			for(i=0; i<IrDA_TxCnt ; i++)
000efc  e3a04000          MOV      r4,#0
                  |L1.3840|
000f00  e59f008c          LDR      r0,|L1.3988|
000f04  e5900000       

⌨️ 快捷键说明

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