📄 camproset.txt
字号:
|L1.1316|
000524 00000000 DCD ||.constdata$1||
|L1.1320|
000528 000000b6 DCD ||.constdata$1|| + 182
|L1.1324|
00052c 6f6c420a DCB "\nBlo"
000530 54206b63 DCB "ck T"
000534 6e452058 DCB "X En"
000538 2e646564 DCB "ded."
00053c 000a2e2e DCB "..\n\0"
ENDP
Camera_ReadBlock PROC
;;;180 void Camera_ReadBlock(void)
;;;181 {
000540 e92d4010 STMFD sp!,{r4,lr}
;;;182 U32 i;
;;;183 static U8 rdata[256];
;;;184
;;;185 pISR_IIC = (unsigned)Cam_IICInt;
000544 e51f003c LDR r0,|L1.1296|
000548 e51f103c LDR r1,|L1.1300|
00054c e5810f8c STR r0,[r1,#0xf8c]
;;;186 rINTMSK &= ~(BIT_IIC);
000550 e51f004c LDR r0,|L1.1292|
000554 e5900008 LDR r0,[r0,#8]
000558 e3c00680 BIC r0,r0,#0x8000000
00055c e51f1058 LDR r1,|L1.1292|
000560 e5810008 STR r0,[r1,#8]
;;;187
;;;188 //Enable ACK, Prescaler IICCLK=PCLK/512, Enable interrupt, Transmit clock value Tx clock=IICCLK/16
;;;189 rIICCON = (1<<7) | (1<<6) | (1<<5) | (0xf);
000564 e3a000ef MOV r0,#0xef
000568 e2811644 ADD r1,r1,#0x4400000
00056c e5810000 STR r0,[r1,#0]
;;;190
;;;191 rIICADD = 0x10; //24A0 slave address = [7:1]
000570 e3a00010 MOV r0,#0x10
000574 e1c11000 BIC r1,r1,r0
000578 e5810008 STR r0,[r1,#8]
;;;192 rIICSTAT = 0x10; //IIC bus data output enable(Rx/Tx)
00057c e3a00010 MOV r0,#0x10
000580 e1c11000 BIC r1,r1,r0
000584 e5810004 STR r0,[r1,#4]
;;;193 rIICSDADLY = (1<<2)|(3); // SDAOUT has 5clock cycle delay
000588 e3a00007 MOV r0,#7
00058c e1c11000 BIC r1,r1,r0
000590 e5810010 STR r0,[r1,#0x10]
;;;194
;;;195 switch(CAMTYPE) {
000594 e51f0084 LDR r0,|L1.1304|
000598 e5900000 LDR r0,[r0,#0] ; CAMTYPE
00059c e3500000 CMP r0,#0
0005a0 0a000004 BEQ |L1.1464|
0005a4 e3500001 CMP r0,#1
0005a8 0a000021 BEQ |L1.1588|
0005ac e3500003 CMP r0,#3
0005b0 1a000074 BNE |L1.1928|
0005b4 ea00003d B |L1.1712|
;;;196 case CAM_OV7620:
;;;197 for(i=0; i<(sizeof(Ov7620_YCbCr8bit)/2);i++)
|L1.1464|
0005b8 e3a04000 MOV r4,#0
|L1.1468|
0005bc e3540041 CMP r4,#0x41
0005c0 2a00000a BCS |L1.1520|
0005c4 ea000001 B |L1.1488|
|L1.1480|
0005c8 e2844001 ADD r4,r4,#1
0005cc eafffffa B |L1.1468|
;;;198 Rd_CamIIC(CAMIICID, Ov7620_YCbCr8bit[i][0], &rdata[i]);
|L1.1488|
0005d0 e59f01cc LDR r0,|L1.1956|
0005d4 e0802004 ADD r2,r0,r4
0005d8 e51f00c4 LDR r0,|L1.1308|
0005dc e7d01084 LDRB r1,[r0,r4,LSL #1]
0005e0 e51f00c8 LDR r0,|L1.1312|
0005e4 e5900000 LDR r0,[r0,#0] ; CAMIICID
0005e8 ebfffffe BL Rd_CamIIC
0005ec eafffff5 B |L1.1480|
;;;199 for(i=0; i<(sizeof(Ov7620_YCbCr8bit)/2);i++)
|L1.1520|
0005f0 e3a04000 MOV r4,#0
|L1.1524|
0005f4 e3540041 CMP r4,#0x41
0005f8 2a00000c BCS |L1.1584|
0005fc ea000001 B |L1.1544|
|L1.1536|
000600 e2844001 ADD r4,r4,#1
000604 eafffffa B |L1.1524|
;;;200 Uart_Printf("Addr: 0x%2x, W: 0x%2x, R: 0x%2x\n", Ov7620_YCbCr8bit[i][0], Ov7620_YCbCr8bit[i][1], rdata[i]);
|L1.1544|
000608 e59f0194 LDR r0,|L1.1956|
00060c e7d03004 LDRB r3,[r0,r4]
000610 e51f00fc LDR r0,|L1.1308|
000614 e0800084 ADD r0,r0,r4,LSL #1
000618 e5d02001 LDRB r2,[r0,#1]
00061c e51f0108 LDR r0,|L1.1308|
000620 e7d01084 LDRB r1,[r0,r4,LSL #1]
000624 e28f0f5f ADR r0,|L1.1960|
000628 ebfffffe BL _printf
00062c eafffff3 B |L1.1536|
;;;201 break;
|L1.1584|
000630 ea000055 B |L1.1932|
;;;202 case CAM_OV7620_16:
;;;203 for(i=0; i<(sizeof(Ov7620_Yuv16bit)/2);i++)
|L1.1588|
000634 e3a04000 MOV r4,#0
|L1.1592|
000638 e354001a CMP r4,#0x1a
00063c 2a00000a BCS |L1.1644|
000640 ea000001 B |L1.1612|
|L1.1604|
000644 e2844001 ADD r4,r4,#1
000648 eafffffa B |L1.1592|
;;;204 Rd_CamIIC(CAMIICID, Ov7620_Yuv16bit[i][0], &rdata[i]);
|L1.1612|
00064c e59f0150 LDR r0,|L1.1956|
000650 e0802004 ADD r2,r0,r4
000654 e51f0138 LDR r0,|L1.1316|
000658 e7d01084 LDRB r1,[r0,r4,LSL #1]
00065c e51f0144 LDR r0,|L1.1312|
000660 e5900000 LDR r0,[r0,#0] ; CAMIICID
000664 ebfffffe BL Rd_CamIIC
000668 eafffff5 B |L1.1604|
;;;205 for(i=0; i<(sizeof(Ov7620_Yuv16bit)/2);i++)
|L1.1644|
00066c e3a04000 MOV r4,#0
|L1.1648|
000670 e354001a CMP r4,#0x1a
000674 2a00000c BCS |L1.1708|
000678 ea000001 B |L1.1668|
|L1.1660|
00067c e2844001 ADD r4,r4,#1
000680 eafffffa B |L1.1648|
;;;206 Uart_Printf("Addr: 0x%2x, W: 0x%2x, R: 0x%2x\n", Ov7620_Yuv16bit[i][0], Ov7620_Yuv16bit[i][1], rdata[i]);
|L1.1668|
000684 e59f0118 LDR r0,|L1.1956|
000688 e7d03004 LDRB r3,[r0,r4]
00068c e51f0170 LDR r0,|L1.1316|
000690 e0800084 ADD r0,r0,r4,LSL #1
000694 e5d02001 LDRB r2,[r0,#1]
000698 e51f017c LDR r0,|L1.1316|
00069c e7d01084 LDRB r1,[r0,r4,LSL #1]
0006a0 e28f0f40 ADR r0,|L1.1960|
0006a4 ebfffffe BL _printf
0006a8 eafffff3 B |L1.1660|
;;;207 break;
|L1.1708|
0006ac ea000036 B |L1.1932|
;;;208 case CAM_S5X532:
;;;209 for(i=0; i<(sizeof(S5X532_YCbCr8bit_TV)/2);i++) {
|L1.1712|
0006b0 e3a04000 MOV r4,#0
|L1.1716|
0006b4 e354005d CMP r4,#0x5d
0006b8 2a000017 BCS |L1.1820|
0006bc ea000001 B |L1.1736|
|L1.1728|
0006c0 e2844001 ADD r4,r4,#1
0006c4 eafffffa B |L1.1716|
;;;210 if(S5X532_YCbCr8bit_TV[i][0] == 0xec)
|L1.1736|
0006c8 e51f01a8 LDR r0,|L1.1320|
0006cc e7d00084 LDRB r0,[r0,r4,LSL #1]
0006d0 e35000ec CMP r0,#0xec
0006d4 1a000008 BNE |L1.1788|
;;;211 Wr_CamIIC(CAMIICID, S5X532_YCbCr8bit_TV[i][0], S5X532_YCbCr8bit_TV[i][1]);
0006d8 e51f01b8 LDR r0,|L1.1320|
0006dc e0800084 ADD r0,r0,r4,LSL #1
0006e0 e5d02001 LDRB r2,[r0,#1]
0006e4 e51f01c4 LDR r0,|L1.1320|
0006e8 e7d01084 LDRB r1,[r0,r4,LSL #1]
0006ec e51f01d4 LDR r0,|L1.1312|
0006f0 e5900000 LDR r0,[r0,#0] ; CAMIICID
0006f4 ebfffffe BL Wr_CamIIC
0006f8 ea000006 B |L1.1816|
;;;212 else
;;;213 Rd_CamIIC(CAMIICID, S5X532_YCbCr8bit_TV[i][0], &rdata[i]);
|L1.1788|
0006fc e59f00a0 LDR r0,|L1.1956|
000700 e0802004 ADD r2,r0,r4
000704 e51f01e4 LDR r0,|L1.1320|
000708 e7d01084 LDRB r1,[r0,r4,LSL #1]
00070c e51f01f4 LDR r0,|L1.1312|
000710 e5900000 LDR r0,[r0,#0] ; CAMIICID
000714 ebfffffe BL Rd_CamIIC
;;;214 }
|L1.1816|
000718 eaffffe8 B |L1.1728|
;;;215 for(i=0; i<(sizeof(S5X532_YCbCr8bit_TV)/2);i++) {
|L1.1820|
00071c e3a04000 MOV r4,#0
|L1.1824|
000720 e354005d CMP r4,#0x5d
000724 2a000016 BCS |L1.1924|
000728 ea000001 B |L1.1844|
|L1.1836|
00072c e2844001 ADD r4,r4,#1
000730 eafffffa B |L1.1824|
;;;216 if(S5X532_YCbCr8bit_TV[i][0] == 0xec)
|L1.1844|
000734 e51f0214 LDR r0,|L1.1320|
000738 e7d00084 LDRB r0,[r0,r4,LSL #1]
00073c e35000ec CMP r0,#0xec
000740 1a000005 BNE |L1.1884|
;;;217 Uart_Printf("Page: 0x%2x\n", S5X532_YCbCr8bit_TV[i][1]);
000744 e51f0224 LDR r0,|L1.1320|
000748 e0800084 ADD r0,r0,r4,LSL #1
00074c e5d01001 LDRB r1,[r0,#1]
000750 e28f0074 ADR r0,|L1.1996|
000754 ebfffffe BL _printf
000758 ea000008 B |L1.1920|
;;;218 else
;;;219 Uart_Printf("Addr: 0x%2x, W: 0x%2x, R: 0x%2x\n", S5X532_YCbCr8bit_TV[i][0], S5X532_YCbCr8bit_TV[i][1], rdata[i]);
|L1.1884|
00075c e59f0040 LDR r0,|L1.1956|
000760 e7d03004 LDRB r3,[r0,r4]
000764 e51f0244 LDR r0,|L1.1320|
000768 e0800084 ADD r0,r0,r4,LSL #1
00076c e5d02001 LDRB r2,[r0,#1]
000770 e51f0250 LDR r0,|L1.1320|
000774 e7d01084 LDRB r1,[r0,r4,LSL #1]
000778 e28f0028 ADR r0,|L1.1960|
00077c ebfffffe BL _printf
;;;220 }
|L1.1920|
000780 eaffffe9 B |L1.1836|
;;;221 break;
|L1.1924|
000784 ea000000 B |L1.1932|
;;;222 default:
;;;223 break;
|L1.1928|
000788 e1a00000 NOP
;;;224 }
;;;225
;;;226 rINTMSK |= BIT_IIC;
|L1.1932|
00078c e51f0288 LDR r0,|L1.1292|
000790 e5900008 LDR r0,[r0,#8]
000794 e3800680 ORR r0,r0,#0x8000000
000798 e51f1294 LDR r1,|L1.1292|
00079c e5810008 STR r0,[r1,#8]
;;;227 }
0007a0 e8bd8010 LDMFD sp!,{r4,pc}
|L1.1956|
0007a4 00000000 DCD ||.bss$2||
|L1.1960|
0007a8 72646441 DCB "Addr"
0007ac 7830203a DCB ": 0x"
0007b0 2c783225 DCB "%2x,"
0007b4 203a5720 DCB " W: "
0007b8 32257830 DCB "0x%2"
0007bc 52202c78 DCB "x, R"
0007c0 7830203a DCB ": 0x"
0007c4 0a783225 DCB "%2x\n"
0007c8 00000000 DCB "\0\0\0\0"
|L1.1996|
0007cc 65676150 DCB "Page"
0007d0 7830203a DCB ": 0x"
0007d4 0a783225 DCB "%2x\n"
0007d8 00000000 DCB "\0\0\0\0"
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -