智能车制作

标题: 主控芯片为MC9S12DG128的c语言程序 [打印本页]

作者: ice001    时间: 2010-3-4 21:46
标题: 主控芯片为MC9S12DG128的c语言程序
Main.c

#include <hidef.h>           /* common defines and macros */
#include <mc9s12db128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12db128b"
#include "define.h"
#include "init.h"

// variable used in video process
volatile unsigned char image_data[ROW_MAX][LINE_MAX] ;       // data array of picture
unsigned char black_x[ROW_MAX]           ;  // 0ne-dimensional array  
unsigned char row                          ;  // x-position of the array
unsigned char line                          ;  // y-position of the array
unsigned int  row_count                    ;  // row counter
                                                    unsigned char line_sample                   ;  // used to counter in AD
unsigned char row_image                    ;        
unsigned char line_temp                      ;  // temperary variable used in data transfer
unsigned char sample_data[LINE_MAX]  ; // used to save one-dimension array got in
interruption
// variables below are used in speed measure
Unsigned char pulse[5] ;               // used to save data in PA process
Unsigned char counter;                // temporary counter in Speed detect
Unsigned char cur_speed;              // current speed

short stand;               
short data;
unsigned char curve                         ; // valve used to decide straight or turn
short Bounds(short data);
short FuzzyLogic(short stand);
/*----------------------------------------------------------------------------*\
                              receive_sci              
\*----------------------------------------------------------------------------*/
unsigned char receive_sci(void)             // receive data through sci
{ unsigned char sci_data;
  while(SCI0SR1_RDRF!=1);     
  sci_data=SCI0DRL;           
  return sci_data;      
}

/*----------------------------------------------------------------------------*\
                              transmit_sci            
\*----------------------------------------------------------------------------*/
void transmit_sci(unsigned char transmit_data)  // send data through sci
{
  while(SCI0SR1_TC!=1);
  while(SCI0SR1_TDRE!=1);
  SCI0DRL=transmit_data;   
}  
/*****************************************************************************
***/
/*----------------------------------------------------------------------------*\
                              abs_sub           
\*----------------------------------------------------------------------------*/  
unsigned char abs_sub(unsigned char num1, unsigned char num2)
{  unsigned char  difference;
   
   if(num1>=num2){
     difference=num1-num2;
   }else{
     difference=num2-num1;
   }
  return difference;
}

void pwm_set(unsigned int dutycycle)
{  
  PWMDTY1=dutycycle&0x00FF;  
  PWMDTY0=dutycycle>>8;         
}   

void get_black_wire(void)        // used to extract black wire
{ unsigned char i;
  for(row=0;row<ROW_MAX;row++){
    for(line=LINE_MIN;line<LINE_MAX-3;line++){  
     if(image_data[row][line]>image_data[row][line+3]+VALVE){

      for(i=3;i<10;i++){
             if(image_data[row][line+i]+VALVE<image_data[row][line+i+3]){
               black_x[row]=line+i/2+2;
                i=10;
             }
        }
      line=LINE_MAX;
     } else{
        //black_x[row]=(black_x[row]/45)*78;
     }
    }  
  }
}
/*----------------------------------------------------------------------------*\

这是第一届上海交通大学CyberSmart技术报告里面的.
智能车论坛里有很多.
作者: 那边的天空    时间: 2010-5-5 15:23
这个代码不错
作者: zhangluhuixing    时间: 2010-5-5 18:39
加油




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2