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

📄 main.c

📁 mc9s08aw16 CATCH例子程序实例
💻 C
字号:
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */

unsigned char aa=0;
unsigned char bb=0;
unsigned char cc=0;

unsigned long int maichongcaiyang_2,maichongcaiyang_1,maichongcaiyang; //输入捕捉脉冲采样

unsigned char yichucishu; //输入捕捉溢出次数 ,计算周期用

unsigned int tpmcnt_1; //上一次的计数值?计算周期用 



void mtpm_init(void);

void main(void) {

  EnableInterrupts; /* enable interrupts */

  SOPT=0x53;//屏蔽看门狗,看门狗溢出时间为长时间,屏蔽停止状态,背景调试管脚使能,复位管脚使能!
  SPMSC1 = 0x1C; //低电压强制MCU复位,停止状态使能低电压检测,使能低电压监测逻辑
 
  mtpm_init();
  for(;;) {
    __RESET_WATCHDOG(); /* feeds the dog */
    //TPMSC=0X16; 
    
  }

  
   /* loop forever */
  /* please make sure that you never leave main */
}
         
 /*TPM SETUP*/






/////////////////////////
// 输入捕捉中断模块初始化
//作者 free-tech
//日期 2007,07,18
//初始化 
/////////////////////////


void mtpm_init(void)     //初始化程序调用

{
    TPM2CNT=0;           //计数器清零
    
    TPM2SC=0X4d;         //溢出中断计数

    TPM2MOD=0XFFFF;      //模数置位
    
    TPM2C0SC=0X44;       //0通道输入捕捉控制
    
    TPM2C0V=0;           //
    
    TPM2C1V=0X0;         //
    
    TPM2C1SC=0X68;       //输出高有效的pwm   
   

}


/////////////////////////////////////
//MTPM溢出中断
//通过中断累加次数
/////////////////////////////////////
 interrupt 14 void   mtpm_ov(void)
 
 {
  TPM2SC_TOF=0;           //清处标志
 
  yichucishu++;          //累加溢出次数
 
 
 }
 
 
/////////////////////////////////////
//中断
//输入捕捉中断
//

/////////////////////////////////////

 interrupt 12 void   mtpm_in(void)
 
 {                     
  unsigned int i;
  
  i=TPM2CNT;                     
  
  TPM2C0SC_CH0F=0;       //清处标志
  
  maichongcaiyang_2=maichongcaiyang_1; //保存上上次数据
  
  maichongcaiyang_1=maichongcaiyang;  //保存上次数据
  
  if(yichucishu==0)
   
  {
  maichongcaiyang=i-tpmcnt_1;
  
  }
  
  if(yichucishu==1)
  
  {
  maichongcaiyang=0xffff-(unsigned long int)tpmcnt_1+(unsigned long int)i;
  
  }
  
  if(yichucishu>=2)
  
  {
  maichongcaiyang=(unsigned long int)yichucishu*0xffff+(unsigned long int)i-(unsigned long int)tpmcnt_1;
   
  }
  
  maichongcaiyang=maichongcaiyang*8;  //计算本次脉冲,输出以毫秒为单位
        
  tpmcnt_1=i;
  
  yichucishu=0;         //清零溢出次数
 
 }
 

⌨️ 快捷键说明

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