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

📄 main.c

📁 MC9S12DG128B中断的编写、舵机的控制、电机的控制等代码
💻 C
字号:
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"

//定义road 类的结构体,并初始化
struct
{
  byte led0;
  byte led1;
  byte led2;
  byte led3;
  byte led4;
  byte led5;
  byte led6;
  byte led7;
  byte led8;
  byte led9;
  byte led10;
  byte led11;  
}road={1,1,1,1,1,1,1,1,1,1,1,1};

//光电感应器初始化
void Led_init() 
{
  DDRH_DDRH7=0;   //LED0定义为输入
  DDRH_DDRH6=0;   //LED1
  DDRH_DDRH5=0;   //LED2
  DDRH_DDRH4=0;   //LED3
  DDRJ_DDRJ1=0;   //LED4
  DDRJ_DDRJ0=0;   //LED5
  DDRK_BIT5=0;    //LED6
  DDRK_BIT4=0;    //LED7
  DDRK_BIT3=0;    //LED8
  DDRK_BIT2=0;    //LED9
  DDRK_BIT1=0;    //LED10
  DDRK_BIT0=0;    //LED11
}


//读取光电感应器的状态
void Get_sensor() 
{
  road.led0=PTH_PTH7;
  road.led1=PTH_PTH6;  
  road.led2=PTH_PTH5;
  road.led3=PTH_PTH4;
  road.led4=PTJ_PTJ1;
  road.led5=PTJ_PTJ0;
  road.led6=PORTK_BIT5;
  road.led7=PORTK_BIT4;
  road.led8=PORTK_BIT3;
  road.led9=PORTK_BIT2;
  road.led10=PORTK_BIT1;
  road.led11=PORTK_BIT0;
}

//开光电感应器电源
void Sensor_on() 
{
  DDRM_DDRM0=1;//设置0为输出
  PTM_PTM0=1;//设为高电平,开三极管  
}

//关光电感应器电源
void Sensor_off() 
{
  PTM_PTM0=0;//关三极管
}

//***************主程序***************//
void main(void)
{
 Led_init();  
 Sensor_on();
 
  //设置PM6,PM7用于人机交互
 DDRM_DDRM7=0;//设置M口7脚为输入
 DDRM_DDRM6=0;//设置M口6脚为输入
 
 //设置PORTB
 DDRB=0xFF;//设置B口为输出
 PORTB=0xFF;//将指示灯全部关闭
  
  
  
  
  
 //先设置PM4
 DDRM_DDRM4=1;//设置M口4引脚为输出
 PTM_PTM4=1;//先将M口4脚设为高电平
 
 
 //设置PP3 
 DDRP_DDRP3=1;//设置P口3脚为输出
 PTP_PTP3=0;//设置3脚为低电平,如果2脚为高电平,则正转
 RDRP_RDRP3=1;//P口3脚降功率输出
 
 //先将PP2置为低电平
 DDRP_DDRP2=1;
 PTP_PTP2=0;
 
 //设置PP2为方波输出模式
  PWMCAE_CAE2=0;//选择模式为左对齐
  PWMCNT2=0;//计数器清零
  PWMPOL_PPOL2=1;//先输出高电平
  PWMPRCLK_PCKB=6;//clockB64分频,即为1MHz
  PWMCLK_PCLK2=0;//选择B为时钟源
  PWMPER2=255;//
  PWMDTY2=80;//
  PWME_PWME2=0;//允许2输出脉冲 
  
  while(1)
  
  {
   Get_sensor();
   PORTB_BIT0=road.led8;
   PORTB_BIT1=road.led9;
   PORTB_BIT2=road.led10;
   PORTB_BIT3=road.led11;
   PORTB_BIT4=road.led4;
   PORTB_BIT5=road.led5;
   PORTB_BIT6=road.led6;
   PORTB_BIT7=road.led7;
   if(PORTB_BIT5==1)//关电机
      PWME_PWME2=0;
   if(PTM_PTM6==1) 
   {
    
    while(PTM_PTM6);
    Sensor_off();
    PWME_PWME2=1;
    PWMDTY2-=10;        //按下6则减速
    if(PWMDTY2<=20)
        PWMDTY2=20;
    PWMCNT2=0;
    
   }
   if(PTM_PTM7==1) 
   {
    Sensor_on();
    while(PTM_PTM7);
    PWME_PWME2=1;
    PWMDTY2+=10;      //按下7,则加速
    if(PWMDTY2>=240)
        PWMDTY2=240;
    PWMCNT2=0;
   }
   
  }
      
}

⌨️ 快捷键说明

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