中级会员
- 积分
- 213
- 威望
- 180
- 贡献
- 33
- 兑换币
- 0
- 注册时间
- 2010-12-1
- 在线时间
- 0 小时
|
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
unsigned int kp=90;
signed int c;
unsigned int a[11],a1[11],e[11];
unsigned int i,k,j=0;
signed int b[21];
signed int b1[21];
signed int b2[21];
void SetBusCLK_16M(void)
{
REFDV=1;
SYNR=1;
while(!(CRGFLG_LOCK==1));
CLKSEL_PLLSEL =1;
}
void ad(void) {
ATD0CTL2=0XC0; //启动ATD0转换,快速清零,没有中断,不受外部触发控制
ATD0CTL3=0X04; //转换序列长度为8,FIFO为1 ,无冻结模式
ATD0CTL4=0XE3; //16个AD周期,8分频,AD平率为4MHZ
ATD0CTL5=0X30; //从通道0开始的通道开始进行8次转换,左对齐方式存储结果
ATD0DIEN=0X00; //禁止数字量输入
ATD1CTL2=0XC0; //启动ATD1转换,快速清零,没有中断,不受外部触发控制
ATD1CTL3=0X04; //转换序列长度为 1,FIFO为0 ,无冻结模式
ATD1CTL4=0XE3; //16个AD周期,8分频,AD平率为4MHZ
ATD1CTL5=0X30; //单通道多次转换,AN0通道,左对齐方式存储结果
ATD1DIEN=0X00; //禁止数字量输入
}
void pwm(void) {
PWMPRCLK=0X00; //B,A都不分频,都为总线频率16MHZ
PWMSCLA=0X08; //对clock a 16分频,clock sa频率是1Mhz
PWMCLK_PCLK1=1; //选择clock sa 为PWM时钟源
PWMPOL_PPOL1=1; //先输出高电平
PWMCAE_CAE0=0; //输出为左对齐方式
PWMCTL_CON01=1;//0 1通道级联
PWMCNT01=0; //计数器清零
PWMPER01=1000;
PWMDTY01=720;
PWME_PWME1=1;
PWMCLK_PCLK5=1; //选择clock sa 为PWM时钟源
PWMPOL_PPOL5=1; //先输出高电平
PWMCAE_CAE5=0; //输出为左对齐方式
PWMCTL_CON45=1;//0 1通道级联
PWMCNT45=0; //计数器清零
PWMPER45=20000;
PWMDTY45=1680;
PWME_PWME5=1;
}
void pb(void){
signed int p1=0;
if((b[0]==0)&&(b[1]==0)&&(b[2]==0)&&(b[3]==0)&&(b[4]==0)&&(b[5]==0)&&(b[6]==0)&&(b[7]==0)&&(b[8]==0)&&(b[9]==0)&&(b[10]==0)&&(b[11]==0)&&(b[12]==0)&&(b[13]==0)&&(b[14]==0)&&(b[15]==0)&&(b[16]==0)&&(b[17]==0)&&(b[18]==0)&&(b[19]==0)&&(b[20]==0)) {
c=0;
} else{
for(j=0;j<21;j++){
if(b[j]!=0){
c=b[j];
}
}
}
p1=kp*c;
p1=1680+p1;
if(p1<1080)
p1=1080;
else if(p1>2280)
p1=2280;
PWMDTY45=p1;
}
void main(void) {
SetBusCLK_16M();
pwm();
ad();
for(i=0;i<1000;i++){
while(ATD0STAT1_CCF0==0);
a1[0]=ATD0DR0H;
while(ATD0STAT1_CCF1==0);
a1[1]=ATD0DR1H;
while(ATD0STAT1_CCF2==0);
a1[2]=ATD0DR2H;
while(ATD0STAT1_CCF3==0);
a1[3]=ATD0DR3H;
while(ATD0STAT1_CCF4==0);
a1[4]=ATD0DR4H;
while(ATD0STAT1_CCF5==0);
a1[5]=ATD0DR5H;
while(ATD0STAT1_CCF6==0);
a1[6]=ATD0DR6H;
while(ATD0STAT1_CCF7==0);
a1[7]=ATD0DR7H;
while(ATD1STAT1_CCF0==0);
a1[8]=ATD1DR0H;
while(ATD1STAT1_CCF1==0);
a1[9]=ATD1DR1H;
while(ATD1STAT1_CCF2==0);
a1[10]=ATD1DR2H;
}
while(1){
while(ATD0STAT1_CCF0==0);
a[0]=ATD0DR0H;
while(ATD0STAT1_CCF1==0);
a[1]=ATD0DR1H;
while(ATD0STAT1_CCF2==0);
a[2]=ATD0DR2H;
while(ATD0STAT1_CCF3==0);
a[3]=ATD0DR3H;
while(ATD0STAT1_CCF4==0);
a[4]=ATD0DR4H;
while(ATD0STAT1_CCF5==0);
a[5]=ATD0DR5H;
while(ATD0STAT1_CCF6==0);
a[6]=ATD0DR6H;
while(ATD0STAT1_CCF7==0);
a[7]=ATD0DR7H;
while(ATD1STAT1_CCF0==0);
a[8]=ATD1DR0H;
while(ATD1STAT1_CCF1==0);
a[9]=ATD1DR1H;
while(ATD1STAT1_CCF2==0);
a[10]=ATD1DR2H;
if(a[0]<=70){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=(-10);b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if(a[1]<=66){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=(-8);b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if(a[2]<=70){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=(-6);b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if(a[3]<=59){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=(-4);b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if(a[4]<=86){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=(-2);b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if(a[5]<=49){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if(a[6]<=47){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=2;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if(a[7]<=84){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=4;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if(a[8]<=60){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=6;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if(a[9]<=60){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=8;b[19]=0;b[20]=0;
}
else if(a[10]<=60){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=10;
}
else if((a[0]<=99)&&(a[1]<=87)){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=(-9);b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if((a[1]<=87)&&(a[2]<=109)){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=(-7);b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if((a[2]<=109)&&(a[3]<=94)){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=(-5);b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if((a[3]<=94)&&(a[4]<=95)){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=(-3);b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if((a[4]<=95)&&(a[5]<=75)){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=(-1);b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if((a[5]<=75)&&(a[6]<=79)){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=1;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if((a[6]<=79)&&(a[7]<=75)){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=3;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if((a[7]<=75)&&(a[8]<=82)){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=5;b[16]=0;b[17]=0;b[18]=0;b[19]=0;b[20]=0;
}
else if((a[8]<=82)&&(a[9]<=75)){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=7;b[18]=0;b[19]=0;b[20]=0;
}
else if((a[9]<=75)&&(a[10]<=75)){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=0;b[18]=0;b[19]=9;b[20]=0;
}
else if((a[8]<=82)&&(a[9]<=75)){
for(i=0;i<11;i++){
b1[i]=b[i];
}
b[0]=0;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=0;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=0;b[16]=0;b[17]=7;b[18]=0;b[19]=0;b[20]=0;
}
pb();
}
} |
|