#include <hidef.h> /* common defines and macros */
#include <MC9S12XS128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
int a,b;
int i,input,sum;
int IO_new[10]={0},IO_old[10]={0};
int flag;
/*============================================
*函数名 : initiaPLL(void)
*功能 : 锁相环初始化48M
==============================================*/
void initiaPLL(void)
{
CLKSEL=0X00;
PLLCTL=0xe1;
SYNR=2; //PLLCLK =2*OSCCLK*(SYNR + 1)/(REFDV + 1)
REFDV=1;
PLLCTL=0X60;
asm NOP;
asm NOP;
asm NOP;
while((CRG***&0X08)==0); //时钟校正同步
CLKSEL=0X80;
}
/*=========================================
*函数名delay(int z)
*功能:延时程序
==========================================*/
void delay(int z) //48M时为1ms
{
int i,j;
for(i=0;i<z;i++)
for(j=0;j<10000;j++);
}
/*===============================================================
*函数名 :PWM_init()
*功能:初始化输入口,PORTB PORTE为输入,将传感器状态输入到单片机 通道45舵机 通道23,1后轮电机
=================================================================*/
void PWM_init()
{
PWME=0x00; //关PWM
PWMPRCLK = 0X22; //总线周期8分频,6MHz
PWMSCLA = 0X03; //再次分频,1MHz ,为周期为1us
PWMCLK_PCLK5=1; //选择CLOCKSA时钟
PWMPOL=0xff; //开始输出高电平
PWMCAE_CAE5=0; //左对齐
PWMCTL_CON45=1; //级联
PWMPER45=10000; //频率=CLOCKSA/PWMPER 5 =100HZ
PWMDTY45=800; //占空比=PWMDTY5/PWMPER5 =12%
PWME_PWME5=1;
PWMSCLB=0X03; //再次分频,1MHz ,为周期为1us
PWMCLK_PCLK3=1; //选择CLOCKSB时钟
PWMPOL=0xff; //开始输出高电平
PWMCAE_CAE3=0; //左对齐
PWMCTL_CON23=1; //级连
PWMPER23=1000; //频率=CLOCKSB/PWMPER3 =1kHZ
PWMDTY23=430; //占空比=PWMDTY3/PWMPER3
PWME_PWME3=1;
PWMDTY1=0; //PWM1口输出低电平
PWME_PWME1=1;
}
/*=========================================
*函数名:PORT_init()
*功能:初始化输入口
==========================================*/
#include <MC9S12XS128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
int a,b;
int i,input,sum;
int IO_new[10]={0},IO_old[10]={0};
int flag;
/*============================================
*函数名 : initiaPLL(void)
*功能 : 锁相环初始化48M
==============================================*/
void initiaPLL(void)
{
CLKSEL=0X00;
PLLCTL=0xe1;
SYNR=2; //PLLCLK =2*OSCCLK*(SYNR + 1)/(REFDV + 1)
REFDV=1;
PLLCTL=0X60;
asm NOP;
asm NOP;
asm NOP;
while((CRG***&0X08)==0); //时钟校正同步
CLKSEL=0X80;
}
/*=========================================
*函数名delay(int z)
*功能:延时程序
==========================================*/
void delay(int z) //48M时为1ms
{
int i,j;
for(i=0;i<z;i++)
for(j=0;j<10000;j++);
}
/*===============================================================
*函数名 :PWM_init()
*功能:初始化输入口,PORTB PORTE为输入,将传感器状态输入到单片机 通道45舵机 通道23,1后轮电机
=================================================================*/
void PWM_init()
{
PWME=0x00; //关PWM
PWMPRCLK = 0X22; //总线周期8分频,6MHz
PWMSCLA = 0X03; //再次分频,1MHz ,为周期为1us
PWMCLK_PCLK5=1; //选择CLOCKSA时钟
PWMPOL=0xff; //开始输出高电平
PWMCAE_CAE5=0; //左对齐
PWMCTL_CON45=1; //级联
PWMPER45=10000; //频率=CLOCKSA/PWMPER 5 =100HZ
PWMDTY45=800; //占空比=PWMDTY5/PWMPER5 =12%
PWME_PWME5=1;
PWMSCLB=0X03; //再次分频,1MHz ,为周期为1us
PWMCLK_PCLK3=1; //选择CLOCKSB时钟
PWMPOL=0xff; //开始输出高电平
PWMCAE_CAE3=0; //左对齐
PWMCTL_CON23=1; //级连
PWMPER23=1000; //频率=CLOCKSB/PWMPER3 =1kHZ
PWMDTY23=430; //占空比=PWMDTY3/PWMPER3
PWME_PWME3=1;
PWMDTY1=0; //PWM1口输出低电平
PWME_PWME1=1;
}
/*=========================================
*函数名:PORT_init()
*功能:初始化输入口
==========================================*/