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

📄 main.c

📁 Data logger Power transision function switch among different power modes based on new Renesus microc
💻 C
📖 第 1 页 / 共 2 页
字号:
    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 + -