📄 c8051f330_camera.lst
字号:
C51 COMPILER V9.00 C8051F330_CAMERA 09/22/2012 12:09:15 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE C8051F330_CAMERA
OBJECT MODULE PLACED IN .\obj\c8051f330_camera.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\c8051f330_camera.c BROWSE INCDIR(.\inc) DEBUG OBJECTEXTEND PRINT(.\o
-bj\c8051f330_camera.lst) OBJECT(.\obj\c8051f330_camera.obj)
line level source
1 /*******************************************************************************
2 * Copyright (C) 2010 - All Rights Reserved
3 *
4 * 软件作者: 骑飞家族
5 * 版权所有: 骑飞电子
6 * 创建日期: 2010年6月10日
7 * 软件历史: 2010年11月2日修改
8 * Version: 1.0
9 * Demo 淘宝地址:http://store.taobao.com/shop/view_shop.htm?asker=wangwang&shop_nick=qifeidianzi
10 **********************************************************************************************************
-************************************
11 懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒
-懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒
12 懒懒懒懒懒懒懒懒懒懒懒一懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒困一懒懒懒懒懒懒懒懒懒懒
-懒懒懒懒一一一一一一一懒懒懒懒懒懒懒
13 懒懒困一一一一懒一一一一一一二懒懒懒懒困一一一一一一一一懒懒懒懒懒懒懒懒懒四厲懒懒一一懒懒懒一懒懒懒懒懒懒
-懒懒懒一一一一四四一一一懒懒懒懒懒懒
14 懒懒懒懒懒懒一懒懒懒一二一懒懒懒懒懒懒一一一一四厲二一四懒一一懒懒懒懒懒四一一一一一一一一一一一懒懒懒懒懒
-懒懒懒四懒懒四一一一一厲懒懒懒懒懒懒
15 懒懒懒四厲厲一懒懒厲懒懒懒四懒懒懒懒懒懒懒懒懒懒懒困一懒一一懒懒懒懒懒懒懒一一厲厲一一厲厲厲一一懒懒懒懒懒
-懒厲厲厲厲厲厲一一厲厲厲懒懒懒懒懒懒
16 懒懒懒一懒二一一一一一一一一一一一懒懒懒懒懒懒懒懒二一一困懒懒懒懒懒懒懒懒一一一一一一一一一一四懒懒懒懒懒
-一一一一一一一一一一一一一一一懒懒懒
17 懒懒懒一一一一一厲二一一厲一懒厲懒懒懒懒懒懒懒懒懒一一一一一懒懒懒懒懒懒懒一一懒懒一一懒懒懒一困懒懒懒懒懒
-一一四懒懒懒懒一一懒懒困一一四懒懒懒
18 懒懒懒懒懒懒懒一困一懒一厲一懒懒懒懒懒懒懒懒懒懒懒困一懒懒一一懒懒懒懒懒懒一一一一一一一一一一厲懒懒懒懒懒
-懒懒懒懒懒懒懒一一厲懒懒懒懒懒懒懒懒
19 懒二一一一懒四困厲一一一厲一懒懒懒懒懒懒懒懒懒懒懒懒一一懒懒懒懒懒懒懒懒懒懒懒懒懒四一厲懒懒懒懒懒懒一懒懒
-懒懒懒懒懒懒懒一一厲懒懒懒懒懒懒懒懒
20 懒懒懒懒懒懒一懒懒懒懒懒一一懒懒懒懒懒懒懒懒懒懒懒懒厲一一一一一一困懒懒懒懒懒懒懒懒一一一一一一一一一懒懒
-懒懒懒困懒懒厲一一懒懒懒懒懒懒懒懒懒
21 懒懒懒懒一一一懒懒困一一一一懒懒懒懒懒懒懒懒懒懒懒懒懒懒一一一一一懒懒懒懒懒懒懒懒懒懒一一一一一一一懒懒懒
-懒懒懒懒一一一一四懒懒懒懒懒懒懒懒懒
22 懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒
-懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒懒
23 **********************************************************************************************************
-************************************/
24
25 #include <c8051f330.h>
26 #include <english_16x8.h>
27
28 ///////////////////////////////////////////////////////
29 #define BLACK 0x0000
30 #define BLUE 0x001F
31 #define RED 0xF800
32 #define GREEN 0x07E0
33 #define CYAN 0x07FF
34 #define MAGENTA 0xF81F
35 #define YELLOW 0xFFE0
36 #define WHITE 0xFFFF
37
38 #define AM 011
39 #define TIME 100
40
C51 COMPILER V9.00 C8051F330_CAMERA 09/22/2012 12:09:15 PAGE 2
41 #define SDA_IN() {P0MDOUT= 0X00;}
42 #define SDA_OUT() {P0MDOUT= 0XFF;}
43 //iic example transplant
44 #define SYSCLK 24500000
45 #define SMB_FREQUENCY 50000
46
47
48
49 #define WRITE 0x00
50 #define READ 0x01
51
52
53 #define EEPROM_ADDR 0x42
54
55 #define SMB_MTSTA 0xE0
56 #define SMB_MTDB 0xC0
57 #define SMB_MRDB 0x80
58
59
60 unsigned char* pSMB_DATA_IN;
61
62
63 unsigned char SMB_SINGLEBYTE_OUT;
64
65 unsigned char* pSMB_DATA_OUT;
66
67
68 unsigned char SMB_DATA_LEN;
69 unsigned char WORD_ADDR;
70
71
72 unsigned char TARGET;
73
74 bit SMB_BUSY=0;
75 bit SMB_RW;
76 bit SMB_SENDWORDADDR;
77 bit SMB_RANDOMREAD;
78 bit SMB_ACKPOLL;
79 unsigned char FAIL = 0;
80 unsigned long NUM_ERRORS;
81
82 sfr16 TMR3RL = 0x92;
83 sfr16 TMR3 = 0x94;
84 sbit Tft_RS_PIN=P0^6;
85 sbit Tft_WR_PIN=P0^7;
86 sbit Tft_RST_PIN=P0^4;
87
88
89 sbit I2C_SDA=P0^0;
90 sbit I2C_SCL=P0^1;
91 sbit Cmos_VSYNC=P0^5;
92 sbit Cmos_CS_PIN=P0^2;
93 sbit WR_CONTROL_PIN=P0^3;
94
95
96 void Ext_Interrupt_Init (void);
97
98 void Tft_Init(void);
99 void TftClear(unsigned int Color);
100 void Tft_WR_DATA16(unsigned int inputdata);
101 void TftWrite16(unsigned int index);
102 void TftWrite(unsigned int index,unsigned int inputdata);
C51 COMPILER V9.00 C8051F330_CAMERA 09/22/2012 12:09:15 PAGE 3
103 void TftWR_Str(unsigned int x,unsigned int y,unsigned char *s,unsigned int color,unsigned int xcolor);
104 void TftWR_SingleStr(unsigned char inputdata,unsigned int color,unsigned int xcolor);
105 void Tft_SetBackground(unsigned int StartX,unsigned int StartY,unsigned int LongX,unsigned int LongY);
106 void Tft_SetCursor(unsigned int Xpos, unsigned int Ypos);
107
108 unsigned char WrCmos7670(unsigned char RegAddress, unsigned char RegData);
109 unsigned char RdCmos7670Reg(unsigned char RegAddress, unsigned char *RegData);
110 void Cmos7670_Size(unsigned int Startx,unsigned int Starty,unsigned int width,unsigned int height);
111 void my_delay_ms(unsigned int time);
112 unsigned char Cmos7670_init(void);
113 void Set_Cmos7670Reg(void);
114
115 void delay_us(unsigned int time);
116 void delay_ms(unsigned int time);
117 void delay( unsigned long cnt);
118
119 ///////////////////////////////////////////
120 void InitI2C(void);
121
122 void SMBus_Init (void);
123 void OSCILLATOR_Init (void);
124 void Port_Init(void);
125
126 void Timer1_Init (void);
127 void Timer3_Init (void);
128 void SMBus_ISR (void);
129 void Timer3_ISR (void);
130
131 void SMB_Write (void);
132 void SMB_Read (void);
133
134
135
136 void main(void)
137 {
138 1
139 1 PCA0MD &= ~0x40;
140 1 OSCILLATOR_Init();
141 1 Port_Init();
142 1
143 1 Timer1_Init ();
144 1 Timer3_Init ();
145 1 SMBus_Init ();
146 1
147 1 WR_CONTROL_PIN=1;
148 1 Tft_Init( );
149 1 TftClear(BLACK);
150 1 TftWR_Str(60,70,"C8051F330 Camera",RED,BLACK);
151 1 TftWR_Str(60,100,"QI FEI DIAN ZI VER1.0",RED,BLACK);
152 1 TftWR_Str(60,130,"OV7670 Initializing......",RED,BLACK);
153 1 delay_ms(3000);
154 1
155 1 EIE1 |= 0x01;
156 1 EA = 1;
157 1
158 1 while(1!=Cmos7670_init());
159 1 delay_ms(3000);
160 1 TftClear(BLACK);
161 1 TftWR_Str(60,110,"OV7670 Init SUCCESS! ",RED,BLACK);
162 1 delay_ms(5000);
163 1 TftClear(BLACK);
164 1
C51 COMPILER V9.00 C8051F330_CAMERA 09/22/2012 12:09:15 PAGE 4
165 1 Ext_Interrupt_Init( );
166 1 EA = 1;
167 1 while(1);
168 1
169 1
170 1 }
171
172 void SMBus_Init (void)
173 {
174 1 SMB0CF = 0x5D;
175 1 SMB0CF |= 0x80;
176 1 }
177 void Timer1_Init (void)
178 {
179 1
180 1 #if ((SYSCLK/SMB_FREQUENCY/3) < 255)
181 1 #define SCALE 1
182 1 CKCON |= 0x08;
183 1 #elif ((SYSCLK/SMB_FREQUENCY/4/3) < 255)
#define SCALE 4
CKCON |= 0x01;
CKCON &= ~0x0A;
#endif
188 1
189 1 TMOD = 0x20;
190 1 TH1 = -(SYSCLK/SMB_FREQUENCY/SCALE/3);
191 1
192 1 TL1 = TH1;
193 1
194 1 TR1 = 1;
195 1 }
196
197 void Timer3_Init (void)
198 {
199 1 TMR3CN = 0x00;
200 1
201 1 CKCON &= ~0x40;
202 1
203 1 TMR3RL = -(SYSCLK/12/40);
204 1 TMR3 = TMR3RL;
205 1 EIE1 |= 0x80;
206 1 TMR3CN |= 0x04;
207 1 }
208
209
210
211 void OSCILLATOR_Init (void)
212 {
213 1 OSCICN = 0x83;
214 1 RSTSRC = 0x04;
215 1 }
216 void SMB_Write (void)
217 {
218 1 while (SMB_BUSY);
219 1 SMB_BUSY = 1;
220 1 SMB_RW = 0;
221 1 STA = 1;
222 1 }
223 void SMB_Read (void)
224 {
225 1 while (SMB_BUSY);
226 1 SMB_BUSY = 1;
C51 COMPILER V9.00 C8051F330_CAMERA 09/22/2012 12:09:15 PAGE 5
227 1 SMB_RW = 1;
228 1 STA = 1;
229 1 while (SMB_BUSY);
230 1 }
231
232 void Port_Init(void)
233 {
234 1
235 1 P0MDIN = 0xFF;
236 1 P1MDIN = 0XFF;
237 1 P0MDOUT= 0XFC;
238 1 P1MDOUT= 0XFF;
239 1 P0SKIP = 0X00;
240 1 P1SKIP = 0X00;
241 1 XBR0 = 0x04;
242 1 XBR1 = 0x40;
243 1 P0 = 0xFF;
244 1 }
245
246
247
248 void Ext_Interrupt_Init (void)
249 {
250 1 IT01CF = 0x0d;
251 1 IT0=1;
252 1 IE = 0x01;
253 1 }
254
255
256 void INT0_ISR (void) interrupt 0
257 {
258 1
259 1 EA=0;
260 1 IE0=0;
261 1
262 1 P0MDOUT= 0xff;
263 1 WR_CONTROL_PIN=1;
264 1 Cmos_CS_PIN=1;
265 1
266 1 TftWrite(0x0020,0x0000);
267 1 TftWrite(0x0021,0x013f);
268 1 TftWrite(0x0050,0x00);
269 1 TftWrite(0x0051,239);
270 1 TftWrite(0x0052,0x00);
271 1 TftWrite(0x0053,319);
272 1 TftWrite(0x0003,0x1018);
273 1 TftWrite16(0x0022);
274 1
275 1
276 1 Tft_RS_PIN=1;
277 1 Tft_WR_PIN=0;
278 1
279 1
280 1 WR_CONTROL_PIN=0;
281 1 Cmos_CS_PIN=0;
282 1
283 1 EA=1;
284 1
285 1 }
286
287 void SMBus_ISR (void) interrupt 7
288 {
C51 COMPILER V9.00 C8051F330_CAMERA 09/22/2012 12:09:15 PAGE 6
289 1
290 1 static char i;
291 1
292 1 static bit SEND_START = 0;
293 1
294 1 switch (SMB0CN & 0xF0)
295 1 {
296 2 case SMB_MTSTA:
297 2 SMB0DAT = TARGET;
298 2 SMB0DAT &= 0xFE;
299 2 SMB0DAT |= SMB_RW;
300 2 STA = 0;
301 2 i = 0;
302 2 break;
303 2 case SMB_MTDB:
304 2 if (ACK)
305 2 {
306 3 if (SEND_START)
307 3 {
308 4 STA = 1;
309 4 SEND_START = 0;
310 4 break;
311 4 }
312 3 if(SMB_SENDWORDADDR)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -