中级会员
- 积分
- 237
- 威望
- 151
- 贡献
- 68
- 兑换币
- 0
- 注册时间
- 2012-8-12
- 在线时间
- 9 小时
|
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#define ROW 40
#define COLUMN 150
#define ROW_START 0
#define ROW_MAX 240
unsigned char Buffer[ROW][COLUMN];
//unsigned char Buffer_Temp[ROW][COLUMN];
unsigned char SampleFlag=0 ;
unsigned char Interval;
unsigned int m=0;
unsigned int n=0;
unsigned int Line=0;
unsigned char flag,g;
/***************************************************
** 函数名称: PLL_Init
** 功能描述: 时钟初始化函数
** 说明:
****************************************************/
void PLL_Init(void)
{
CLKSEL=0x00; //160mhz
PLLCTL_PLLON=1;
SYNR=0XC0 | 0X09;
REFDV=0X80 | 0X01;
POSTDIV=0X00;
_asm(nop);
_asm(nop);
while(0==CRGFLG_LOCK);//锁相环锁定
CLKSEL_PLLSEL=1;//选定外部时钟
}
/***************************************************
** 函数名称: TIM_Init
** 功能描述: 行场中断初始化函数
** 说明:
****************************************************/
void TIM_Init(void)
{
TIOS=0x00; //外部输入捕捉 0,1 通道
TCTL4=0x09; //通道0上升沿触发,通道 1 下降沿触发
TSCR1=0x80; //使能
TIE=0x03; //通道 0,1 中断使能
TFLG1=0xFF; //清中断标志位
}
/***************************************************
** 函数名称: IO_Init
** 功能描述: IO口初始化函数
** 说明:
****************************************************/
void IO_Init(void)
{
DDRA=0X00;
}
/***************************************************
** 函数名称: SCI_Init
** 功能描述: 串口初始化函数
** 说明:
****************************************************/
void SCI_Init()
{
SCI0BD=0x2b; //115200bps Baud Rate=BusClock/(16*SCIBD)
SCI0CR1=0; //正常8位模式,无奇偶校验
SCI0CR2=0X2C; //发送允许 接受中断允许
}
/**************************************************
** 函数名称: SCI_Write
** 功能描述: 给串行口写一个字符数据
** 输 入: SendChar为写入字符
** 输 出: 无
** 说明:
***************************************************/
void SCI_Write(unsigned char SendChar)
{
while (!(SCI0SR1&0x80));
SCI0DRH=0;
SCI0DRL=SendChar;
}
/**************************************************
** 函数名称: Image_Binaryzation
** 功能描述: 图像数据二值化
** 输 入: row
** 输 出: 无
** 说明:
***************************************************/
/*void Image_Binaryzation(unsigned int row) //二值化程序
{
unsigned char *p_Image;
unsigned char *q_Image;
q_Image=&Buffer_Temp[row][0];
for(p_Image=&Buffer[row][0];p_Image<=&Buffer[row][COLUMN-1];p_Image++)
{*(q_Image++)=*p_Image; }
} */
/**************************************************
** 函数名称: Process
** 功能描述: 图像数据处理
** 输 入: 无
** 输 出: 无
** 说明:
***************************************************/
void Process()
{
unsigned int i,j;
for(i=0;i<ROW;i++)
{
for(j=0;j<COLUMN;j++)
{
SCI_Write(Buffer[i][j]) ;
}
SCI_Write(0x0D);
SCI_Write(0X0A);
}
g=1;
}
/***************************************************
** 函数名称: main
** 功能描述: 主函数
** 说明:
****************************************************/
void main(void)
{
/* put your own code here */
PLL_Init();
TIM_Init();
IO_Init();
SCI_Init();
EnableInterrupts;
for(;;)
{
if(flag==1)
{ DisableInterrupts;
if(g==0)
{
Process();
g=1;
}
}
// _FEED_COP(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}
/**************************************************
** 函数名称: 中断处理函数
** 功能描述: 行中断处理函数
** 输 入: 无
** 输 出: 无
** 说明:
***************************************************/
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 8 PT0_Interrupt()
{
TFLG1_C0F=1;
Line++;
if ( SampleFlag == 0 || Line<ROW_START || Line>ROW_MAX )
{
return;
}
/*if(Line<=132) Interval=12;
else if(Line>132&&Line<=200) Interval=8;
else if(Line>200&&Line<=248) Interval=6;*/
if(99<Line&&Line<140)
{
Buffer[m][0]=PORTA; //Buffer[m][n+0]=PORTA; 14 0 14
Buffer[m][1]=PORTA; //Buffer[m][n+1]=PORTA;
Buffer[m][2]=PORTA; //Buffer[m][n+2]=PORTA;
Buffer[m][3]=PORTA; //Buffer[m][n+3]=PORTA;
Buffer[m][4]=PORTA; //Buffer[m][n+4]=PORTA;
Buffer[m][5]=PORTA; //Buffer[m][n+5]=PORTA;
Buffer[m][6]=PORTA; //Buffer[m][n+6]=PORTA;
Buffer[m][7]=PORTA; //Buffer[m][n+7]=PORTA;
Buffer[m][8]=PORTA; //Buffer[m][n+8]=PORTA;
Buffer[m][9]=PORTA; //Buffer[m][n+9]=PORTA;
Buffer[m][10]=PORTA; //Buffer[m][n+10]=PORTA;
Buffer[m][11]=PORTA; //Buffer[m][n+11]=PORTA;
Buffer[m][12]=PORTA; //Buffer[m][n+12]=PORTA;
Buffer[m][13]=PORTA; //Buffer[m][n+13]=PORTA;
Buffer[m][14]=PORTA; //Buffer[m][n+14]=PORTA;
Buffer[m][15]=PORTA; //Buffer[m][n+15]=PORTA;
Buffer[m][16]=PORTA; //Buffer[m][n+16]=PORTA;
Buffer[m][17]=PORTA; //Buffer[m][n+17]=PORTA;
Buffer[m][18]=PORTA; //Buffer[m][n+18]=PORTA;
Buffer[m][19]=PORTA; //Buffer[m][n+19]=PORTA;
Buffer[m][20]=PORTA; //Buffer[m][n+20]=PORTA;
Buffer[m][21]=PORTA; //Buffer[m][n+21]=PORTA;
Buffer[m][22]=PORTA; //Buffer[m][n+22]=PORTA;
Buffer[m][23]=PORTA; //Buffer[m][n+23]=PORTA;
Buffer[m][24]=PORTA; //Buffer[m][n+24]=PORTA;
Buffer[m][25]=PORTA; //Buffer[m][n+25]=PORTA;
Buffer[m][26]=PORTA; //Buffer[m][n+26]=PORTA;
Buffer[m][27]=PORTA; //Buffer[m][n+27]=PORTA;
Buffer[m][28]=PORTA; //Buffer[m][n+28]=PORTA;
Buffer[m][29]=PORTA; //Buffer[m][n+29]=PORTA;
Buffer[m][30]=PORTA; //Buffer[m][n+30]=PORTA;
Buffer[m][31]=PORTA; //Buffer[m][n+31]=PORTA;
Buffer[m][32]=PORTA; //Buffer[m][n+32]=PORTA;
Buffer[m][33]=PORTA; //Buffer[m][n+33]=PORTA;
Buffer[m][34]=PORTA; //Buffer[m][n+34]=PORTA;
Buffer[m][35]=PORTA; //Buffer[m][n+35]=PORTA;
Buffer[m][36]=PORTA; //Buffer[m][n+36]=PORTA;
Buffer[m][37]=PORTA; //Buffer[m][n+37]=PORTA;
Buffer[m][38]=PORTA; //Buffer[m][n+38]=PORTA;
Buffer[m][39]=PORTA; //Buffer[m][n+39]=PORTA;
Buffer[m][40]=PORTA; //Buffer[m][n+40]=PORTA;
Buffer[m][41]=PORTA; //Buffer[m][n+41]=PORTA;
Buffer[m][42]=PORTA; //Buffer[m][n+42]=PORTA;
Buffer[m][43]=PORTA; //Buffer[m][n+43]=PORTA;
Buffer[m][44]=PORTA; //Buffer[m][n+44]=PORTA;
Buffer[m][45]=PORTA; //Buffer[m][n+45]=PORTA;
Buffer[m][46]=PORTA; //Buffer[m][n+46]=PORTA;
Buffer[m][47]=PORTA; //Buffer[m][n+47]=PORTA;
Buffer[m][48]=PORTA; //Buffer[m][n+48]=PORTA;
Buffer[m][49]=PORTA; //Buffer[m][n+49]=PORTA;
Buffer[m][50]=PORTA; //Buffer[m][n+50]=PORTA;
Buffer[m][51]=PORTA; //Buffer[m][n+51]=PORTA;
Buffer[m][52]=PORTA; //Buffer[m][n+52]=PORTA;
Buffer[m][53]=PORTA; //Buffer[m][n+53]=PORTA;
Buffer[m][54]=PORTA; //Buffer[m][n+54]=PORTA;
Buffer[m][55]=PORTA; //Buffer[m][n+55]=PORTA;
Buffer[m][56]=PORTA; //Buffer[m][n+56]=PORTA;
Buffer[m][57]=PORTA; //Buffer[m][n+57]=PORTA;
Buffer[m][58]=PORTA; //Buffer[m][n+58]=PORTA;
Buffer[m][59]=PORTA; //Buffer[m][n+59]=PORTA;
Buffer[m][60]=PORTA; //Buffer[m][n+60]=PORTA;
Buffer[m][61]=PORTA; //Buffer[m][n+61]=PORTA;
Buffer[m][62]=PORTA; //Buffer[m][n+62]=PORTA;
Buffer[m][63]=PORTA; //Buffer[m][n+63]=PORTA;
Buffer[m][64]=PORTA; //Buffer[m][n+64]=PORTA;
Buffer[m][65]=PORTA; //Buffer[m][n+65]=PORTA;
Buffer[m][66]=PORTA; //Buffer[m][n+66]=PORTA;
Buffer[m][67]=PORTA; //Buffer[m][n+67]=PORTA;
Buffer[m][68]=PORTA; //Buffer[m][n+68]=PORTA;
Buffer[m][69]=PORTA; //Buffer[m][n+69]=PORTA;
Buffer[m][70]=PORTA; //Buffer[m][n+0]=PORTA;
Buffer[m][71]=PORTA; //Buffer[m][n+1]=PORTA;
Buffer[m][72]=PORTA; //Buffer[m][n+2]=PORTA;
Buffer[m][73]=PORTA; //Buffer[m][n+3]=PORTA;
Buffer[m][74]=PORTA; //Buffer[m][n+4]=PORTA;
Buffer[m][75]=PORTA; //Buffer[m][n+5]=PORTA;
Buffer[m][76]=PORTA; //Buffer[m][n+6]=PORTA;
Buffer[m][77]=PORTA; //Buffer[m][n+7]=PORTA;
Buffer[m][78]=PORTA; //Buffer[m][n+8]=PORTA;
Buffer[m][79]=PORTA; //Buffer[m][n+9]=PORTA;
Buffer[m][80]=PORTA; //Buffer[m][n+10]=PORTA;
Buffer[m][81]=PORTA; //Buffer[m][n+11]=PORTA;
Buffer[m][82]=PORTA; //Buffer[m][n+12]=PORTA;
Buffer[m][83]=PORTA; //Buffer[m][n+13]=PORTA;
Buffer[m][84]=PORTA; //Buffer[m][n+14]=PORTA;
Buffer[m][85]=PORTA; //Buffer[m][n+15]=PORTA;
Buffer[m][86]=PORTA; //Buffer[m][n+16]=PORTA;
Buffer[m][87]=PORTA; //Buffer[m][n+17]=PORTA;
Buffer[m][88]=PORTA; //Buffer[m][n+18]=PORTA;
Buffer[m][89]=PORTA; //Buffer[m][n+19]=PORTA;
Buffer[m][90]=PORTA; //Buffer[m][n+20]=PORTA;
Buffer[m][91]=PORTA; //Buffer[m][n+21]=PORTA;
Buffer[m][92]=PORTA; //Buffer[m][n+22]=PORTA;
Buffer[m][93]=PORTA; //Buffer[m][n+23]=PORTA;
Buffer[m][94]=PORTA; //Buffer[m][n+24]=PORTA;
Buffer[m][95]=PORTA; //Buffer[m][n+25]=PORTA;
Buffer[m][96]=PORTA; //Buffer[m][n+26]=PORTA;
Buffer[m][97]=PORTA; //Buffer[m][n+27]=PORTA;
Buffer[m][98]=PORTA; //Buffer[m][n+28]=PORTA;
Buffer[m][99]=PORTA; //Buffer[m][n+29]=PORTA;
Buffer[m][100]=PORTA; //Buffer[m][n+30]=PORTA;
Buffer[m][101]=PORTA; //Buffer[m][n+31]=PORTA;
Buffer[m][102]=PORTA; //Buffer[m][n+32]=PORTA;
Buffer[m][103]=PORTA; //Buffer[m][n+33]=PORTA;
Buffer[m][104]=PORTA; //Buffer[m][n+34]=PORTA;
Buffer[m][105]=PORTA; //Buffer[m][n+35]=PORTA;
Buffer[m][106]=PORTA; //Buffer[m][n+36]=PORTA;
Buffer[m][107]=PORTA; //Buffer[m][n+37]=PORTA;
Buffer[m][108]=PORTA; //Buffer[m][n+38]=PORTA;
Buffer[m][109]=PORTA; //Buffer[m][n+39]=PORTA;
Buffer[m][110]=PORTA; //Buffer[m][n+40]=PORTA;
Buffer[m][111]=PORTA; //Buffer[m][n+41]=PORTA;
Buffer[m][112]=PORTA; //Buffer[m][n+42]=PORTA;
Buffer[m][113]=PORTA; //Buffer[m][n+43]=PORTA;
Buffer[m][114]=PORTA; //Buffer[m][n+44]=PORTA;
Buffer[m][115]=PORTA; //Buffer[m][n+45]=PORTA;
Buffer[m][116]=PORTA; //Buffer[m][n+46]=PORTA;
Buffer[m][117]=PORTA; //Buffer[m][n+47]=PORTA;
Buffer[m][118]=PORTA; //Buffer[m][n+48]=PORTA;
Buffer[m][119]=PORTA; //Buffer[m][n+49]=PORTA;
Buffer[m][120]=PORTA; //Buffer[m][n+50]=PORTA;
Buffer[m][121]=PORTA; //Buffer[m][n+51]=PORTA;
Buffer[m][122]=PORTA; //Buffer[m][n+52]=PORTA;
Buffer[m][123]=PORTA; //Buffer[m][n+43]=PORTA;
Buffer[m][124]=PORTA; //Buffer[m][n+44]=PORTA;
Buffer[m][125]=PORTA; //Buffer[m][n+45]=PORTA;
Buffer[m][126]=PORTA; //Buffer[m][n+46]=PORTA;
Buffer[m][127]=PORTA; //Buffer[m][n+47]=PORTA;
Buffer[m][128]=PORTA; //Buffer[m][n+48]=PORTA;
Buffer[m][129]=PORTA; //Buffer[m][n+49]=PORTA;
Buffer[m][130]=PORTA; //Buffer[m][n+30]=PORTA;
Buffer[m][131]=PORTA; //Buffer[m][n+31]=PORTA;
Buffer[m][132]=PORTA; //Buffer[m][n+32]=PORTA;
Buffer[m][133]=PORTA; //Buffer[m][n+33]=PORTA;
Buffer[m][134]=PORTA; //Buffer[m][n+34]=PORTA;
Buffer[m][135]=PORTA; //Buffer[m][n+35]=PORTA;
Buffer[m][136]=PORTA; //Buffer[m][n+36]=PORTA;
Buffer[m][137]=PORTA; //Buffer[m][n+37]=PORTA;
Buffer[m][138]=PORTA; //Buffer[m][n+38]=PORTA;
Buffer[m][139]=PORTA; //Buffer[m][n+39]=PORTA;
Buffer[m][140]=PORTA; //Buffer[m][n+40]=PORTA;
Buffer[m][141]=PORTA; //Buffer[m][n+41]=PORTA;
Buffer[m][142]=PORTA; //Buffer[m][n+42]=PORTA;
Buffer[m][143]=PORTA; //Buffer[m][n+43]=PORTA;
Buffer[m][144]=PORTA; //Buffer[m][n+44]=PORTA;
Buffer[m][145]=PORTA; //Buffer[m][n+45]=PORTA;
Buffer[m][146]=PORTA; //Buffer[m][n+46]=PORTA;
Buffer[m][147]=PORTA; //Buffer[m][n+47]=PORTA;
Buffer[m][148]=PORTA; //Buffer[m][n+48]=PORTA;
Buffer[m][149]=PORTA; //Buffer[m][n+49]=PORTA;
m++;
if(m==150)
flag=1;
}
//Image_Binaryzation(m);
}
/**************************************************
** 函数名称: 中断处理函数
** 功能描述: 场中断处理函数
** 输 入: 无
** 输 出: 无
** 说明:
***************************************************/
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 9 PT1_Interrupt()
{
TFLG1_C1F=1;
TFLG1_C0F=1;
m=0;
Line=0;
SampleFlag=1;
}
|
|