微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 菜鸟请教,求各位大神帮我看一下这个程序(飞思卡尔mc9s12g128)

菜鸟请教,求各位大神帮我看一下这个程序(飞思卡尔mc9s12g128)

时间:10-02 整理:3721RD 点击:
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#define uint Vc           //车速
#define n 1  /*初始档位为低档位*/
#define SB01_1 PORTB_PB0
#define SB01_2 PORTB_PB1
#define SB03_1 PORTB_PB2
#define SB03_2 PORTB_PB3
#define SB04   PORTB_PB4
#define SB03   PORTB_PB5
#define SB02   PORTB_PB6
#define SB01_1_dir DDRB_DDRB0
#define SB01_2_dir DDRB_DDRB1
#define SB03_1_dir DDRB_DDRB2
#define SB03_2_dir DDRB_DDRB3
#define SB04_dir   DDRB_DDRB4
#define SB03_dir   DDRB_DDRB5
#define SB02_dir   DDRB_DDRB6
#define DT1 PORTA_PA0
#define DT2 PORTA_PA1
#define DT3 PORTA_PA2
#define DT4 PORTA_PA3
#define DT5 PORTA_PA4
#define DT1_dir DDRA_DDRA0
#define DT2_dir DDRA_DDRA1
#define DT3_dir DDRA_DDRA2
#define DT4_dir DDRA_DDRA3
#define DT5_dir DDRA_DDRA4
//***************************初始化按钮和电磁阀****************************//
void init_dt_sb(void)
{
  SB01_1_dir=0;
  SB01_2_dir=0;
  SB03_dir=0;
  SB03_1_dir=0;
  SB03_2_dir=0;
  SB04_dir=0;
  SB02_dir=0;
  DT1_dir=1;
  DT2_dir=1;
  DT3_dir=1;
  DT4_dir=1;
  DT5_dir=1;
}
/****************************延时程序*******************************/
void delay(uint k)
{
   uint i,j;
    for(i=k;i>0;i--)
      for(j=16000;j>0;j--)
        ;
}
/*定时器溢出中断模块*/
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void overflow(void)
{
    DT1=0;
    DT2=0;
    DT3=0;
}
#pragma CODE_SEG DEFAULT
/*主程序*/
void main(void)
{
DisableInterrupts;
init_dt_sb();
EnableInterrupts;
while(1)
{
    if((Vc<5)&n)
     {
      if(SB02==0)
      DT4=1;
     }
     if(SB02==0)
     {
      T=0;
      while(T++)
      {
        if(SB02==0)
          if(T>1000)
              break;
      }
     }  
     /*变速箱取力*/
     if(SB01_2==0)
     {
      delay(3000);
      if(SB01_2==0)
      {
        if(SB02==0)
        {
          DT1=1;
          DT3=1;
          delay(30);
          DT1=0;
          DT3=0;
        }
      }   
     }
     /*前平推(顶盖关闭)*/      
     if(SB01_1==0)
     {
      delay(3000);
      if(SB01_1==0)
      {
        if(SB02==0)
        {
          DT1=1;
          DT2=1;
          delay(30);
          DT1=0;
          DT2=0;
        }
      }
     }
     /*后平推(顶盖打开)*/
     if((SB03_1==10||SB03==0)&&(SB02==0))
     {
      DT1=1;
      DT7=1;
     }
     if(SB03_1==0)
     {
      delay(6);
      DT1=0;
      DT7=0;
     }
     /*尾门开启*/
     if(SB03_2==0)
     if(SB02==0)
     DT1=1;
     DT8=1;
     if(SB03_2==0)
     {
      delay(6);
      DT1=0;
      DT8=0;
     }
     /*尾门关闭*/
     if(SB04==0)
      DT5=1;
     T=0;
      while(T++)
      {
        SB02=0;
        if(T>1000)
         break;
      }
      if(SB04==0)
      DT5=0;
      /*尾门充气*/
}
}


已退回4积分

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top