📄 main.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 + -