以下是我写的FIFO(AL422B)的程序,不知道哪里出错了。求解答。。。。。。。(我是想用OV760+FIFO的采集图片的,但是调试的时候调不出来)
说明:操作平台为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);
}
一周热门 更多>