main.c

来自「Data logger Power transision function sw」· C语言 代码 · 共 261 行 · 第 1/2 页

C
261
字号
    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 + =
减小字号Ctrl + -
显示快捷键?