support.c

来自「mcs51,2051,x86系列MCU」· C语言 代码 · 共 611 行 · 第 1/2 页

C
611
字号
   (void) IntrType;	/* Reference to avoid compiler warning */

   ((unsigned long far *)(0))[Vector] = (unsigned long)IntrProc;
}
/* APB_BLOCK_END */



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


/* APB_BLOCK_START = TIMERS */
/*  InitTimer:
	Description:
	
	Parameters:
		Unit 		Unit number of the timer.  EX supports 0, 1 or 2
		Mode		Defines Counter Mode and Count value type						
		Inputs 		Specifies Input sources
		Output		Specifies Which Output to drive
		InitCount	Value to be loaded into count register
		Enable		Enable (1) or disable (0) Timer
	Returns:	Error Codes
		E_INVAILD_DEVICE 	-- Unit number specifies a non-existing device
		E_OK				-- Initialized OK, No error.

	Assumptions:
		REMAPCFG register has Expanded I/O space access enabled (ESE bit set).
	
	Real/Protected Mode
		No changes required.
*/
int InitTimer(int Unit, WORD Mode, BYTE Inputs, BYTE Output,WORD InitCount, int Enable)
{
	BYTE	TmpByte;
	WORD	TmrCntPort;
	
	if(Unit > 2)
		return E_INVALID_DEVICE;

	TmrCntPort = 0xf040 + Unit;			/* Set depending on which timer */

    	/* Set Pin configuration */
    if(Unit < 2)
    {
        TmpByte = _GetEXRegByte(P3CFG) | (Output << Unit);   /* Bit 0 or 1 */
        _SetEXRegByte(P3CFG,TmpByte);
    }
    else
    {
    	TmpByte = _GetEXRegByte(PINCFG) | (Output << 5);		/* Bit 5 */             
        _SetEXRegByte(PINCFG,TmpByte);
    }
    
    	/* Set Timer Config */
    TmpByte = _GetEXRegByte(TMRCFG);		/* All Timers share this register, Keep previous settings */
    if(!Enable)
     	TmpByte |= 0x80;			        /* Set Timer Disable Bit */
    TmpByte |= (Inputs << (Unit*2));		/* Set CK?CON and GT?CON bits */
    _SetEXRegByte(TMRCFG,TmpByte);
    
    	/* Set Timer Control Register */
    TmpByte = Unit << 6;		/* Set counter select */
    TmpByte |= (0x30 | Mode);	/* Set R/W low then high byte and Mode bits */
	_SetEXRegByte(TMRCON,TmpByte);
	
		/* Set Initial Counter Value */
	TmpByte = HIBYTE(InitCount);
	_SetEXRegByte(TmrCntPort, LOBYTE(InitCount));
	_SetEXRegByte(TmrCntPort, TmpByte); 
    
	return E_OK;
}


void interrupt far TimerISR(void)
{
   
}
/* APB_BLOCK_END */


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



/* APB_BLOCK_START = WDT */

/*
 * FUNCTION:      
 *
 * DESCRIPTION:   
 *                
 *
 *
 *
 * PARAMETERS:    
 *
 * RETURN VALUE:  
 *
 * CALL FORMAT:   
 *
 * EXT EFFECTS:   
 *
 *
 */

void SetupWDT(BYTE Status)
{
   _SetEXRegByte(WDSTATUS, Status);
}

/* APB_BLOCK_END */

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

/* APB_BLOCK_START = IO */

/*
 * FUNCTION:      
 *
 * DESCRIPTION:   
 *                
 *
 *
 *
 * PARAMETERS:    
 *
 * RETURN VALUE:  
 *
 * CALL FORMAT:   
 *
 * EXT EFFECTS:   
 *
 *
 */

void InitIO1(BYTE P1_LTC, BYTE P1_DIR, BYTE P1_CFG)
{
   /* port 1 init */
  _EnableExtIOMem();
  _SetEXRegByte(P1LTC, P1_LTC);
  _SetEXRegByte(P1DIR, P1_DIR);
  _SetEXRegByte(P1CFG, P1_CFG);
  _DisableExtIOMem();
}

/*
 * FUNCTION:      
 *
 * DESCRIPTION:   
 *                
 *
 *
 *
 * PARAMETERS:    
 *
 * RETURN VALUE:  
 *
 * CALL FORMAT:   
 *
 * EXT EFFECTS:   
 *
 *
 */

void InitIO2(BYTE P2_LTC, BYTE P2_DIR, BYTE P2_CFG)
{
   /* port 2 init */  
  _EnableExtIOMem();
  _SetEXRegByte(P2LTC, P2_LTC); 
  _SetEXRegByte(P2DIR, P2_DIR); 
  _SetEXRegByte(P2CFG, P2_CFG); 
  _DisableExtIOMem();
}

/*
 * FUNCTION:      
 *
 * DESCRIPTION:   
 *                
 *
 *
 *
 * PARAMETERS:    
 *
 * RETURN VALUE:  
 *
 * CALL FORMAT:   
 *
 * EXT EFFECTS:   
 *
 *
 */

void InitIO3(BYTE P3_LTC, BYTE P3_DIR, BYTE P3_CFG)
{
   /* port 3 init */  
  _EnableExtIOMem();
  _SetEXRegByte(P3LTC, P3_LTC); 
  _SetEXRegByte(P3DIR, P3_DIR); 
  _SetEXRegByte(P3CFG, P3_CFG); 
  _DisableExtIOMem();
}
  

/* APB_BLOCK_END */


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

/* APB_BLOCK_START = RCU */

/*
 * FUNCTION:      
 *
 * DESCRIPTION:   
 *                
 *
 *
 *
 * PARAMETERS:    
 *
 * RETURN VALUE:  
 *
 * CALL FORMAT:   
 *
 * EXT EFFECTS:   
 *
 *
 */

void Init_RCU(BYTE Value1, BYTE Value2, BYTE Value3, BYTE Value4)
{
  _EnableExtIOMem();
  _SetEXRegWord(RFSCIR, Value1);  /* Program refresh interval. */
  _SetEXRegWord(RFSBAD, Value2);  /* Program base address. */
  _SetEXRegWord(RFSADD, Value3);  /* Program address register. */
  _SetEXRegWord(RFSCON, Value4);  /* Program the enable bit. */
  _DisableExtIOMem();
}

/* APB_BLOCK_END */


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


/* APB_BLOCK_START = CLOCK_AND_PM */

/*
 * FUNCTION:      
 *
 * DESCRIPTION:   
 *                
 *
 *
 *
 * PARAMETERS:    
 *
 * RETURN VALUE:  
 *
 * CALL FORMAT:   
 *
 * EXT EFFECTS:   
 *
 *
 */

                                   
void Init_ClockPMU(BYTE PowerCont, BYTE ClockPrescale)
{
  _EnableExtIOMem();
  _SetEXRegByte(PWRCON, PowerCont);
  _SetEXRegWord(CLKPRS, ClockPrescale);
  _DisableExtIOMem();
}

/* APB_BLOCK_END */

⌨️ 快捷键说明

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