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

📄 c8051f330_camera.lst

📁 OV7670模组带转接板资料
💻 LST
📖 第 1 页 / 共 3 页
字号:
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 + -