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

📄 init.h

📁 这是本人参加FREESCAL最牛的智能小车程序
💻 H
字号:
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
//uchar *ADValue[8];
/*********************pwminit01(舵机)200hz****************/
void init_pwm(void){
  PWME=0x00;		       //设置开通pwm。 1:允许使用 0:禁止
  PWMPOL=0xff;		     //设置输出极性,1:开始为高电平0:开始为低电平
  PWMCLK=0b00111000;   //PWM_CON01-SA,PWM2,3-SB ;PWM4-SA
  //PWMCLK_PCLK0=0;		 //设置是否使用SA,SB时钟。1:使用SA,SB 0:使用A,B
  //PWMCLK_PCLK1=0;	   //设置是否使用SA,SB时钟。1:使用SA,SB 0:使用A,B
  PWMPRCLK=0x22;       //设置A,B时钟的分频系数(A:2分频。B:4分频)8/2=4M
  PWMCAE=0x00;		     //设置左对齐,还是中间对齐。0:左对齐1:中间对齐
  PWMCTL_CON01=1;		   //pwm控制寄存器。可以合并两个8位的成16位的(合并1,0 pwm)	
  PWMSCLA=1;           //SA=A/2/=2M;
  PWMSCLB=5;	         ////SB=B/2/10=200K
  PWMPER01=40000;      //给通道0,1设置period值  frequency=50HZ
  PWMDTY01=1100;       //给通道0,1设置duty值  设置占空比 50%
  PWMPER2=200;         //frequency=SB/200=1K
  PWMDTY2=110;
  //PWMPER3=200;         //frequency=SB/200=1K
  //PWMDTY3=100;
  PWMSDN=0x00;		     //设置特殊情况pwm的工作。一般不需要设置
  DDRP=0xff;		       //设置io端口为输出
  PWME_PWME1=1;		     //设置开通pwm。 1:允许使用 0:禁止
  PWME_PWME2=1;        //启动PWM2  motor
 // PWME_PWME3=1;
}
/*************************PORT_INIT****************************////
void port_init(void){   //PORTH,A are input 中间8个用PB显示
  DDRA = 0X00;
  DDRM = 0x00;
  DDRH = 0x00;
  PTH = 0Xff;          //最外面两个和第二排接PM
  PTM = 0X00;
  ATD0DIEN_IEN0=1;
  ATD0DIEN_IEN1=1;
  ATD0DIEN_IEN2=1;
  ATD0DIEN_IEN3=1;
  ATD0DIEN_IEN4=1;       //the 2 sensors below
  ATD0DIEN_IEN5=1;
  PORTAD0=0XFF;
  DDRB = 0XFF;
  PORTA = 0XFF;
  PORTB = 0XFF;
}
/******************AD_INIT***************************///// 
/* void AD_Init(void){ 
    ATD0CTL2 = 0xC0;         //AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止
    ATD0CTL3 = 0x00;        // 8 bit AD 
    ATD0CTL4 = 0x83;        // 8 bit 10010111        if bus clock=48m,   48/(24*2)=1M; 
    ATD0CTL5 = 0x30; 
    ATD0DIEN = 0x00;        // ATD analog input disable 
    ADValue[0] = &ATD0DR0H; 
    ADValue[1] = &ATD0DR1H; 
    ADValue[2] = &ATD0DR2H; 
    ADValue[3] = &ATD0DR3H; 
    ADValue[4] = &ATD0DR4H; 
    ADValue[5] = &ATD0DR5H; 
    ADValue[6] = &ATD0DR6H; 
    ADValue[7] = &ATD0DR7H; 
}   */
/*********IC1定时器初始化测速******************************/
void IC1_init(void) {
     TIOS=0X00;           //  ECT通道0为IC工作方式
     TSCR1_TEN=1;         //timer enable 
     TCTL4=0b00001100;   //PT1 capture on any edge
     //ICSYS_BUFEN=1;
     //ICSYS_LATQ=1;
     MCCTL_MCZI=1;  
     ICPAR_PA1EN=1;  //PA1 counter is enable
     MCCTL_MODMC=0;
     MCCTL_MCPR0=1;  //prescale factor is 4
     MCCTL_MCPR1=0;  //F=2M 
     MCCNT=64000;   //period =64000/2M=32ms  */
     MCCTL_MCEN=1;  //modules counter in enable
     MCFLG_MCZF=1;
}
/********************RTI**************************/// 
void init_RTI(void){
  CRGINT = 0x80;																				   
  RTICTL = 0x69;           //2**10分频 48HZ
  }
/***************timer to check sensor*******************************///  
void timer_init(void) {
  TSCR1 = 0x80;      // Timer enable 
  TSCR2 = 0x81;      // 1/4dedived (1/24M)*4=1/6 enable time overflow Interrupt 
}





















 

⌨️ 快捷键说明

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