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

📄 main.c

📁 线阵CCDTCD1200D的单片机(s12)的驱动程序
💻 C
字号:
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"


#define CLK1_PORT PTP_PTP0_MASK
#define CLK2_PORT PTP_PTP1_MASK
#define RS_PORT   PTP_PTP7_MASK
#define CLK1_PWM  PWME_PWME0
#define CLK2_PWM  PWME_PWME1
#define RS_PWM    PWME_PWME7
#define SH        PORTA_BIT0
#define DIR				DDRP_DDRP0_MASK|DDRP_DDRP1_MASK|DDRP_DDRP7_MASK
/*$OSEKDecl$*//*$XGATEDecl$*/


void OverFrequency(void);
void CcdIni(void);
void CcdDrive(void);
void DelayPer(byte fBus,byte TimeSpan);//单位延时时间
void Delay(byte Time);


void main(void) {
  /* put your own code here */
  EnableInterrupts;/*$XGATECall$*//*$OSEKCall$*/
  OverFrequency();
  CcdIni();
  CcdDrive();
  for(;;) {} /* wait forever */
  /* please make sure that you never leave this function */
}
/*$OSEKTasks$*/

void CcdIni(void){
  DDRA_BIT0 = 1;
  PWMPOL_PPOL0 = 1;	 //P0先高后低
  PWMPOL_PPOL1 = 0;	 //P1先低后高
  PWMPOL_PPOL7 = 1;  //P7先高后低
  PWMCLK_PCLK0 = 0;
  PWMCLK_PCLK1 = 0;  //01通道使用A时钟
  PWMCLK_PCLK7 = 0;  //7通道使用B时钟
  PWMPRCLK = 0x00;   //AB时钟不分频
  PWMCAE = 0x0;			 // 所有通道左对齐
  PWMPER0 = 0x30;
  PWMDTY0 = 0x18;	   //0通道频率为0.5M
  PWMPER1 = 0x30;
  PWMDTY1 = 0x18;		 //1通道频率为0.5M 
  PWMPER7 = 0x18;
  PWMDTY7 = 0x06;   //7通道频率为1M,
  }
  
  
 void OverFrequency(void){
  REFDV = 1;
  SYNR = 2;
  while( CRGFLG_LOCK !=1 );
  CLKSEL_PLLSEL = 1;//内部总线频率为24M。 
  }
  

 void DelayPer(byte fBus,byte TimeSpan){
   unsigned int num=0;
   unsigned int i=0;
   num = (unsigned int)(TimeSpan*fBus*1000 - 2)/6;
   for(i = 0;i < num;i++);
   }
   
 void Delay(byte Time){
 byte i=0;
 for(i= 0 ;i < Time;i++)
  DelayPer(24,1);		//在24M的总线频率下,延时1ms
}
  
  void CcdDrive(void){
     while(1){ 
      DDRP = DIR;
 	    PTP = CLK1_PORT|!CLK2_PORT|!RS_PORT;//P0高电平,P1低电平 
      RS_PWM = 1;//启动7号通道 
      asm {
      NOP;
      NOP; 
      NOP; 
      NOP;
      NOP; 
      NOP;
      NOP;
      NOP; 
      NOP; 
      NOP;
      NOP; 
      NOP;
      NOP; 
      NOP;
      NOP; 
      NOP;
      NOP; 
      NOP;
      NOP; 
      NOP;
    }
      SH = 1; 
      asm {
      NOP;
      NOP; 
      NOP; 
      NOP;
      NOP; 
      NOP;
      NOP;
      NOP; 
      NOP; 
      NOP;
      NOP; 
      NOP;
      NOP; 
      NOP;
      NOP; 
      NOP;
      NOP; 
      NOP;
      NOP; 
      NOP;
    }
   
     SH = 0;
   	 asm{ 
     NOP; 
     NOP;
     NOP; 
     NOP;
     NOP; 
     NOP;
     NOP; 
     NOP;
    } 
  
   PWME = PWME+0X03; //同时启动0、1通道
   Delay(10);	  //延时10ms 
   PWME = !CLK1_PWM|!CLK2_PWM|!RS_PWM;//同时关闭7、1、0四个通道
   PWMCNT0 = 0; 
   PWMCNT1 = 0;
   PWMCNT7 = 0;
   }
   }

⌨️ 快捷键说明

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