📄 main.c
字号:
dtint / * 0x0028 Sleep Interrupt Vector * /
};
#pragma section /* P */
/*************************************************************************************************************/
/* Main Program */
/*************************************************************************************************************/
void main ( void )
{
CCR.BIT.I = 1; /* Interrupt Disable */
LDONF = 0; /* Initialize LDONF */
SWONF = 0; /* Initialize SWONF */
//P92 = 1; /* Initialize P92 */
IO.PMR1.BIT.IRQ1 = 1; /* Initialize IRQ1 Terminal Input */
IO.PMR3.BIT.IRQ0 = 1; /* Initialize IRQ0 Terminal Input */
TMA = 0x1F; /* Reset PSW & TCA */
TMA = 0x19; /* Set TMA3 */
SYSCR1.BYTE = 0x8F; /* Initialize Function of Sleep Mode 1 */
SYSCR2.BYTE = 0xE0; /* Initialize Function of Sleep Mode 2 */
IEGR.BIT.IEG0 = 0; /* Initialize IRQ0 Terminal Input Edge */
IRR1.BIT.IRRI0 = 0; /* Clear IRR1.BIT.IRRI0 */
IENR1.BIT.IEN0 = 1; /* IRQ0 Interrupt Enable */
IEGR.BIT.IEG1 = 0; /* Initialize IRQ1 Terminal Input Edge */
IRR1.BIT.IRRI1 = 0; /* Clear IRR1.BIT.IRRI1 */
IENR1.BIT.IEN1 = 0; /* IRQ1 Interrupt Disable */
IRR1.BIT.IRRTA = 0; /* Clear IRR1.BIT.IRRTA */
IENR1.BIT.IENTA = 0; /* Timer A Interrupt Disable */
IRR2.BIT.IRRDT = 0; /* Clear IRR2.BIT.IRRDT */
IENR2.BIT.IENDT = 1; /* Direct Transfer Interrupt Enable */
CCR.BIT.I = 0; /* Interrupt Enable */
sleep(); /* Transition to Sleep Mode */
LED2 ^= 1;
TMA = 0x1F; /* Reset PSW & TCA */
TMA = 0x19; /* Initialize Timer A Function */
IRR1.BIT.IRRTA = 0; /* Clear IRR1.BIT.IRRTA */
IENR1.BIT.IENTA = 1; /* Timer A Interrupt Enable */
IRR1.BIT.IRRI1 = 0; /* Clear IRR1.BIT.IRRI1 */
IENR1.BIT.IEN1 = 1; /* IRQ1 Interrupt Enable */
while(SWONF != 1){ /* SWONF = "1" ? */
;
}
CCR.BIT.I = 1; /* Interrupt Disable */
//P92 = 1; /* Turn off LED */
SYSCR1.BYTE = 0x87; /* Initialize Function of Active Mode 1 */
SYSCR2.BYTE = 0xE8; /* Initialize Function of Active Mode 2 */
CCR.BIT.I = 0; /* Interrupt Enable */
sleep(); /* Transition to Active Mode */
CCR.BIT.I = 1; /* Interrupt Disable */
while(1){
;
}
}
/*************************************************************************************************************/
/* IRQ0 Interrupt */
/*************************************************************************************************************/
void irq0int ( void )
{
IRR1.BIT.IRRI0 = 0; /* Clear IRR1.BIT.IRRI0 */
IENR1.BIT.IEN0 = 0; /* IRQ0 Interrupt Disable */
}
/*************************************************************************************************************/
/* IRQ1 Interrupt */
/*************************************************************************************************************/
void irq1int ( void )
{
IRR1.BIT.IRRI1 = 0; /* Clear IRR1.BIT.IRRI1 */
SWONF = 1; /* Set SWONF */
IENR1.BIT.IENTA = 0; /* Timer A Interrupt Disable */
IENR1.BIT.IEN1 = 0; /* IENR1.BIT.IEN1 Interrupt Disable */
}
/*************************************************************************************************************/
/* Timer A Interrupt */
/*************************************************************************************************************/
void taint ( void )
{
IRR1.BIT.IRRTA = 0; /* Clear IRR1.BIT.IRRTA */
CCR.BIT.I = 0; /* Interrupt Enable */
if(LDONF == 1){ /* LDONF = "1" ? */
//P92 = 1; /* Turn on LED */
LED1 ^= 1;
LDONF = 0; /* Clear LDONF */
}
else{
//P92 = 0; /* Turn off LED */
LED1 ^= 0;
LDONF = 1; /* Set LDONF */
}
}
/*************************************************************************************************************/
/* Direct Transfer Interrupt */
/*************************************************************************************************************/
void dtint ( void )
{
IRR2.BIT.IRRDT = 0; /* Clear IRR2.BIT.IRRDT */
IENR2.BIT.IENDT = 0; /* Direct Transfer Interrupt Enable */
}
/***********************************************************************************
End of function main
***********************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -