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

📄 irda.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 4 页
字号:
000390  e59f00f4          LDR      r0,|L1.1164|
000394  e5900000          LDR      r0,[r0,#0]  ; IrDA_cnt
000398  e2800001          ADD      r0,r0,#1
00039c  e59f10e8          LDR      r1,|L1.1164|
0003a0  e5810000          STR      r0,[r1,#0]  ; IrDA_cnt
;;;121    	ClearPending(BIT_UART2);
0003a4  e3a00c80          MOV      r0,#0x8000
0003a8  e3a0144a          MOV      r1,#0x4a000000
0003ac  e5810000          STR      r0,[r1,#0]
0003b0  e3a00c80          MOV      r0,#0x8000
0003b4  e3a0144a          MOV      r1,#0x4a000000
0003b8  e5810010          STR      r0,[r1,#0x10]
0003bc  e3a0044a          MOV      r0,#0x4a000000
0003c0  e5900010          LDR      r0,[r0,#0x10]
;;;122            rSUBSRCPND=(BIT_SUB_TXD2);
0003c4  e3a00080          MOV      r0,#0x80
0003c8  e3a0144a          MOV      r1,#0x4a000000
0003cc  e5810018          STR      r0,[r1,#0x18]
;;;123            rINTSUBMSK&=~(BIT_SUB_TXD2);
0003d0  e3a0044a          MOV      r0,#0x4a000000
0003d4  e590001c          LDR      r0,[r0,#0x1c]
0003d8  e3c00080          BIC      r0,r0,#0x80
0003dc  e3a0144a          MOV      r1,#0x4a000000
0003e0  e581001c          STR      r0,[r1,#0x1c]
0003e4  ea000019          B        |L1.1104|
;;;124        }
;;;125        else
;;;126        {
;;;127    	IrDA_end=1;
                  |L1.1000|
0003e8  e3a00001          MOV      r0,#1
0003ec  e59f10a4          LDR      r1,|L1.1176|
0003f0  e5810000          STR      r0,[r1,#0]  ; IrDA_end
;;;128    	while(rUFSTAT2 & 0x2f0);	//Until FIFO is empty
0003f4  e1a00000          NOP      
                  |L1.1016|
0003f8  e59f0074          LDR      r0,|L1.1140|
0003fc  e5900018          LDR      r0,[r0,#0x18]
000400  e3100fbc          TST      r0,#0x2f0
000404  1afffffb          BNE      |L1.1016|
;;;129    	while(!(rUTRSTAT2 & 0x4));	//Until Tx shifter is empty
000408  e1a00000          NOP      
                  |L1.1036|
00040c  e59f0060          LDR      r0,|L1.1140|
000410  e5900010          LDR      r0,[r0,#0x10]
000414  e3100004          TST      r0,#4
000418  0afffffb          BEQ      |L1.1036|
;;;130            ClearPending(BIT_UART2);
00041c  e3a00c80          MOV      r0,#0x8000
000420  e3a0144a          MOV      r1,#0x4a000000
000424  e5810000          STR      r0,[r1,#0]
000428  e3a00c80          MOV      r0,#0x8000
00042c  e3a0144a          MOV      r1,#0x4a000000
000430  e5810010          STR      r0,[r1,#0x10]
000434  e3a0044a          MOV      r0,#0x4a000000
000438  e5900010          LDR      r0,[r0,#0x10]
;;;131    	rINTMSK|=BIT_UART2;
00043c  e3a0044a          MOV      r0,#0x4a000000
000440  e5900008          LDR      r0,[r0,#8]
000444  e3800c80          ORR      r0,r0,#0x8000
000448  e3a0144a          MOV      r1,#0x4a000000
00044c  e5810008          STR      r0,[r1,#8]
;;;132        }
;;;133    }
                  |L1.1104|
000450  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
000454  e25ef004          SUBS     pc,lr,#4
                  |L1.1112|
000458  00000018          DCD      ||.bss$2|| + 24
                  |L1.1116|
00045c  0000001c          DCD      ||.bss$2|| + 28
                  |L1.1120|
000460  00000020          DCD      ||.bss$2|| + 32
                  |L1.1124|
000464  00000024          DCD      ||.bss$2|| + 36
                  |L1.1128|
000468  00000028          DCD      ||.bss$2|| + 40
                  |L1.1132|
00046c  0000002c          DCD      ||.bss$2|| + 44
                  |L1.1136|
000470  003c0fff          DCD      0x003c0fff
                  |L1.1140|
000474  50008000          DCD      0x50008000
                  |L1.1144|
000478  00000030          DCD      ||.bss$2|| + 48
                  |L1.1148|
00047c  00000034          DCD      ||.bss$2|| + 52
                  |L1.1152|
000480  00000038          DCD      ||.bss$2|| + 56
                  |L1.1156|
000484  0000003c          DCD      ||.bss$2|| + 60
                  |L1.1160|
000488  00000040          DCD      ||.bss$2|| + 64
                  |L1.1164|
00048c  00000008          DCD      ||.bss$2|| + 8
                  |L1.1168|
000490  00000000          DCD      ||.bss$2||
                  |L1.1172|
000494  002c6425          DCB      "%d,\0"
                  |L1.1176|
000498  0000000c          DCD      ||.bss$2|| + 12
                          ENDP

                  __sub_IrDA_RxErrInt PROC
;;;160    void __sub_IrDA_RxErrInt(void)
;;;161    {
00049c  e92d4008          STMFD    sp!,{r3,lr}
;;;162        switch(rUERSTAT2)//to clear and check the status of register bits
0004a0  e51f0034          LDR      r0,|L1.1140|
0004a4  e5900014          LDR      r0,[r0,#0x14]
0004a8  e3500031          CMP      r0,#0x31
0004ac  0a000006          BEQ      |L1.1228|
0004b0  e3500032          CMP      r0,#0x32
0004b4  0a000007          BEQ      |L1.1240|
0004b8  e3500034          CMP      r0,#0x34
0004bc  0a000008          BEQ      |L1.1252|
0004c0  e3500038          CMP      r0,#0x38
0004c4  1a00000c          BNE      |L1.1276|
0004c8  ea000008          B        |L1.1264|
;;;163        {
;;;164    	case '1':
;;;165    	    Uart_Printf("Overrun error\n");
                  |L1.1228|
0004cc  e28f0030          ADR      r0,|L1.1284|
0004d0  ebfffffe          BL       Uart_Printf
;;;166    	    break;
0004d4  ea000009          B        |L1.1280|
;;;167    	case '2':
;;;168    	    Uart_Printf("Parity error\n");
                  |L1.1240|
0004d8  e28f0034          ADR      r0,|L1.1300|
0004dc  ebfffffe          BL       Uart_Printf
;;;169    	    break;
0004e0  ea000006          B        |L1.1280|
;;;170    	case '4':
;;;171    	    Uart_Printf("Frame error\n");
                  |L1.1252|
0004e4  e28f0038          ADR      r0,|L1.1316|
0004e8  ebfffffe          BL       Uart_Printf
;;;172    	    break;
0004ec  ea000003          B        |L1.1280|
;;;173    	case '8':
;;;174    	    Uart_Printf("Breake detect\n");
                  |L1.1264|
0004f0  e28f003c          ADR      r0,|L1.1332|
0004f4  ebfffffe          BL       Uart_Printf
;;;175    	    break;
0004f8  ea000000          B        |L1.1280|
;;;176    	default :
;;;177    	    break;
                  |L1.1276|
0004fc  e1a00000          NOP      
;;;178        }
;;;179    }
                  |L1.1280|
000500  e8bd8008          LDMFD    sp!,{r3,pc}
                  |L1.1284|
000504  7265764f          DCB      "Over"
000508  206e7572          DCB      "run "
00050c  6f727265          DCB      "erro"
000510  00000a72          DCB      "r\n\0\0"
                  |L1.1300|
000514  69726150          DCB      "Pari"
000518  65207974          DCB      "ty e"
00051c  726f7272          DCB      "rror"
000520  0000000a          DCB      "\n\0\0\0"
                  |L1.1316|
000524  6d617246          DCB      "Fram"
000528  72652065          DCB      "e er"
00052c  0a726f72          DCB      "ror\n"
000530  00000000          DCB      "\0\0\0\0"
                  |L1.1332|
000534  61657242          DCB      "Brea"
000538  6420656b          DCB      "ke d"
00053c  63657465          DCB      "etec"
000540  00000a74          DCB      "t\n\0\0"
                          ENDP

                  __sub_IrDA_RxInt PROC
;;;145    void __sub_IrDA_RxInt(void)
;;;146    {
000544  e1a00000          NOP      
;;;147        while( (rUFSTAT2 & 0x100) || (rUFSTAT2 & 0xf)  )
                  |L1.1352|
000548  e51f00dc          LDR      r0,|L1.1140|
00054c  e5900018          LDR      r0,[r0,#0x18]
000550  e3100f40          TST      r0,#0x100
000554  1a000003          BNE      |L1.1384|
000558  e51f00ec          LDR      r0,|L1.1140|
00055c  e5900018          LDR      r0,[r0,#0x18]
000560  e310000f          TST      r0,#0xf
000564  0a000010          BEQ      |L1.1452|
;;;148        {
;;;149    	*IrDAdataPt=rURXH2;
                  |L1.1384|
000568  e51f00fc          LDR      r0,|L1.1140|
00056c  e5d00024          LDRB     r0,[r0,#0x24]
000570  e51f10e8          LDR      r1,|L1.1168|
000574  e5911000          LDR      r1,[r1,#0]  ; IrDAdataPt
000578  e5c10000          STRB     r0,[r1,#0]
;;;150    	*IrDAdataPt++;
00057c  e51f00f4          LDR      r0,|L1.1168|
000580  e5900000          LDR      r0,[r0,#0]  ; IrDAdataPt
000584  e5d01000          LDRB     r1,[r0,#0]
000588  e2800001          ADD      r0,r0,#1
00058c  e51f1104          LDR      r1,|L1.1168|
000590  e5810000          STR      r0,[r1,#0]  ; IrDAdataPt
;;;151    	IrDA_cnt++;
000594  e51f0110          LDR      r0,|L1.1164|
000598  e5900000          LDR      r0,[r0,#0]  ; IrDA_cnt
00059c  e2800001          ADD      r0,r0,#1
0005a0  e51f111c          LDR      r1,|L1.1164|
0005a4  e5810000          STR      r0,[r1,#0]  ; IrDA_cnt
;;;152        }
0005a8  eaffffe6          B        |L1.1352|
;;;153        if(IrDA_cnt >= IrDA_BUFLEN)
                  |L1.1452|
0005ac  e51f0128          LDR      r0,|L1.1164|
0005b0  e5900000          LDR      r0,[r0,#0]  ; IrDA_cnt
0005b4  e3500f40          CMP      r0,#0x100
0005b8  3a000007          BCC      |L1.1500|
;;;154        {
;;;155        	IrDA_end=1;
0005bc  e3a00001          MOV      r0,#1
0005c0  e51f1130          LDR      r1,|L1.1176|
0005c4  e5810000          STR      r0,[r1,#0]  ; IrDA_end
;;;156        	rINTMSK|=BIT_UART2;
0005c8  e3a0044a          MOV      r0,#0x4a000000
0005cc  e5900008          LDR      r0,[r0,#8]
0005d0  e3800c80          ORR      r0,r0,#0x8000
0005d4  e3a0144a          MOV      r1,#0x4a000000
0005d8  e5810008          STR      r0,[r1,#8]
;;;157        }
;;;158    }
                  |L1.1500|
0005dc  e1a0f00e          MOV      pc,lr
                          ENDP

                  IrDA_RxOrErr PROC
;;;135    void __irq IrDA_RxOrErr(void)
;;;136    {
0005e0  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;137        rINTSUBMSK|=(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);	// Just for the safety
0005e4  e3a0044a          MOV      r0,#0x4a000000
0005e8  e590001c          LDR      r0,[r0,#0x1c]
0005ec  e3800f70          ORR      r0,r0,#0x1c0
0005f0  e3a0144a          MOV      r1,#0x4a000000
0005f4  e581001c          STR      r0,[r1,#0x1c]
;;;138        if(rSUBSRCPND&BIT_SUB_RXD2) __sub_IrDA_RxInt();
0005f8  e3a0044a          MOV      r0,#0x4a000000
0005fc  e5900018          LDR      r0,[r0,#0x18]
000600  e3100040          TST      r0,#0x40
000604  0a000001          BEQ      |L1.1552|
000608  ebfffffe          BL       __sub_IrDA_RxInt
00060c  ea000000          B        |L1.1556|
;;;139        else __sub_IrDA_RxErrInt();
                  |L1.1552|
000610  ebfffffe          BL       __sub_IrDA_RxErrInt
;;;140        rSUBSRCPND=(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);
                  |L1.1556|
000614  e3a00f70          MOV      r0,#0x1c0
000618  e3a0144a          MOV      r1,#0x4a000000
00061c  e5810018          STR      r0,[r1,#0x18]
;;;141        rINTSUBMSK&=~(BIT_SUB_RXD2|BIT_SUB_ERR2);
000620  e3a0044a          MOV      r0,#0x4a000000
000624  e590001c          LDR      r0,[r0,#0x1c]
000628  e3c00f50          BIC      r0,r0,#0x140
00062c  e3a0144a          MOV      r1,#0x4a000000
000630  e581001c          STR      r0,[r1,#0x1c]
;;;142        ClearPending(BIT_UART2);
000634  e3a00c80          MOV      r0,#0x8000
000638  e3a0144a          MOV      r1,#0x4a000000
00063c  e5810000          STR      r0,[r1,#0]
000640  e3a00c80          MOV      r0,#0x8000
000644  e3a0144a          MOV      r1,#0x4a000000
000648  e5810010          STR      r0,[r1,#0x10]
00064c  e3a0044a          MOV      r0,#0x4a000000
000650  e5900010          LDR      r0,[r0,#0x10]
;;;143    }
000654  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
000658  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  Test_IrDA_Tx PROC
;;;181    void Test_IrDA_Tx(void)
;;;182    {
00065c  e92d401f          STMFD    sp!,{r0-r4,lr}
;;;183        int i;
;;;184        IrDA_cnt=0;
000660  e3a00000          MOV      r0,#0
000664  e51f11e0          LDR      r1,|L1.1164|
000668  e5810000          STR      r0,[r1,#0]  ; IrDA_cnt
;;;185        IrDA_end=0;
00066c  e3a00000          MOV      r0,#0
000670  e51f11e0          LDR      r1,|L1.1176|
000674  e5810000          STR      r0,[r1,#0]  ; IrDA_end
;;;186        IrDAdataFl=(volatile U8 *)IrDABUFFER;
000678  e3a005c4          MOV      r0,#0x31000000
00067c  e59f1224          LDR      r1,|L1.2216|
000680  e5810000          STR      r0,[r1,#0]  ; IrDAdataFl
;;;187        IrDAdataPt=(volatile U8 *)IrDABUFFER;
000684  e3a005c4          MOV      r0,#0x31000000
000688  e51f1200          LDR      r1,|L1.1168|
00068c  e5810000          STR      r0,[r1,#0]  ; IrDAdataPt
;;;188        IrDA_Port_Set();
000690  ebfffffe          BL       IrDA_Port_Set
;;;189        Uart_Select(1);
000694  e3a00001          MOV      r0,#1
000698  ebfffffe          BL       Uart_Select
;;;190        for(i=0;i<IrDA_BUFLEN;i++) *IrDAdataFl++=i;	// Initialize IrDA Tx data
00069c  e3a04000          MOV      r4,#0
                  |L1.1696|
0006a0  e3540f40          CMP      r4,#0x100
0006a4  aa000009          BGE      |L1.1744|
0006a8  ea000001          B        |L1.1716|
                  |L1.1708|
0006ac  e2844001          ADD      r4,r4,#1
0006b0  eafffffa          B        |L1.1696|
                  |L1.1716|
0006b4  e59f01ec          LDR      r0,|L1.2216|
0006b8  e5900000          LDR      r0,[r0,#0]  ; IrDAdataFl
0006bc  e5c04000          STRB     r4,[r0,#0]
0006c0  e2800001          ADD      r0,r0,#1
0006c4  e59f11dc          LDR      r1,|L1.2216|
0006c8  e5810000          STR      r0,[r1,#0]  ; IrDAdataFl
0006cc  eafffff6          B        |L1.1708|
;;;191        pISR_UART2=(U32)IrDA_TxInt;
                  |L1.1744|
0006d0  e59f01d4          LDR      r0,|L1.2220|
0006d4  e59f11d4          LDR      r1,|L1.2224|
0006d8  e5810f5c          STR      r0,[r1,#0xf5c]
;;;192        Uart_Printf("\nSelect the baud rate\n");	// Select IrDA baud rate
0006dc  e28f0f74          ADR      r0,|L1.2228|
0006e0  ebfffffe          BL       Uart_Printf
;;;193        Uart_Printf("1)9600    2)19200    3)38400    4)57600    5)115200\n"); 
0006e4  e28f0f78          ADR      r0,|L1.2252|
0006e8  ebfffffe          BL       Uart_Printf
;;;194        i=Uart_Getch ();
0006ec  ebfffffe          BL       Uart_Getch
0006f0  e1a04000          MOV      r4,r0
;;;195        switch(i)

⌨️ 快捷键说明

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