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

📄 ov7670.txt

📁 STM32+ov7670
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM C/C++ Compiler, 4.1 [Build 481]
; commandline ArmCC [--debug -c --asm --interleave -o.\OBJ\ov7670.o --depend=.\OBJ\ov7670.d --cpu=Cortex-M3 --apcs=interwork -O0 -I..\Demo -I.\HARDWARE\EXTI -I.\HARDWARE\KEY -I.\HARDWARE\LCD -I.\HARDWARE\LED -I.\HARDWARE\TIMER -I.\HARDWARE\WDG -I.\SYSTEM\delay -I.\SYSTEM\sys -I.\SYSTEM\usart -I.\USER -IC:\Keil\ARM\INC -IC:\Keil\ARM\INC\ST\STM32F10x --omf_browse=.\OBJ\ov7670.crf USER\ov7670.c]
                          THUMB

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  wrOV7670Reg PROC
;;;188    //返回:1-成功	0-失败
;;;189    uchar wrOV7670Reg(uchar regID, uchar regDat)
000000  b570              PUSH     {r4-r6,lr}
;;;190    {
000002  4605              MOV      r5,r0
000004  460c              MOV      r4,r1
;;;191    	startSCCB();
000006  f7fffffe          BL       startSCCB
;;;192    	if(0==SCCBwriteByte(0x42))
00000a  2042              MOVS     r0,#0x42
00000c  f7fffffe          BL       SCCBwriteByte
000010  b918              CBNZ     r0,|L1.26|
;;;193    	{
;;;194    		stopSCCB();
000012  f7fffffe          BL       stopSCCB
;;;195    		return(0);
000016  2000              MOVS     r0,#0
                  |L1.24|
;;;196    	}
;;;197    	Delay_nUS(100);
;;;198      	if(0==SCCBwriteByte(regID))
;;;199    	{
;;;200    		stopSCCB();
;;;201    		return(0);
;;;202    	}
;;;203    	Delay_nUS(100);
;;;204      	if(0==SCCBwriteByte(regDat))
;;;205    	{
;;;206    		stopSCCB();
;;;207    		return(0);
;;;208    	}
;;;209      	stopSCCB();
;;;210    	
;;;211      	return(1);
;;;212    }
000018  bd70              POP      {r4-r6,pc}
                  |L1.26|
00001a  2064              MOVS     r0,#0x64              ;197
00001c  f7fffffe          BL       delay_us
000020  4628              MOV      r0,r5                 ;198
000022  f7fffffe          BL       SCCBwriteByte
000026  b918              CBNZ     r0,|L1.48|
000028  f7fffffe          BL       stopSCCB
00002c  2000              MOVS     r0,#0                 ;201
00002e  e7f3              B        |L1.24|
                  |L1.48|
000030  2064              MOVS     r0,#0x64              ;203
000032  f7fffffe          BL       delay_us
000036  4620              MOV      r0,r4                 ;204
000038  f7fffffe          BL       SCCBwriteByte
00003c  b918              CBNZ     r0,|L1.70|
00003e  f7fffffe          BL       stopSCCB
000042  2000              MOVS     r0,#0                 ;207
000044  e7e8              B        |L1.24|
                  |L1.70|
000046  f7fffffe          BL       stopSCCB
00004a  2001              MOVS     r0,#1                 ;211
00004c  e7e4              B        |L1.24|
;;;213    ////////////////////////////
                          ENDP

                  rdOV7670Reg PROC
;;;215    //返回:1-成功	0-失败
;;;216    uchar rdOV7670Reg(uchar regID, uchar *regDat)
00004e  b570              PUSH     {r4-r6,lr}
;;;217    {
000050  4605              MOV      r5,r0
000052  460c              MOV      r4,r1
;;;218    	//通过写操作设置寄存器地址
;;;219    	startSCCB();
000054  f7fffffe          BL       startSCCB
;;;220    	if(0==SCCBwriteByte(0x42))
000058  2042              MOVS     r0,#0x42
00005a  f7fffffe          BL       SCCBwriteByte
00005e  b918              CBNZ     r0,|L1.104|
;;;221    	{
;;;222    		stopSCCB();
000060  f7fffffe          BL       stopSCCB
;;;223    		return(0);
000064  2000              MOVS     r0,#0
                  |L1.102|
;;;224    	}
;;;225    	Delay_nUS(100);
;;;226      	if(0==SCCBwriteByte(regID))
;;;227    	{
;;;228    		stopSCCB();
;;;229    		return(0);
;;;230    	}
;;;231    	stopSCCB();
;;;232    	
;;;233    	Delay_nUS(100);
;;;234    	
;;;235    	//设置寄存器地址后,才是读
;;;236    	startSCCB();
;;;237    	if(0==SCCBwriteByte(0x43))
;;;238    	{
;;;239    		stopSCCB();
;;;240    		return(0);
;;;241    	}
;;;242    	Delay_nUS(100);
;;;243      	*regDat=SCCBreadByte();
;;;244      	noAck();
;;;245      	stopSCCB();
;;;246      	return(1);
;;;247    }
000066  bd70              POP      {r4-r6,pc}
                  |L1.104|
000068  2064              MOVS     r0,#0x64              ;225
00006a  f7fffffe          BL       delay_us
00006e  4628              MOV      r0,r5                 ;226
000070  f7fffffe          BL       SCCBwriteByte
000074  b918              CBNZ     r0,|L1.126|
000076  f7fffffe          BL       stopSCCB
00007a  2000              MOVS     r0,#0                 ;229
00007c  e7f3              B        |L1.102|
                  |L1.126|
00007e  f7fffffe          BL       stopSCCB
000082  2064              MOVS     r0,#0x64              ;233
000084  f7fffffe          BL       delay_us
000088  f7fffffe          BL       startSCCB
00008c  2043              MOVS     r0,#0x43              ;237
00008e  f7fffffe          BL       SCCBwriteByte
000092  b918              CBNZ     r0,|L1.156|
000094  f7fffffe          BL       stopSCCB
000098  2000              MOVS     r0,#0                 ;240
00009a  e7e4              B        |L1.102|
                  |L1.156|
00009c  2064              MOVS     r0,#0x64              ;242
00009e  f7fffffe          BL       delay_us
0000a2  f7fffffe          BL       SCCBreadByte
0000a6  7020              STRB     r0,[r4,#0]            ;243
0000a8  f7fffffe          BL       noAck
0000ac  f7fffffe          BL       stopSCCB
0000b0  2001              MOVS     r0,#1                 ;246
0000b2  e7d8              B        |L1.102|
;;;248    
                          ENDP

                  OV7670_init PROC
;;;253    //返回1成功,返回0失败
;;;254    uchar OV7670_init(void)
0000b4  b538              PUSH     {r3-r5,lr}
;;;255    {
;;;256    	uchar temp;
;;;257    	
;;;258    	uint i=0;
0000b6  2400              MOVS     r4,#0
;;;259    
;;;260    	
;;;261    	InitSCCB();//io init..
0000b8  f7fffffe          BL       InitSCCB
;;;262    
;;;263    	temp=0x80;
0000bc  2080              MOVS     r0,#0x80
0000be  9000              STR      r0,[sp,#0]
;;;264    	if(0==wrOV7670Reg(0x12, temp)) //Reset SCCB
0000c0  f89d1000          LDRB     r1,[sp,#0]
0000c4  2012              MOVS     r0,#0x12
0000c6  f7fffffe          BL       wrOV7670Reg
0000ca  b908              CBNZ     r0,|L1.208|
;;;265    	{
;;;266    		return 0 ;
0000cc  2000              MOVS     r0,#0
                  |L1.206|
;;;267    		
;;;268    	}
;;;269    	while(0)
;;;270    	{
;;;271    		rdOV7670Reg(0x1C, &temp);
;;;272    		UART_Transmit(temp);
;;;273    		Delay_nMS(100);
;;;274    	}
;;;275    	Delay_nMS(10);
;;;276    
;;;277    	for(i=0;i<CHANGE_REG_NUM;i++)
;;;278    	{
;;;279    		if( 0 == wrOV7670Reg (change_reg[i][0],change_reg[i][1])   )
;;;280    		{
;;;281    			return 0;
;;;282    		}
;;;283    	}
;;;284    
;;;285    	return 0x01; //ok
;;;286    
;;;287    	
;;;288    } 
0000ce  bd38              POP      {r3-r5,pc}
                  |L1.208|
0000d0  bf00              NOP                            ;269
0000d2  bf00              NOP                            ;269
0000d4  200a              MOVS     r0,#0xa               ;275
0000d6  f7fffffe          BL       delay_ms
0000da  2400              MOVS     r4,#0                 ;277
0000dc  e00e              B        |L1.252|
                  |L1.222|
0000de  4a09              LDR      r2,|L1.260|
0000e0  eb0202c4          ADD      r2,r2,r4,LSL #3       ;279
0000e4  6852              LDR      r2,[r2,#4]            ;279
0000e6  b2d1              UXTB     r1,r2                 ;279
0000e8  4a06              LDR      r2,|L1.260|
0000ea  f8522034          LDR      r2,[r2,r4,LSL #3]     ;279
0000ee  b2d0              UXTB     r0,r2                 ;279
0000f0  f7fffffe          BL       wrOV7670Reg
0000f4  b908              CBNZ     r0,|L1.250|
0000f6  2000              MOVS     r0,#0                 ;281
0000f8  e7e9              B        |L1.206|
                  |L1.250|
0000fa  1c64              ADDS     r4,r4,#1              ;277
                  |L1.252|
0000fc  2cb0              CMP      r4,#0xb0              ;277
0000fe  d3ee              BCC      |L1.222|
000100  2001              MOVS     r0,#1                 ;285
000102  e7e4              B        |L1.206|
;;;289    
                          ENDP

                  |L1.260|
                          DCD      change_reg

                          AREA ||.constdata||, DATA, READONLY, ALIGN=2

                  change_reg
                          DCD      0x0000003a
                          DCD      0x00000004
                          DCD      0x00000040
                          DCD      0x000000d0
                          DCD      0x00000012
                          DCD      0x00000014
                          DCD      0x00000032
                          DCD      0x00000080
                          DCD      0x00000017
                          DCD      0x00000016
                          DCD      0x00000018
                          DCD      0x00000004
                          DCD      0x00000019
                          DCD      0x00000002
                          DCD      0x0000001a
                          DCD      0x0000007b
                          DCD      0x00000003
                          DCD      0x00000006
                          DCD      0x0000000c
                          DCD      0x00000000
                          DCD      0x0000003e
                          DCD      0x00000000
                          DCD      0x00000070
                          DCD      0x00000000
                          DCD      0x00000071
                          DCD      0x00000000
                          DCD      0x00000072
                          DCD      0x00000011
                          DCD      0x00000073
                          DCD      0x00000000
                          DCD      0x000000a2
                          DCD      0x00000002
                          DCD      0x00000011
                          DCD      0x00000002
                          DCD      0x0000007a
                          DCD      0x00000020
                          DCD      0x0000007b
                          DCD      0x0000001c
                          DCD      0x0000007c
                          DCD      0x00000028
                          DCD      0x0000007d
                          DCD      0x0000003c
                          DCD      0x0000007e
                          DCD      0x00000055
                          DCD      0x0000007f
                          DCD      0x00000068
                          DCD      0x00000080
                          DCD      0x00000076
                          DCD      0x00000081
                          DCD      0x00000080
                          DCD      0x00000082
                          DCD      0x00000088
                          DCD      0x00000083
                          DCD      0x0000008f

⌨️ 快捷键说明

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