📄 pwakeup.c
字号:
#include "EM78x153xx.h"
#define ENWDT 1
#define DSWDT 0
#define WATCHDOG ENWDT
void Pin_Wake_up(void)
{
_asm
{
mov a,@0x0e
contw
}
WDTCR=0x3f; //disable wdt
_asm
{
mov 0x6,0x6
disi
}
IMR=0xfa;
_asm
{
slep
nop
}
#if(WATCHDOG==DSWDT)
WDTCR=0x3f;
#else
#endif
IMR=0xf8;
}
void main()
{
_asm
{
mov a,@7
contw
}
P5CR=0xf0;
P6CR=0xff;
PDCR=0xef;
ODCR=0;
PHCR=1;
WDTCR=0x3f;
Pin_Wake_up();
while(1);
}
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
//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 + -