智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2385|回复: 1
打印 上一主题 下一主题

CCD采集程序问题

[复制链接]

9

主题

89

帖子

0

精华

金牌会员

金牌会员

Rank: 6Rank: 6

积分
1704
QQ
威望
352
贡献
940
兑换币
4
注册时间
2010-10-25
在线时间
206 小时
跳转到指定楼层
1#
发表于 2011-5-7 14:28:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#define ROW_VALUE 40
#define COLUMN_VALUE 80
#define hang_space  5
unsigned char image[ROW_VALUE][COLUMN_VALUE];     //用于摄像头采集的二维数组
unsigned int  hang_counter=0;                    //记录行中断次数
unsigned int  i_counter=0;
unsigned int  j_counter=0;

/************时钟初始化***********/
void  PLL_init(void)
{
    CLKSEL = 0X00;   //disengage PLL to system
    PLLCTL_PLLON = 1;   //turn on PLL
    SYNR = 3;  //SYDIV=0X18=24                     
    REFDV=1; //REFDIV=0X07=7
    POSTDIV = 0x00;       //pllclock=2*osc*(1+SYDIV)/(1+REFDIV)=64MHz;
    _asm(nop);          //BUS CLOCK=32M
    _asm(nop);
    _asm(nop);         
    _asm(nop);
    _asm(nop);         
    _asm(nop);
    _asm(nop);
    _asm(nop);         
    _asm(nop);
    _asm(nop);
    _asm(nop);
    _asm(nop);         
    _asm(nop);
    while(!(CRGFLG_LOCK==1));   //when pll is steady ,then use it;
    CLKSEL_PLLSEL = 1;    //engage PLL to system;  
}
         
/***********延时程序*******/   
   
void delay(unsigned int i)  //延迟(5/8)*i个us  16M
{
  unsigned int j=10;
  while(i--)
  {
    while(j--)
    {
      ;
    }
  }
}
/************外部AD(8M,PP7口)***********/
void ADP_init(void)
{
  PWME=0X00;                 //允许寄存器,PWM信号关闭
  PWMCAE_CAE7=0;             //居中对齐寄存器,选择输出模式为左对齐输出模式
  PWMCNT7=0;                //通道计数寄存器,计数器清0
  PWMPOL_PPOL7=1;            //极性寄存器,先输出高电平,计数到DTY时,反转电平
  PWMPER7=2;               //周期寄存器
  PWMDTY7=1;               //占空比寄存器
  PWMCLK=0x00;               //时钟选择寄存器,选中7通道为clockB  
  PWMPRCLK=0x11;             //预分频时钟寄存器 ,2分频=8Mhz
  PWME=0x80;                 //使能PP7口
}
/**************串口初始化*****************/

void SCI_init(void)   
{   
    SCI0BD=208;         //9600bps  Baud Rate=BusClock/(16*SCIBD)   
    SCI0CR1=0;         //正常8位模式,无奇偶校验   
    SCI0CR2=0X2C;      //发送允许   接受中断允许     
}

/************写SCI数据*******************/   
void SciWrite(unsigned char sendchar)   
{   
    while (!(SCI0SR1&0x80));   
    SCI0DRH=0;   
    SCI0DRL=sendchar;   
}

/************ECT初始化*********/
void ECT_init(void)
{
  TIOS=0x00; //外部输入捕捉1,2通道
  TCTL4=0x24; //通道1为上升沿触发,通道2为下降沿触发
  TSCR1=0x80;//定时器正常工作
  TIE_C2I=1;//场中断允许
  TIE_C1I=1;//行中断允许
}



void main(void)
{
  
  PLL_init();
  SCI_init();
  ECT_init();
  ADP_init();
  

EnableInterrupts;
                                   
  for(;;)
  {
    SciWrite(image[i_counter][j_counter]);  
  } /* loop forever */
  /* please make sure that you never leave main */
}

#pragma CODE_SEG __NEAR_SEG NON_BANKED       //指示该程序在不分页区
/*************中断函数*************/
void interrupt 9 Port1_interrupt(void)  //行中断
{  
   TFLG1_C1F=1;      //清中断标志位
   hang_counter++;      //记录行中断次数
   delay(20);        //延时8us,每行的前7us为无效信号
       for(i_counter=0;i_counter<ROW_VALUE;j_counter++)
           for(j_counter=0;j_counter<COLUMN_VALUE;j_counter++)
           {
              
             image[i_counter][j_counter]=PORTB;    //从B口中获取AD转换后的数据
               
           }
         
      
     
}
void interrupt 10 Port2_interrupt(void)      //场中断
  {
    TFLG1_C2F=1;   //清除场中断标志
    j_counter=0;
    if(hang_counter>24)
      {
i_counter=0;
      }
   
  }

我用串口看传回的数据,可啥都没,不知啥问题,望给与解答!

3

主题

16

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1135
威望
373
贡献
618
兑换币
0
注册时间
2010-12-28
在线时间
72 小时
2#
发表于 2011-11-27 00:17:10 | 只看该作者
看不懂啊!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-28 06:29 , Processed in 0.042153 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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