����ҷ�һ�����Գɹ�������M051��Ƭ���жϻ��ѣ�˯�ߣ�����ʾ����
#include "SmartM_M0.h"
#define __KEYISR EINT1_IRQHandler
#define DEBUGMSG printf
/****************************************
*��������:KeyIntInit
*�� ��:��
*�� ��:��
*�� ��:�����жϳ�ʼ��
******************************************/
VOID KeyIntInit(VOID)
{
P3_MFP = (P3_MFP & (~P33_EINT1_MCLK)) | EINT1; //P3.2��������Ϊ�ⲿ�ж�
DBNCECON &= ~ICLK_ON;
DBNCECON &= DBCLK_HCLK;
DBNCECON |= SMP_256CK; //���÷�������������ѡ��
P3_DBEN |= DBEN3; //ʹ��P3.2����������
P3_IMD &= IMD3_EDG;
P3_IEN |= IF_EN3; //�����ⲿ�ж�1Ϊ�½��ش���
NVIC_ISER |= EXT_INT1;
}
/****************************************
*��������:McuSleepDeep
*�� ��:��
*�� ��:��
*�� ��:MCU����˯��ģʽ
******************************************/
VOID McuSleepDeep(VOID)
{
Delayms(20);
PROTECT_REG
(
/* ����˯��ģʽ */
SCR |= SLEEPDEEP;
/* ��ֹ����ģʽ�»��ѵ��ж��ж�ʹ�� */
PWRCON &= ~PD_WU_IE;
PWRCON &= ~PD_WAIT_CPU;
PWRCON |= PWR_DOWN_EN;
)
Delayms(20);
}
/****************************************
*��������:main
*�� ��:��
*�� ��:��
*�� ��:��������
******************************************/
INT32 main(VOID)
{
PROTECT_REG //ISP����ʱ����FLASH�洢��
(
PWRCON |= XTL12M_EN; //Ĭ��ʱ��ԴΪ�ⲿ����
while((CLKSTATUS & XTL12M_STB) == 0); //�ȴ�12MHzʱ���ȶ�
CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //�����ⲿ����Ϊϵͳʱ��
P2_PMD = 0x5555;
)
KeyIntInit(); //�����жϳ�ʼ��
while(1)
{
P2_DOUT = 0x00;
Delayms(500);
P2_DOUT = 0xFF;
Delayms(500);
McuSleepDeep(); //MCU����˯��ģʽ
}
}
/****************************************
*��������:__KEYISR
*�� ��:��
*�� ��:��
*�� ��:�����жϷ�����
******************************************/
VOID __KEYISR(VOID)
{
Delayms(100);
P3_ISRC = P3_ISRC; //д1���
}