⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 知能车源码,CCD采样道路,飞思卡尔智能车比赛源码.
💻 C
字号:
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg128.h>     /* derivative information */
#include "lib.c"     
#include "funtion.h"

#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"


void s_ini(void)    //系统初始化
{
  uchar tmp;
  
  SYNR=3;
  REFDV=1;  
  PLLCTL=0x50;    
  delay(100);
  
  CLKSEL|=0x80;   //超频到48M, 总线24M
 
 // INITRG = 0x00;  /* lock registers block to 0x0000 */
 // INITRM = 0x39;  /* lock Ram to end at 0x3FFF */
 // INITEE = 0x09;  /* lock EEPROM block to end at 0x0fff */
 
  delay(100);
    
  PORTB=0xff;
  DDRB=0xff;
  
  DDRA=0x00;      //A口设置为输入
  
  PTH=0x00;
  DDRH=0x68;    //PH1=input
  
  PERH=0x97;    //enable pull 
  PPSH=0x80;    //PH7,PH6,PH5 pull up, PH4 pull down
  
  PIEH=0x00;    //使能遥控中断 PH7
  
  PTP =0x00;
  DDRP=0x30;    //PP4,PP5 output
    
  DDRA=0x00;
  PUCR=0x01;    //Port A enable pull up
  
  PTJ=0x00;
  DDRJ=0x00;
  PERJ=0x00;    //diable pull
  PPSJ=0x80;    
  PIEJ=0xc0;    //enable PJ interrupt
  
  PTT=0x00;
  DDRT=0x00;    //PT7-PT4 =input
  PERT=0x40;    //enable pull for PT6 
  
 // PACN3=0x00;
 // PACN2=0x00; 
 // PACTL=0x40;    //enable pulse couter B
 // DLYCT=0x00;   //  
 
  TIOS=0x80;     //ch 7 compare mode
  OC7M=0x00;
  OC7D=0x00;
  
//  PACTL=0x74;
  TSCR2=0x0f;    //when ch7 compare rst pre div =128
  TC7=50000;     //timer for 200mS       //*/
  
  TSCR1=0x80;    //enable timer 
  TCTL1=0x00;
  TCTL2=0x00;
  TCTL3=0x20;
  TCTL4=0x00;   //通道6下降沿输入捕捉
  TIE  =0xC0;   //中断使能
  
  ini_at45();     //初始化SPI0  
  
  PWME=0xc3;     //enable ch1, ch7  
  PWMPOL=0xc3;   //high level effect 
  
  PWMDTY6=(uchar)(3000>>8);    
  PWMDTY7=(uchar)(3000&0x00ff);    //占空比
  PWMPER6=(uchar)(40000>>8);         // 舵机
  PWMPER7=(uchar)(40000&0x00ff);    //周期
   
  PWMDTY0=(uchar)(0>>8);    
  PWMDTY1=(uchar)(0&0x00ff);    //占空比     //
  PWMPER0=(uchar)(2000>>8);         //电机 
  PWMPER1=(uchar)(2000&0x00ff);    //周期
  
  PWMCLK=0x00;
  PWMPRCLK=0x40;   //SB=Fck/1  SA=Fck/8
  PWMCTL=0x90;     //4_16 bit PWM       //*/ 
    
  SCI0BDH=0;       //串口0初始化
  SCI0BDL=35;     //set bandrate=57600bps
  SCI0CR1=0x00;
  SCI0CR2=0x2c;   //enable to sent and receive
  tmp=SCI0SR1; 
  
  ATD0CTL2=0xc0; //enable ATD, interrupt
  ATD0CTL3=0x08;
  ATD0CTL4=0x80; //8bit,
  
  ATD1CTL2=0xc0; //enable ATD, interrupt
  ATD1CTL3=0x08;
  ATD1CTL4=0x80; //8bit,
    
  ATD0DIEN=0x00;    //AD口数字输入使能,使能CCD输入
  ATD1DIEN=0x80;    //CCD二元输入
                                  
  ECLKDIV=0x5C;   //EEPROM时钟分频器   
                
  INTCR=0xc0;     //行同步中断, 下降沿触发, 
                
  delay(10);  
  SE_s;         //舵机供电
 }



interrupt 20 void sci0(void)   //SCI0 interrupt
{
 uchar sta,das;
 sta=SCI0SR1;   //read the state
 das=SCI0DRL;
 if(sta&0x40)   //sent finish
   {
   
   } 
 if(sta&0x20)  //receve a data
   {
     speed(das*8);
     SCI0DRL=das;
     
   }
}



interrupt 15 void ch7(void)   //ch7 interrupt   266mS
{   
  TFLG1=0x80;       //clr flag
  
  if(m_en)          //LED falsh
     PORTB^=0xf0;   
}


void choice(void)   //choice a funtion
{
 uchar kv;
 uchar pp=0;
 uchar tmp=0;
 
V1: kv=0;
 wu(CN1[0],CN1[1],CN1[2],CN1[3]); //display
 set(2);
 go(0,pp);    //flash
  
 for(;;)   //loop
  {
   kv=key();
   
   if(kv==5&&pp)    //last
       pp--,go(0,pp);
   else if(kv==6&&pp<3) //next
       pp++,go(0,pp);
   
   if(kv==8||kv==10)    //enter
     {
      if(pp==0)   //进入比赛
         {
          match();
          goto V1;
         }
      else if(pp==1)    //传感受器测方式
         {
          text();
          goto V1;
         } 
      else if(pp==2)    //CCD 测试
        {
         t_ccd();
         goto V1;
        }
      else if(pp==3)    //参数设定
         {
          setting();
          goto V1;
         }           
     }           //*/ 
  }  
}

void main(void) {
  /* put your own code here */
    
  volatile uint t1=0;
  
  s_ini();	//系统初始化
  
  EnableInterrupts;
  
  get_s();      //获取设定参数     
  choice();   //shoice
 
  for(;;) {} /* wait forever */
  /* please make sure that you never leave this function */
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -