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

📄 pin_wakeup.c

📁 em78p156的范例
💻 C
字号:
/***********************************************************
*  Tilte:                                                  *
*  Description:  Pin wake up function                      *
                                                           *
*  Company:     Elan microelectronics (sz) ltd.            *
*  Author:      HongXi.Tang                                *
*  Date:        19/05/2005                                 *
*  Version:     v1.0                                       *
***********************************************************/

#include "EM78x156xx.h"

#define	INT_VECTOR 0
#define	NEXT_NOP	1
#define WAKE_UP_OPERATION	NEXT_NOP

#define	EWDT	1
#define DWDT	0
#define WDT_STATUS	DWDT

#define WDT_Prescaler	0x8e
#define CONTW(Prescaler)	_asm{mov a,@Prescaler}\
							_asm{contw}
#define WDTC()	_asm{wdtc}
#define ENI()	_asm{eni}
#define DISI()	_asm{disi}
#define SLEP()	_asm{slep}
#define NOP()	_asm{nop}

void Pin_Wakeup(void)
{
	CONTW(WDT_Prescaler);
	WDTC();
	WDTCR&=0x7f;		//disable WDT
	PORT6=PORT6;
	IMR|=0x02;			//enable pin change interrupt
#if(WAKE_UP_OPERATION==NEXT_NOP)
	DISI();
#else
	ENI();
#endif
	SLEP();
	NOP();
#if(WDT_STATUS==DWDT)
{
	WDTCR&=0x7f;
}
#endif
}
void main()
{
	Pin_Wakeup();
	while(1)
	{
		WDTC();
	}
}

void _intcall interrupt_l(void) @ 0x08:low_int 0
{
   _asm 
   {
      //save A --> 0x1F ; R3 --> 0x3E (ram bank 1); R4 --> 0x3F (ram bank 1)
      MOV 0X1F,A   ;backup A to 0x1F
      SWAPA 0X04   ;backup R4 to 0x3F at bank 3
      MOV 0X3F,A   ;backup R4 to 0x3F at bank 3
      SWAPA 0X03   
      MOV 0X3E,A   ;backup R3 to 0x3E at bank 3
   }  	
}
void _intcall interrupt(void) @ int 0
{
   //backup C system
/*  _asm
    { 
	MOV A,0X10	// USE 1 BYTE C TYPE,C SYSTEM BACKUP
	MOV 0X3C+1,A
	MOV A,0X14
	MOV 0X3B+1,A
	MOV A,0X18
	MOV 0X3A+1,A
	MOV A,0X1B
	MOV 0X39+1,A
	MOV A,0X1C
	MOV 0X38+1,A
    }
*/ 

  // Write your code (inline assembly or C) here
  ISR=0;
   //restore C system
/*  _asm
    {  
	MOV A,0X3C+1	// USE 1 BYTE C TYPE,C SYSTEM RESTORE
	MOV 0X10,A
	MOV A,0X3B+1
	MOV 0X14,A
	MOV A,0X3A+1
	MOV 0X18,A
	MOV A,0X39+1
	MOV 0X1B,A
	MOV A,0X38+1
	MOV 0X1C,A
   }
*/  
  
  //restore ACC,R3,R4
  _asm
   {
      SWAPA 0X3E   ;restore R3
      MOV 0X03,A
      SWAPA 0X3F   ;restore R4
      MOV 0X04,A
      SWAP 0X1F    ;restore A
      SWAPA 0X1F
   }
}

⌨️ 快捷键说明

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