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

📄 main.c

📁 基于mc9s08aw60的TPM比较输出实验
💻 C
字号:
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
//==================================================================
//函数名:Init_PortA  
//作者:KLY
//日期:2007-11-8 10:34    
//功能:初始化PTA0~PTA3为输出端口,端口电平均为低    
//输入参数:无
//返回值:无
//修改记录:无
//==================================================================
void Init_PortA(void) {
	PTAD = 0X00;//端口A数据寄存器初始化为0
	PTADD_PTADD0=1;//引脚PTA0作为输出引脚
	PTADD_PTADD1=1;//引脚PTA1作为输出引脚
	PTADD_PTADD2=1;//引脚PTA2作为输出引脚
	PTADD_PTADD3=1;//引脚PTA3作为输出引脚
	               //其他引脚方向控制位默认为输入引脚
	               //由于PTA0~PTA3引脚设置为输出引脚,故它的内部上拉使能控制寄存器不再起作用
	PTASE_PTASE0=1;//引脚PTA0的压摆率控制位使能,提供其EMC性能
	PTASE_PTASE1=1;//引脚PTA1的压摆率控制位使能,提供其EMC性能
	PTASE_PTASE2=1;//引脚PTA2的压摆率控制位使能,提供其EMC性能
	PTASE_PTASE3=1;//引脚PTA3的压摆率控制位使能,提供其EMC性能
	PTADS_PTADS0=1;//引脚PTA0高输出能力使能
	PTADS_PTADS1=1;//引脚PTA1高输出能力使能
	PTADS_PTADS2=1;//引脚PTA2高输出能力使能
	PTADS_PTADS3=1;//引脚PTA3高输出能力使能
  
}
//==================================================================
//函数名:Init_IRQ  
//作者:KLY
//日期:2007-11-8     
//功能:初始化外部中断引脚    
//输入参数:无
//返回值:无
//修改记录:无
//==================================================================
void Init_IRQ(void)
{
IRQSC_IRQMOD=0;//0:边沿方式;1:电平方式
IRQSC_IRQIE=1;//0:中断使能;1:禁止中断
IRQSC_IRQPE=1;//1:中断引脚使能;0:普通IO
IRQSC_IRQEDG=0;//下降沿或低电平信号有效
}

//==================================================================
//函数名:Init_stop2  
//作者:KLY
//日期:2007-11-8     
//功能:设置执行STOP指令进入STOP3模式    
//输入参数:无
//返回值:无
//修改记录:无
//==================================================================
void Init_stop2(void)
{
	//SPMSC1_LVDE=0;
	//SOPT_STOPE=1;//允许执行STOP指令
	//SPMSC2_PPDC=1;//执行STOP指令后进入STOP2模式
	
	SOPT = SOPT | 0x20;
	
	SPMSC1 = 0x00;
	
	SPMSC2 = SPMSC2 | 0X01;
}

void main(void) {
 Init_PortA();
 Init_IRQ();
 Init_stop2();
  EnableInterrupts; /* enable interrupts */
  /* include your code here */

  asm(STOP);//执行该语句后,MCU进入STOP2模式

  for(;;) {
  	if(SPMSC2_PPDF==1)//中断唤醒STOP2
  		{
  			SPMSC2_PPDACK=1;//清除PPDF标志位
  			Init_IRQ();
  			Init_PortA();
  	 }
    __RESET_WATCHDOG(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}
//==================================================================
//函数名:IRQ_ISR
//作者:KLY
//日期:2007-11-8     
//功能:外部中断服务程序,点亮一个LED  
//输入参数:无
//返回值:无
//修改记录:无
//==================================================================
interrupt VectorNumber_Virq void IRQ_ISR(void)
{
	if((IRQSC & 0x08)==0x08)
		{
	   IRQSC_IRQACK=1;//清除外部中断标志位
     PTAD_PTAD0=~PTAD_PTAD0;//点亮或熄灭D5
    }  
}
//==================================================================

⌨️ 快捷键说明

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