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

📄 spi01.txt

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

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

                          AREA ||.text||, CODE, READONLY

                  Ch15_SPI PROC
;;;77     void Ch15_SPI(void)
;;;78     {
                  |L1.0|
000000  e92d4010          STMFD    sp!,{r4,lr}
;;;79     	while(1)
000004  e1a00000          NOP      
                  |L1.8|
000008  e1a00000          NOP      
;;;80     	{
;;;81     		int i = 0;
00000c  e3a04000          MOV      r4,#0
;;;82       		Uart_Printf("\n");
000010  e28f008c          ADR      r0,|L1.164|
000014  ebfffffe          BL       _printf
;;;83     		while(1)
000018  e1a00000          NOP      
                  |L1.28|
00001c  e1a00000          NOP      
;;;84     		{	//display menu
;;;85     			Uart_Printf("%2d:%s\n",i,spi_func[i][1]);
000020  e59f0080          LDR      r0,|L1.168|
000024  e0800184          ADD      r0,r0,r4,LSL #3
000028  e1a01004          MOV      r1,r4
00002c  e5902004          LDR      r2,[r0,#4]
000030  e28f0074          ADR      r0,|L1.172|
000034  ebfffffe          BL       _printf
;;;86     			i++;
000038  e2844001          ADD      r4,r4,#1
;;;87     			if((int)(spi_func[i][0])==0)
00003c  e59f0064          LDR      r0,|L1.168|
000040  e7900184          LDR      r0,[r0,r4,LSL #3]
000044  e3500000          CMP      r0,#0
000048  1a000002          BNE      |L1.88|
;;;88     			{
;;;89     				Uart_Printf("\n");
00004c  e28f0050          ADR      r0,|L1.164|
000050  ebfffffe          BL       _printf
;;;90     				break;
000054  ea000000          B        |L1.92|
;;;91     			}
;;;92     			//if((i%3)==0)
;;;93     			//Uart_Printf("\n");
;;;94     		}
                  |L1.88|
000058  eaffffef          B        |L1.28|
;;;95     		
;;;96     		Uart_Printf("\nSelect the function to test : ");
                  |L1.92|
00005c  e28f0050          ADR      r0,|L1.180|
000060  ebfffffe          BL       _printf
;;;97     		i = Uart_GetIntNum();
000064  ebfffffe          BL       Uart_GetIntNum
000068  e1a04000          MOV      r4,r0
;;;98     		Uart_Printf("\n");
00006c  e28f0030          ADR      r0,|L1.164|
000070  ebfffffe          BL       _printf
;;;99     	 	if(i==-1) break;
000074  e3740001          CMN      r4,#1
000078  1a000000          BNE      |L1.128|
00007c  ea000007          B        |L1.160|
;;;100    		if(i>=0 && (i<(sizeof(spi_func)/8)) ) 
                  |L1.128|
000080  e3540000          CMP      r4,#0
000084  ba000004          BLT      |L1.156|
000088  e3540009          CMP      r4,#9
00008c  2a000002          BCS      |L1.156|
;;;101    		( (void (*)(void)) (spi_func[i][0]) )();			
000090  e59f1010          LDR      r1,|L1.168|
000094  e7910184          LDR      r0,[r1,r4,LSL #3]
000098  e12fff30          BLX      r0
;;;102    	}
                  |L1.156|
00009c  eaffffd9          B        |L1.8|
;;;103    }
                  |L1.160|
0000a0  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.164|
0000a4  0000000a          DCB      "\n\0\0\0"
                  |L1.168|
0000a8  00000000          DCD      spi_func
                  |L1.172|
0000ac  3a643225          DCB      "%2d:"
0000b0  000a7325          DCB      "%s\n\0"
                  |L1.180|
0000b4  6c65530a          DCB      "\nSel"
0000b8  20746365          DCB      "ect "
0000bc  20656874          DCB      "the "
0000c0  636e7566          DCB      "func"
0000c4  6e6f6974          DCB      "tion"
0000c8  206f7420          DCB      " to "
0000cc  74736574          DCB      "test"
0000d0  00203a20          DCB      " : \0"
                          ENDP

                  Spi0_Int PROC
;;;105    void __irq Spi0_Int(void)
;;;106    {
0000d4  e92d501f          STMFD    sp!,{r0-r4,r12,lr}
0000d8  e24dd004          SUB      sp,sp,#4
;;;107        unsigned int status;
;;;108        ClearPending(BIT_SPI0); 
0000dc  e3a00840          MOV      r0,#0x400000
0000e0  e59f10d8          LDR      r1,|L1.448|
0000e4  e5810000          STR      r0,[r1,#0]
0000e8  e1c10000          BIC      r0,r1,r0
0000ec  e5900010          LDR      r0,[r0,#0x10]
0000f0  e5810010          STR      r0,[r1,#0x10]
0000f4  e1a00001          MOV      r0,r1
0000f8  e5900010          LDR      r0,[r0,#0x10]
;;;109        status=rSPSTA0;
0000fc  e2810643          ADD      r0,r1,#0x4300000
000100  e5900004          LDR      r0,[r0,#4]
000104  e1a04000          MOV      r4,r0
;;;110    
;;;111        c0++;
000108  e59f00b4          LDR      r0,|L1.452|
00010c  e5900000          LDR      r0,[r0,#0]  ; c0
000110  e2800001          ADD      r0,r0,#1
000114  e59f10a8          LDR      r1,|L1.452|
000118  e5810000          STR      r0,[r1,#0]  ; c0
;;;112    	
;;;113        if(status&0x6) 
00011c  e3140006          TST      r4,#6
000120  0a000002          BEQ      |L1.304|
;;;114        	Uart_Printf("Data Collision or Multi Master Error(0x%x)!!!\n", status);
000124  e1a01004          MOV      r1,r4
000128  e28f0098          ADR      r0,|L1.456|
00012c  ebfffffe          BL       _printf
;;;115        while(!(status&0x1));   //Check ready state
                  |L1.304|
000130  e1a00000          NOP      
                  |L1.308|
000134  e3140001          TST      r4,#1
000138  0afffffd          BEQ      |L1.308|
;;;116        *spi0RxStr++=rSPRDAT0;    //First Rx data is garbage data
00013c  e59f00b4          LDR      r0,|L1.504|
000140  e5901014          LDR      r1,[r0,#0x14]
000144  e59f00b0          LDR      r0,|L1.508|
000148  e5900000          LDR      r0,[r0,#0]  ; spi0RxStr
00014c  e5c01000          STRB     r1,[r0,#0]
000150  e2800001          ADD      r0,r0,#1
000154  e59f10a0          LDR      r1,|L1.508|
000158  e5810000          STR      r0,[r1,#0]  ; spi0RxStr
;;;117        if(*spi0TxStr!='\0') 
00015c  e59f009c          LDR      r0,|L1.512|
000160  e5900000          LDR      r0,[r0,#0]  ; spi0TxStr
000164  e5d00000          LDRB     r0,[r0,#0]
000168  e3500000          CMP      r0,#0
00016c  0a000008          BEQ      |L1.404|
;;;118        	rSPTDAT0=*spi0TxStr++;
000170  e59f0088          LDR      r0,|L1.512|
000174  e5901000          LDR      r1,[r0,#0]  ; spi0TxStr
000178  e5d10000          LDRB     r0,[r1,#0]
00017c  e2811001          ADD      r1,r1,#1
000180  e59f2078          LDR      r2,|L1.512|
000184  e5821000          STR      r1,[r2,#0]  ; spi0TxStr
000188  e59f1068          LDR      r1,|L1.504|
00018c  e5810010          STR      r0,[r1,#0x10]
000190  ea000007          B        |L1.436|
;;;119        else
;;;120        {
;;;121    		rINTMSK|=BIT_SPI0;
                  |L1.404|
000194  e59f0024          LDR      r0,|L1.448|
000198  e5900008          LDR      r0,[r0,#8]
00019c  e3800840          ORR      r0,r0,#0x400000
0001a0  e59f1018          LDR      r1,|L1.448|
0001a4  e5810008          STR      r0,[r1,#8]
;;;122    	    end0SpiTx=1;
0001a8  e3a00001          MOV      r0,#1
0001ac  e59f1050          LDR      r1,|L1.516|
0001b0  e5810000          STR      r0,[r1,#0]  ; end0SpiTx
;;;123        }
;;;124    
;;;125    }
                  |L1.436|
0001b4  e28dd004          ADD      sp,sp,#4
0001b8  e8bd501f          LDMFD    sp!,{r0-r4,r12,lr}
0001bc  e25ef004          SUBS     pc,lr,#4
                  |L1.448|
0001c0  40200000          DCD      0x40200000
                  |L1.452|
0001c4  0000002c          DCD      ||.bss$2|| + 44
                  |L1.456|
0001c8  61746144          DCB      "Data"
0001cc  6c6f4320          DCB      " Col"
0001d0  6973696c          DCB      "lisi"
0001d4  6f206e6f          DCB      "on o"
0001d8  754d2072          DCB      "r Mu"
0001dc  2069746c          DCB      "lti "
0001e0  7473614d          DCB      "Mast"
0001e4  45207265          DCB      "er E"
0001e8  726f7272          DCB      "rror"
0001ec  25783028          DCB      "(0x%"
0001f0  21212978          DCB      "x)!!"
0001f4  00000a21          DCB      "!\n\0\0"
                  |L1.504|
0001f8  44500000          DCD      0x44500000
                  |L1.508|
0001fc  00000004          DCD      ||.bss$2|| + 4
                  |L1.512|
000200  00000000          DCD      ||.bss$2||
                  |L1.516|
000204  00000010          DCD      ||.bss$2|| + 16
                          ENDP

                  Spi1_Int PROC
;;;127    void __irq Spi1_Int(void)
;;;128    {
000208  e92d501f          STMFD    sp!,{r0-r4,r12,lr}
00020c  e24dd004          SUB      sp,sp,#4
;;;129        unsigned int status;
;;;130    	rSUBSRCPND|=(BIT_SUB_SPI1);
000210  e51f0058          LDR      r0,|L1.448|
000214  e5900018          LDR      r0,[r0,#0x18]
000218  e3800880          ORR      r0,r0,#0x800000
00021c  e51f1064          LDR      r1,|L1.448|
000220  e5810018          STR      r0,[r1,#0x18]
;;;131    	ClearPending(BIT_VLX_SPI1); 
000224  e3a00580          MOV      r0,#0x20000000
000228  e1c11000          BIC      r1,r1,r0
00022c  e5810000          STR      r0,[r1,#0]
000230  e1c10000          BIC      r0,r1,r0
000234  e5900010          LDR      r0,[r0,#0x10]
000238  e5810010          STR      r0,[r1,#0x10]
00023c  e1a00001          MOV      r0,r1
000240  e5900010          LDR      r0,[r0,#0x10]
;;;132        status=rSPSTA1;
000244  e2810643          ADD      r0,r1,#0x4300000
000248  e5900024          LDR      r0,[r0,#0x24]
00024c  e1a04000          MOV      r4,r0
;;;133    
;;;134    	c1++;
000250  e59f02cc          LDR      r0,|L1.1316|
000254  e5900000          LDR      r0,[r0,#0]  ; c1
000258  e2800001          ADD      r0,r0,#1
00025c  e59f12c0          LDR      r1,|L1.1316|
000260  e5810000          STR      r0,[r1,#0]  ; c1
;;;135    	
;;;136        if(status&0x6) 
000264  e3140006          TST      r4,#6
000268  0a000002          BEQ      |L1.632|
;;;137        	Uart_Printf("Data Collision or Multi Master Error(0x%x)!!!\n", status);
00026c  e1a01004          MOV      r1,r4
000270  e24f00b0          ADR      r0,|L1.456|
000274  ebfffffe          BL       _printf
;;;138        while(!(status&0x1));   //Check ready state
                  |L1.632|
000278  e1a00000          NOP      
                  |L1.636|
00027c  e3140001          TST      r4,#1
000280  0afffffd          BEQ      |L1.636|
;;;139        *spi1RxStr++=rSPRDAT1;    //First Rx data is garbage data
000284  e51f0094          LDR      r0,|L1.504|
000288  e5901034          LDR      r1,[r0,#0x34]
00028c  e59f0294          LDR      r0,|L1.1320|
000290  e5900000          LDR      r0,[r0,#0]  ; spi1RxStr
000294  e5c01000          STRB     r1,[r0,#0]
000298  e2800001          ADD      r0,r0,#1
00029c  e59f1284          LDR      r1,|L1.1320|
0002a0  e5810000          STR      r0,[r1,#0]  ; spi1RxStr
;;;140        if(*spi1TxStr!='\0') 
0002a4  e59f0280          LDR      r0,|L1.1324|
0002a8  e5900000          LDR      r0,[r0,#0]  ; spi1TxStr
0002ac  e5d00000          LDRB     r0,[r0,#0]
0002b0  e3500000          CMP      r0,#0
0002b4  0a000008          BEQ      |L1.732|
;;;141        	rSPTDAT1=*spi1TxStr++;
0002b8  e59f026c          LDR      r0,|L1.1324|
0002bc  e5901000          LDR      r1,[r0,#0]  ; spi1TxStr
0002c0  e5d10000          LDRB     r0,[r1,#0]
0002c4  e2811001          ADD      r1,r1,#1
0002c8  e59f225c          LDR      r2,|L1.1324|
0002cc  e5821000          STR      r1,[r2,#0]  ; spi1TxStr
0002d0  e51f10e0          LDR      r1,|L1.504|
0002d4  e5810030          STR      r0,[r1,#0x30]
0002d8  ea00000b          B        |L1.780|
;;;142    	else
;;;143        {
;;;144    	    rINTMSK|=(BIT_VLX_SPI1);
                  |L1.732|
0002dc  e51f0124          LDR      r0,|L1.448|
0002e0  e5900008          LDR      r0,[r0,#8]
0002e4  e3800580          ORR      r0,r0,#0x20000000
0002e8  e51f1130          LDR      r1,|L1.448|
0002ec  e5810008          STR      r0,[r1,#8]
;;;145    		rINTSUBMSK|=(BIT_SUB_SPI1);

⌨️ 快捷键说明

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