systerm_init.c

来自「一个瑞萨单片机初始化的事例程序。。。。。。。。。。。。。。」· C语言 代码 · 共 184 行

C
184
字号
#include "sfr_r81B.h"
#include "var_def.h"
#include "interrupt.h"
#include "systerm_init.h"

/************************************************************************
*函数原型: Init_IO
*功能 :	初始化IO口
************************************************************************/
void Init_IO(void)
{
	pd1=0xff;												
}

/************************************************************************
*函数原型: Read_Self_AD
*功能 : 读AD
************************************************************************/
unsigned int Read_Self_AD(unsigned char ANx)
{
	unsigned int i;
	switch(ANx)
	{
		case 8:
		{
			pd1_0=0;
			adcon0=0b10010100;
			break;
		}
		case 9:
		{
			pd1_1=0;
			adcon0=0b10010101;	
			break;		
		}
		case 10:
		{
			pd1_2=0;
			adcon0=0b10010110;
			break;			
		}
		case 11:
		{
			pd1_3=0;
			adcon0=0b10010111;	
			break;		
		}
		default:break;
	}
	adcon1 = 0x00;
	adcon2 = 0;
	vcut = 1;
	adst = 1;
	while(adst);	
	i = ad;
	return(i);
}

/************************************************************************
*函数原型: void InitClock(void)
*功能 : 时钟初始化处理程序
************************************************************************/
void InitClock()
{
	prcr = 0x01;											//关闭和时钟相关的保护寄存器,允许修改时钟 
	cm14 = 0;
	hra00 = 1;						 			  			//高速内部振荡器振荡
	hra2=0;													//标准8MHz,出厂参数
	SoftWait(100);											//等待
	hra01 = 1;												//使用内部高速振荡器时钟(FRING-Fast)作为内部时钟(FRING)
	ocd2 = 1;					 	   						//使用内部时钟作为系统时钟
	cm16 = 0;					  							//CPU时钟不分频
	cm17 = 0;
	cm06 = 0;							  					//CPU时钟的分频比使用CM16,CM17进行设定 
	cm05 = 1;
	cm13 = 0;
	cm10 = 0;
	prcr = 0;					 	  			 			//打开保护寄存器
}

/************************************************************************
*函数原型: void SoftWait (unsigned int WaitTime)
*功能 : 短延时程序,约6US  @8MHz
************************************************************************/
void SoftWait(unsigned int WaitTime) 
{
	while(0 != WaitTime) 
	{
		__Wait4NOP;
		WaitTime --;
	}
}
/************************************************************************
*函数原型: InitINT11()
*功能 : INT11中断初始化
************************************************************************/
void InitINT11(void)							//	
{
	pd1_5=0;
	r0edg=0;									//下降沿
	cntrsel=1;									//INT11
	int1ic=3;
	ir_int1ic=0;
}
/************************************************************************
*函数原型: InitTimerX()
*功能 : 短延时程序,约1mS  @8MHz
************************************************************************/
void InitTimerX()								//	定时器X
{
	txck0 = 0;                              	// Timer X count source = f1
    txck1 = 0;									// Setting main cycle timer 8MHz * 1/1 * 256 * 250 = 2ms
    prex = 200-1;                           	// Setting Prescaler X register 
    tx   = 50-1;                          	 	// Setting timer X register 
    txmr = 0x00;                            	// Timer X : timer mode 
    txic = 6;                               	// Interrupt priority level = 5 
    ir_txic = 0;                            	// Interrupt request flag clear 
    txs  = 1;                               	// Timer X count start flag = start 
}

/************************************************************************
*函数原型: InitTimerZ()
*功能 : 短延时程序    约1ms
************************************************************************/
void InitTimerZ()								//	定时器Z
{
	pum=0;
	tzck0 = 0;                              	// Timer Z count source = f1
    tzck1 = 0;									// Setting main cycle timer 
    prez = 50-1;                           		// Setting Prescaler z register 
    tzpr = 40-1;                           		// Setting timer z register 
    tzmr = 0x00;                            	// Timer z : timer mode 
    tzic = 7;                               	// Interrupt priority level = 6 
    ir_tzic = 0;                            	// Interrupt request flag clear 
    tzs  = 1;                               	// Timer z count start flag = start 
}


/************************************************************************
*函数原型: InitTimerC()
*功能 : 
************************************************************************/
void InitTimerC()								//	定时器X
{
	
	tcc0=0;										//f32
	tcc1=0;										//比较0输出模式+比较1匹配时,TC置零+比较TM0输出H,TM1输出L
	
	tcout=0;									//允许CMP0_0输出,其他口关闭
	
	tm1=0xffff-1;
	
	tcc00=1;									//TimerC启动
    tcic = 5;                               	// Interrupt priority level = 7 
    ir_tcic = 0;                            	// Interrupt request flag clear 	
}

/************************************************************************
*函数原型: Watchdog_Init
*功能 : 看门狗初始化
************************************************************************/
void Watchdog_Init(void)
{
	prc1=1;
	pm12=1;
	wdts=1;
	wdtr=0;
	wdtr=0xff;
	prc1=0;
}

/************************************************************************
*函数原型: Clear_Watchdog
*功能 : 喂狗
************************************************************************/
void Clear_Watchdog(void)
{
	wdtr=0;
	wdtr=0xff;
}



⌨️ 快捷键说明

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