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

📄 camproset.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM C Compiler, ADS1.2 [Build 842]

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

                          AREA ||.text||, CODE, READONLY

                  Wr_CamIIC PROC
;;;37     void Wr_CamIIC(U32 slvAddr, U32 addr, U8 data)
;;;38     {
                  |L1.0|
000000  e3a03001          MOV      r3,#1
;;;39     	_CAMiicMode      = CAMWRDATA;
000004  e59fc4ec          LDR      r12,|L1.1272|
000008  e58c3000          STR      r3,[r12,#0]  ; _CAMiicMode
;;;40     	_CAMiicPt        = 0;
00000c  e3a03000          MOV      r3,#0
000010  e59fc4e4          LDR      r12,|L1.1276|
000014  e58c3000          STR      r3,[r12,#0]  ; _CAMiicPt
;;;41     	_CAMiicData[0]   = (U8)addr;
000018  e59f34e0          LDR      r3,|L1.1280|
00001c  e5c31000          STRB     r1,[r3,#0]  ; _CAMiicData
;;;42     	_CAMiicData[1]   = data;
000020  e59f34d8          LDR      r3,|L1.1280|
000024  e5c32001          STRB     r2,[r3,#1]  ; _CAMiicData
;;;43     	_CAMiicDataCount = 2;
000028  e3a03002          MOV      r3,#2
00002c  e59fc4d0          LDR      r12,|L1.1284|
000030  e58c3000          STR      r3,[r12,#0]  ; _CAMiicDataCount
;;;44         
;;;45     	rIICDS        = slvAddr;
000034  e59f34cc          LDR      r3,|L1.1288|
000038  e583000c          STR      r0,[r3,#0xc]
;;;46     	rIICSTAT      = 0xf0; //Start Master TX Condition    
00003c  e3a030f0          MOV      r3,#0xf0
000040  e59fc4c0          LDR      r12,|L1.1288|
000044  e58c3004          STR      r3,[r12,#4]
;;;47     	rIICCON    = 0xef;   //Clearing the pending bit isn't needed because the pending bit has been cleared.
000048  e3a030ef          MOV      r3,#0xef
00004c  e1ccc003          BIC      r12,r12,r3
000050  e58c3000          STR      r3,[r12,#0]
;;;48     
;;;49     	while(_CAMiicDataCount!=-1);
000054  e1a00000          NOP      
                  |L1.88|
000058  e59f34a4          LDR      r3,|L1.1284|
00005c  e5933000          LDR      r3,[r3,#0]  ; _CAMiicDataCount
000060  e3730001          CMN      r3,#1
000064  1afffffb          BNE      |L1.88|
;;;50        
;;;51     }
000068  e12fff1e          BX       lr
                          ENDP

                  Rd_CamIIC PROC
;;;53     void Rd_CamIIC(U32 slvAddr,U32 addr,U8 *data)
;;;54     {
00006c  e3a03004          MOV      r3,#4
;;;55     
;;;56     	/*IIC Slave Addr Write + IIC Reg Addr Write */	
;;;57     	_CAMiicMode      = CAMSETRDADDR;
000070  e59fc480          LDR      r12,|L1.1272|
000074  e58c3000          STR      r3,[r12,#0]  ; _CAMiicMode
;;;58     	_CAMiicPt        = 0;
000078  e3a03000          MOV      r3,#0
00007c  e59fc478          LDR      r12,|L1.1276|
000080  e58c3000          STR      r3,[r12,#0]  ; _CAMiicPt
;;;59     	_CAMiicData[0]   = (U8)addr;
000084  e59f3474          LDR      r3,|L1.1280|
000088  e5c31000          STRB     r1,[r3,#0]  ; _CAMiicData
;;;60     	_CAMiicDataCount = 1;
00008c  e3a03001          MOV      r3,#1
000090  e59fc46c          LDR      r12,|L1.1284|
000094  e58c3000          STR      r3,[r12,#0]  ; _CAMiicDataCount
;;;61     
;;;62     	rIICDS   = slvAddr;
000098  e59f3468          LDR      r3,|L1.1288|
00009c  e583000c          STR      r0,[r3,#0xc]
;;;63     	rIICSTAT = 0xf0;   //Master Tx, Start
0000a0  e3a030f0          MOV      r3,#0xf0
0000a4  e59fc45c          LDR      r12,|L1.1288|
0000a8  e58c3004          STR      r3,[r12,#4]
;;;64     	rIICCON  = 0xef;                    //Resumes IIC operation.  
0000ac  e3a030ef          MOV      r3,#0xef
0000b0  e1ccc003          BIC      r12,r12,r3
0000b4  e58c3000          STR      r3,[r12,#0]
;;;65     	//Clearing the pending bit isn't needed because the pending bit has been cleared.
;;;66     	while(_CAMiicDataCount!=-1);
0000b8  e1a00000          NOP      
                  |L1.188|
0000bc  e59f3440          LDR      r3,|L1.1284|
0000c0  e5933000          LDR      r3,[r3,#0]  ; _CAMiicDataCount
0000c4  e3730001          CMN      r3,#1
0000c8  1afffffb          BNE      |L1.188|
;;;67         
;;;68     	_CAMiicMode      = CAMRDDATA;
0000cc  e3a03003          MOV      r3,#3
0000d0  e59fc420          LDR      r12,|L1.1272|
0000d4  e58c3000          STR      r3,[r12,#0]  ; _CAMiicMode
;;;69     	_CAMiicPt        = 0;
0000d8  e3a03000          MOV      r3,#0
0000dc  e59fc418          LDR      r12,|L1.1276|
0000e0  e58c3000          STR      r3,[r12,#0]  ; _CAMiicPt
;;;70     	_CAMiicDataCount = 1;
0000e4  e3a03001          MOV      r3,#1
0000e8  e59fc414          LDR      r12,|L1.1284|
0000ec  e58c3000          STR      r3,[r12,#0]  ; _CAMiicDataCount
;;;71         
;;;72     	rIICDS   = slvAddr;
0000f0  e59f3410          LDR      r3,|L1.1288|
0000f4  e583000c          STR      r0,[r3,#0xc]
;;;73     	rIICSTAT = 0xb0;                    //Master Rx,Start
0000f8  e3a030b0          MOV      r3,#0xb0
0000fc  e59fc404          LDR      r12,|L1.1288|
000100  e58c3004          STR      r3,[r12,#4]
;;;74     	rIICCON  = 0xef;                    //Resumes IIC operation.   
000104  e3a030ef          MOV      r3,#0xef
000108  e1ccc003          BIC      r12,r12,r3
00010c  e58c3000          STR      r3,[r12,#0]
;;;75         
;;;76     	while(_CAMiicDataCount!=-1);
000110  e1a00000          NOP      
                  |L1.276|
000114  e59f33e8          LDR      r3,|L1.1284|
000118  e5933000          LDR      r3,[r3,#0]  ; _CAMiicDataCount
00011c  e3730001          CMN      r3,#1
000120  1afffffb          BNE      |L1.276|
;;;77     
;;;78     	*data = _CAMiicData[1];
000124  e59f33d4          LDR      r3,|L1.1280|
000128  e5d33001          LDRB     r3,[r3,#1]  ; _CAMiicData
00012c  e5c23000          STRB     r3,[r2,#0]
;;;79     }
000130  e12fff1e          BX       lr
                          ENDP

                  Cam_IICInt PROC
;;;82     void __irq Cam_IICInt(void)
;;;83     {
000134  e92d503f          STMFD    sp!,{r0-r5,r12,lr}
;;;84     	U32 iicSt,i;
;;;85     
;;;86     	ClearPending(BIT_IIC);
000138  e3a00680          MOV      r0,#0x8000000
00013c  e59f13c8          LDR      r1,|L1.1292|
000140  e5810000          STR      r0,[r1,#0]
000144  e1c10000          BIC      r0,r1,r0
000148  e5900010          LDR      r0,[r0,#0x10]
00014c  e5810010          STR      r0,[r1,#0x10]
000150  e1a00001          MOV      r0,r1
000154  e5900010          LDR      r0,[r0,#0x10]
;;;87     	iicSt   = rIICSTAT; 
000158  e2810644          ADD      r0,r1,#0x4400000
00015c  e5900004          LDR      r0,[r0,#4]
000160  e1a05000          MOV      r5,r0
;;;88     	rINTMSK |= BIT_IIC;
000164  e1a00001          MOV      r0,r1
000168  e5900008          LDR      r0,[r0,#8]
00016c  e3800680          ORR      r0,r0,#0x8000000
000170  e5810008          STR      r0,[r1,#8]
;;;89     
;;;90     	if(iicSt & 0x8){}           //When bus arbitration is failed.
000174  e1a00000          NOP      
;;;91     	if(iicSt & 0x4){}           //When a slave address is matched with IICADD
000178  e1a00000          NOP      
;;;92     	if(iicSt & 0x2){}           //When a slave address is 0000000b
00017c  e1a00000          NOP      
;;;93     	if(iicSt & 0x1){}           //When ACK isn't received
000180  e1a00000          NOP      
;;;94     
;;;95     	switch(_CAMiicMode) {
000184  e59f036c          LDR      r0,|L1.1272|
000188  e5900000          LDR      r0,[r0,#0]  ; _CAMiicMode
00018c  e3500001          CMP      r0,#1
000190  0a000033          BEQ      |L1.612|
000194  e3500003          CMP      r0,#3
000198  0a000002          BEQ      |L1.424|
00019c  e3500004          CMP      r0,#4
0001a0  1a000075          BNE      |L1.892|
0001a4  ea000051          B        |L1.752|
;;;96     		case CAMRDDATA:
;;;97     			if((_CAMiicDataCount--)==0) {
                  |L1.424|
0001a8  e59f0354          LDR      r0,|L1.1284|
0001ac  e5900000          LDR      r0,[r0,#0]  ; _CAMiicDataCount
0001b0  e2401001          SUB      r1,r0,#1
0001b4  e59f0348          LDR      r0,|L1.1284|
0001b8  e5902000          LDR      r2,[r0,#0]  ; _CAMiicDataCount
0001bc  e5801000          STR      r1,[r0,#0]  ; _CAMiicDataCount
0001c0  e3520000          CMP      r2,#0
0001c4  1a000011          BNE      |L1.528|
;;;98     				_CAMiicData[_CAMiicPt++] = rIICDS;
0001c8  e59f0338          LDR      r0,|L1.1288|
0001cc  e590100c          LDR      r1,[r0,#0xc]
0001d0  e59f0324          LDR      r0,|L1.1276|
0001d4  e5900000          LDR      r0,[r0,#0]  ; _CAMiicPt
0001d8  e2802001          ADD      r2,r0,#1
0001dc  e59f3318          LDR      r3,|L1.1276|
0001e0  e5832000          STR      r2,[r3,#0]  ; _CAMiicPt
0001e4  e59f2314          LDR      r2,|L1.1280|
0001e8  e7c21000          STRB     r1,[r2,r0]
;;;99                 
;;;100    				rIICSTAT = 0x90;      //Stop MasRx condition 
0001ec  e3a00090          MOV      r0,#0x90
0001f0  e59f1310          LDR      r1,|L1.1288|
0001f4  e5810004          STR      r0,[r1,#4]
;;;101    				rIICCON  = 0xef;      //Resumes IIC operation.
0001f8  e3a000ef          MOV      r0,#0xef
0001fc  e1c11000          BIC      r1,r1,r0
000200  e5810000          STR      r0,[r1,#0]
;;;102    				Delay(2);                 //Wait until stop condtion is in effect., Too long time...  # need the time 2440:Delay(1), 24A0: Delay(2)
000204  e3a00002          MOV      r0,#2
000208  ebfffffe          BL       Delay
;;;103    								//The pending bit will not be set after issuing stop condition.
;;;104    				break;    
00020c  ea00005b          B        |L1.896|
;;;105    			}      
;;;106    			_CAMiicData[_CAMiicPt++] = rIICDS;     //The last data has to be read with no ack.
                  |L1.528|
000210  e59f02f0          LDR      r0,|L1.1288|
000214  e590100c          LDR      r1,[r0,#0xc]
000218  e59f02dc          LDR      r0,|L1.1276|
00021c  e5900000          LDR      r0,[r0,#0]  ; _CAMiicPt
000220  e2802001          ADD      r2,r0,#1
000224  e59f32d0          LDR      r3,|L1.1276|
000228  e5832000          STR      r2,[r3,#0]  ; _CAMiicPt
00022c  e59f22cc          LDR      r2,|L1.1280|
000230  e7c21000          STRB     r1,[r2,r0]
;;;107    
;;;108    			if((_CAMiicDataCount)==0)
000234  e59f02c8          LDR      r0,|L1.1284|
000238  e5900000          LDR      r0,[r0,#0]  ; _CAMiicDataCount
00023c  e3500000          CMP      r0,#0
000240  1a000003          BNE      |L1.596|
;;;109    				rIICCON = 0x6f;                 //Resumes IIC operation with NOACK in case of S5X532 Cameara  
000244  e3a0006f          MOV      r0,#0x6f
000248  e59f12b8          LDR      r1,|L1.1288|
00024c  e5810000          STR      r0,[r1,#0]
000250  ea000002          B        |L1.608|
;;;110    			else 
;;;111    				rIICCON = 0xef;                 //Resumes IIC operation with ACK
                  |L1.596|
000254  e3a000ef          MOV      r0,#0xef
000258  e59f12a8          LDR      r1,|L1.1288|
00025c  e5810000          STR      r0,[r1,#0]
;;;112    			break;
                  |L1.608|
000260  ea000046          B        |L1.896|
;;;113    		case CAMWRDATA:
;;;114    			if((_CAMiicDataCount--)==0) {
                  |L1.612|
000264  e59f0298          LDR      r0,|L1.1284|
000268  e5900000          LDR      r0,[r0,#0]  ; _CAMiicDataCount
00026c  e2401001          SUB      r1,r0,#1
000270  e59f028c          LDR      r0,|L1.1284|
000274  e5902000          LDR      r2,[r0,#0]  ; _CAMiicDataCount
000278  e5801000          STR      r1,[r0,#0]  ; _CAMiicDataCount
00027c  e3520000          CMP      r2,#0
000280  1a000008          BNE      |L1.680|
;;;115    				rIICSTAT = 0xd0;                //stop MasTx condition 
000284  e3a000d0          MOV      r0,#0xd0
000288  e59f1278          LDR      r1,|L1.1288|
00028c  e5810004          STR      r0,[r1,#4]
;;;116    				rIICCON  = 0xef;                //resumes IIC operation.
000290  e3a000ef          MOV      r0,#0xef
000294  e1c11000          BIC      r1,r1,r0
000298  e5810000          STR      r0,[r1,#0]
;;;117    				Delay(2);                       //wait until stop condtion is in effect. # need the time 2440:Delay(1), 24A0: Delay(2)
00029c  e3a00002          MOV      r0,#2
0002a0  ebfffffe          BL       Delay
;;;118    									//The pending bit will not be set after issuing stop condition.
;;;119    				break;    
0002a4  ea000035          B        |L1.896|
;;;120    			}
;;;121    			rIICDS = _CAMiicData[_CAMiicPt++];        //_iicData[0] has dummy.
                  |L1.680|
0002a8  e59f024c          LDR      r0,|L1.1276|
0002ac  e5900000          LDR      r0,[r0,#0]  ; _CAMiicPt
0002b0  e2801001          ADD      r1,r0,#1
0002b4  e59f2240          LDR      r2,|L1.1276|
0002b8  e5821000          STR      r1,[r2,#0]  ; _CAMiicPt
0002bc  e59f123c          LDR      r1,|L1.1280|
0002c0  e7d10000          LDRB     r0,[r1,r0]
0002c4  e59f123c          LDR      r1,|L1.1288|

⌨️ 快捷键说明

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