智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1559|回复: 0
打印 上一主题 下一主题

用OV7670+FIFO(AL422B)采集图片,求大神帮忙看看FIFO的程序对不对?

[复制链接]

2

主题

4

帖子

0

精华

注册会员

Rank: 2

积分
132
威望
81
贡献
31
兑换币
34
注册时间
2015-7-2
在线时间
10 小时
毕业学校
华南师范大学
跳转到指定楼层
1#
发表于 2015-7-20 16:10:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

说明:操作平台为MC9S12芯片,频率为40MHZ。
FIFO(AL422B)的RE和OE引脚接在一起为CS
//FIFO 读复位
void AL422B_readreset(void) {
    AL422B_CS_L = 0;  //读使能
    AL422B_RRST_L =0;        //读指针复位
    AL422B_RCLK_L;          //至少需要一个时钟周期的跳变才能复位
    AL422B_RCLK_H;
    AL422B_RCLK_L;         
    AL422B_RCLK_H;
    AL422B_RRST_L = 1;
}

//FIFO 读数据
void AL422B_read(void) {

   AL422B_readreset(); //读复位.复位的下一个脉冲到来时,就输出有用数据了
   for(i_row=0;i_row<ROW;i_row++) {
      for(j_column=0;j_column<COLUMN;j_column++) {
              AL422B_RCLK_L;
                                  __asm();
                                 __asm();
                          AL422B_RCLK_H;
                                  __asm();
                                 __asm();
                    Image_Data[i_row][j_column]= PORTA;        ////在上升沿的时候读取数据
                            }
      }
    AL422B_CS_L = 1;//关闭读使能
}



// 中断处理函数
interrupt 8 void VSYN_Interrupt(void)
{
  if(0==OV7670_VSYN_C) {
     AL422B_WRST_L = 1;
      _asm();
     AL422B_WRST_L = 0; //写指针复位  
     AL422B_WEN_H = 1; //写使能,跟OV7670的HREF接到与非门,与非门的输出端接FIFO的/WE
      Delay(6000);
    AL422B_WEN_H = 1; //写使能
     AL422B_WRST_L = 1;
     OV7670_VSYN_C = 1;
     }
  else if(1==OV7670_VSYN_C) {
   AL422B_WEN_H = 0;  //禁止此时写数据
    OV7670_VSYN_C = 2;
     }
  TFLG1_C1F = 1; //清场中断
}


//延时函数
void Delay(uint time)               
{
    while(time--!=0);
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-10-2 08:40 , Processed in 0.147764 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表