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

📄 timer_m04_c2.c

📁 sircs decoder, for amplifier.. this is to decode
💻 C
字号:
/****************************************************************************************************/
/* $Header  :                                                                                                                                                                           
/* AUTHOR       : TC PUI                                                                                                                                                               
/* FILE NAME: TIMER.C                                                                                                                                                           
/* PURPOSE      : TIMER CONTROL                                                                                                                                                 
/* MODEL        : 2003 CIS MODEL (KEYPAD)                                                                                                                               
/* Copyright (c) 2003 Sony Corporation All Rights Reserved                                                                                      
/****************************************************************************************************/
#define _TIMER_C

#include "_main_M04_C2.h"
/****************************************************************************************************/
/* FUNCTION             :       TimInitialize                                                                                                                                           
/* PURPOSE              :       Timer Initialize                                                                                                                                
/* INPUT                :       None                                                                                                                                                    
/* RETURN VALUE 		:       None                                                                                                                                                    
/****************************************************************************************************/
void TimInitialize(void)
{
        PCR1.BIT.EN  = CLEAR;
        PCR1.BIT.UF  = CLEAR;
        PCR1.BIT.IR  = CLEAR;
        PCR1.BIT.TOE = CLEAR;
        PCR1.BIT.IE  = SET;
        PCR2.BIT.FC  = CLEAR;           /*      Use Interval Timer          	     	*/
        PCR2.BIT.RM  = CLEAR;           /*      Reload Timer                         	*/
        PCR2.BIT.C1  = CLEAR;           /*      Count Clock Period = 4tinst             */
        PCR2.BIT.C0  = SET;             /*                                              */
        RLBR.BYTE    = 78;         		/*      78 = 100us / [4tinst * 4 / 12.5MHz)]    */
        PCR1.BIT.EN  = SET; 
        
        TimeUp.A10ms = CLEAR;
        TimeUp.B10ms = CLEAR;
        TimeUp.A1Sec = CLEAR;
        Timer.A10ms	 = CLEAR;
        Timer.B10ms	 = CLEAR;
        Timer.AB5ms	 = CLEAR;
        Timer.A1Sec	 = CLEAR;		   
        TimerCount   = CLEAR;
        Timer1SCnt	 = CLEAR;
	    FirstTimer 	 = CLEAR;
        return; 
}

/****************************************************************************************************/
/* FUNCTION             :       TimOff                                                                                                                                           
/* PURPOSE              :       OFF Timer                                                                                                                                
/* INPUT                :       None                                                                                                                                                    
/* RETURN VALUE 		:       None                                                                                                                                                    
/****************************************************************************************************/
void TimOff(void)
{
        PCR1.BIT.EN  = CLEAR;
        PCR1.BIT.UF  = CLEAR;
        PCR1.BIT.IR  = CLEAR;
        PCR1.BIT.TOE = CLEAR;
        PCR1.BIT.IE  = SET;

        PCR2.BIT.FC  = CLEAR;           /*      Use Interval Timer 	                    */
        PCR2.BIT.RM  = CLEAR;           /*      Reload Timer                            */
        PCR2.BIT.C1  = CLEAR;           /*      Count Clock Period = 4tinst   	        */
        PCR2.BIT.C0  = SET;             /*                                              */
        RLBR.BYTE    = 78;		        /*      78 = 100us / [4tinst * 4 / 12.5MHz)]    */
        PCR1.BIT.EN  = CLEAR; 			/*		Stop timer								*/
        
        TimerCount   = CLEAR;
        Timer1SCnt	 = CLEAR;
		FirstTimer   = SET;
		StopExIntEnable();				/*		Enable Stop In interrupt				*/
        return; 
}
/****************************************************************************************************/
/* FUNCTION             :       TimControl                                                                                                                                              
/* PURPOSE              :       software timer control                                                                                                                  
/* INPUT                :       None                                                                                                                                                    
/* RETURN VALUE 		:       None                                                                                                                                                    
/****************************************************************************************************/
void TimControl(void)
{               
    	
    	if (FirstTimer==SET){
    		FirstTimer = CLEAR;
        	StopExIntDisable();			/*		Disable Stop In interrupt				*/
			TimInitialize();
		}    	
   
        if (TIMEUP_A) { 
                TIMEUP_A = CLEAR;       
                Timer.A10ms = SET;
                if (++Timer1SCnt == 100){
                	Timer1SCnt = CLEAR;
                	TIMEUP_1 = SET;
                }else{
                	TIMEUP_1 = CLEAR;
                }
        } else { 
        	Timer.A10ms = CLEAR;   
        }       
        
        if (TIMEUP_1) {
        	TIMEUP_1 = CLEAR;
        	Timer.A1Sec = SET;
        } else {
        	Timer.A1Sec = CLEAR;
        }
        return; 
}

/****************************************************************************************************/
/* FUNCTION             :       Is10msATimeOver                                                                                                                                 
/* PURPOSE              :       Software Timer A(10ms) Check Interface                                                                                  
/* INPUT                :       pointer of time(t)                                                                                                                              
/* RETURN VALUE 		:       TRUE/FLASE = times up/ no times up                                                                                              
/****************************************************************************************************/
unsigned char Is10msATimeOver(unsigned int *t)
{ 
        if (Timer.A10ms) {
                if (t == CLEAR) {
                	return TRUE;
                }else if (*t == CLEAR){
                	return TRUE;
                }else if ((--(*t)) == CLEAR){
                	return TRUE;
                }
        }
        return FALSE;
}

/****************************************************************************************************/
/* FUNCTION             :       Is10msATimeOver                                                                                                                                 
/* PURPOSE              :       Software Timer A(10ms) Check Interface                                                                                  
/* INPUT                :       pointer of time(t)                                                                                                                              
/* RETURN VALUE 		:       TRUE/FLASE = times up/ no times up                                                                                              
/****************************************************************************************************/
unsigned char Is1SecATimeOver(unsigned int *t)
{ 
        if (Timer.A1Sec) {
                if (t == CLEAR){
                	return TRUE;
                }else if (*t == CLEAR){
                	return TRUE;
                }else if ((--(*t)) == CLEAR){
                	return TRUE;
                }
        }
        return FALSE;
}


/****************************************************************************************************/

⌨️ 快捷键说明

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