|
#include <hidef.h>
#include <MC9S12XS128.h>
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
void delay();
int ii,jj;
unsigned int t,t1;
unsigned char sdata;
//------------------------------------------------
//------------------------------------------------
#define lie_end 260
#define hang_end 91
#define lie 52
unsigned char ab[lie+1];
void delay(int num)
{
unsigned int i,j;
for(i=0;i<num;i++)
for(j=0;j<58;j++);
}
unsigned char c_lie=0,g_lie=0;
unsigned int lie_count=0,hang_count=0,am;
unsigned char ta[lie][hang_end];
unsigned int get_n[]={ 16,29,41,52,62,71,79,86,92,98, //图像定距采集对应的摄像头行数
103,108,112,116,120,124,128,132,135,138,
141,144,147,150,153,156,159,162,165,168,
170,172,174,176,178,180,182,184,186,188,
190,192,194,196,198,200,202,204,206,208,
210,211,212,242,243,245,246,247,248,249,250};
unsigned char ts1,ts2, ge,shi;
void SciTx(unsigned char text);
void chuankou()
{
delay(1700);
ge=37%10;
shi=37/10;
//sdata=shi*16+ge;
//SciTx(sdata);
for(ii=1;ii<2;ii++)
{ ///第一次的调试的时候把40修改为2,校对调试助手的屏幕大小,当出现的数据刚刚一行时,说明串口调试助手的屏幕大小适合。
//当完成上面的操作后,把2修改为40,这时候就能够看到一幅图像的数据了。
for(jj=1;jj<90;jj++)
{
ts1=0;ts2=0;
if(ta[ii][jj]==1&&ta[ii][jj+1]==1) ts1=16;//&&ta[ii][jj]>20
jj++;
if(ta[ii][jj]==1&&ta[ii][jj+1]==1) ts2=1;//&&ta[ii][jj]>20
sdata=ts1+ts2;
SciTx(sdata);
}
}
for(;;) {}
}
void SciInit()
{
DDRM=0x01;
SCI0BDH=0x00|0x01;
SCI0BDL =0xA0;
SCI0CR2=0X2C;
SCI0CR1=0;
}
/*-------发射端程序----------------------*/
void SciTx(unsigned char text)
{
while (!(SCI0SR1&0x80));
SCI0DRH=0;
SCI0DRL=text;
}
void chaopin(void)
{
CLKSEL=0X00;
PLLCTL_PLLON=1;
SYNR =0xc0 | 0x07;
REFDV=0xc0 | 0x01;
POSTDIV=0x00;
_asm(nop);
_asm(nop);
_asm(nop);
_asm(nop);
while(!(CRGFLG_LOCK==1));
CLKSEL_PLLSEL =1;
}
void TIM_init(void)
{
PACTL=0X50;
PACNT=0X0000;
TIOS =0x00;
TSCR1=0x80;
TCTL4=0x18;
TIE=0x06;
TFLG1=0xFF;
}
void shijian(void)
{
PITCFLMT_PITE=0;
PITCE_PCE0=1;
PITLD0=9999;
PITMTLD0=5;
PITMUX=0X00;
PITINTE_PINTE0=1;
PITCFLMT_PITE=1;
}
//===========================================================================================
void main(void)
{
DDRA=0Xff;
DDRJ=0X02;
DDRK=0X30;
DisableInterrupts;
{
DDRB=0X01;
DDRM=0X00;
DDRJ=0XBF;
PTJ_PTJ6=1;
DDRS=0XEE;
PPSS=0X11;
PPSJ=0XFF;
}
chaopin();
TIM_init();
shijian();
SciInit();
EnableInterrupts;
{
unsigned int e,w;
for(e=1;e<6;e++)
for(w=0;w<10;w++);
}
DDRS=0XFF;
PPSS=0X11;
PPSJ=0XFF;
DDRB=0XFF;
DDRJ=0XfF;
DDRA=0Xf0;
for(;;)
{
chuankou();
/*这个函数一定要开启,串口调试方法
首先链接好线:通过USB转串口或者是MAX232,把芯片的S0与TXD接通,S1与RXD接通,共地线。
接着把接通芯片的电源,和摄像头的电源,同时保证摄像头和芯片的线连接正确,并保证摄像头看到完整的赛道。
把本程序拷入芯片里。打开串口调试助手,校对对应的串口端口,并选择十六进制显示。接下来的操作看上面的注释。
*/
}
}
//---------------------------------
#pragma CODE_SEG NON_BANKED
void interrupt 10 IC2ISR(void) {
TFLG1_C2F=1;
if(lie_count==get_n[c_lie]) {
delay(1);
for(hang_count=0;hang_count<=hang_end;hang_count++){
ta[c_lie][hang_count]=PORTA_PA0;//ATD0DR0L;
}
c_lie++;
}
lie_count++;
}
void interrupt 9 IC1ISR(void){
TFLG1_C1F=1;
hang_count=0;
lie_count=0;
c_lie=0;
}
void interrupt 66 PIT0Interrupt(void)
{
//chesudu=PACNT;
PITTF_PTF0=1;
PACNT=0X0000;
}
#pragma CODE_SEG DEFAULT
//接脚是行同步接pt2 场同步接pt1 视频线接AD0
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、以上是手创的配套程序
步骤按照 说明书一步一步来了,得不到应该得到的现象!!!!!!!!!!!很久了都没解决,自己一个人摸索摸索。。。。。。。。。。。。。。。。。真迷茫。。。。。。。。
串口采集到的数据时。。。现象是。。。
偶尔有一个FF 其余全部是000000000000000000000000000000000000000000000000000000000000000000我快疯了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
大神们帮帮忙啊!!!!!!!!!手上没采集卡,,,没电视棒,,怎么办????????????
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|