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

📄 sysinitialize.c

📁 这是一整套USB2.0试验程序
💻 C
字号:
/*************************************
文件名:SysInitialize.c
日期:2006-4-25
作者:李升义
说明:系统初始化文件,对C8051F020进行配置
*************************************/
#include "c8051F020.h"
// Peripheral specific initialization functions,
// Called from the Init_Device() function
void Timer_Init()
{
    CKCON     = 0x08; //Timer0使用系统时钟
    TMOD      = 0x02; //Timer0设定为8位重载
}

void PCA_Init()
{
 
	PCA0CN    = 0x00;
    PCA0MD    = 0x00;
//    PCA0CPM0  = 0x4D;
    PCA0CPM1  = 0x00;
    PCA0CPL1  = 0x00;
	PCA0CPH1  = 0x00;

}

void ADC_Init()
{
    ADC0CF    = 0x00;
    ADC0CN    = 0x00;
    ADC1CN    = 0x00;
}

void DAC_Init()
{
    int i=0;
	REF0CN = 0x03;//内部电压基准开,
	DAC1CN = 0x80;//开启DA1输出
 	DAC0CN = 0x80;//开启DA0输出

//	ValueOut_DA1 = 0xfff;//DA1输出初始值
	DAC1L = 0xff;	  
	DAC1H = 0x0f;
//	for(i=0;i<10000;i++);
	
	DAC0L = 0xff;	  
	DAC0H = 0x0f;
	for(i=0;i<20000;i++);



//	ValueOut_DA0 = 0xfff;//DA1输出初始值
	
	
}

void Port_IO_Init()
{
    // P0.0  -  TX0 (UART0), Open-Drain, Digital
    // P0.1  -  RX0 (UART0), Open-Drain, Digital
    // P0.2  -  SDA (SMBus), Open-Drain, Digital
    // P0.3  -  SCL (SMBus), Open-Drain, Digital
    // P0.4  -  TX1 (UART1), Open-Drain, Digital
    // P0.5  -  RX1 (UART1), Open-Drain, Digital
    // P0.6  -  CEX0 (PCA),  Open-Drain, Digital
    // P0.7  -  CEX1 (PCA),  Open-Drain, Digital

    // P1.0  -  Skipped,     Open-Drain, Analog
    // P1.1  -  Skipped,     Open-Drain, Analog
    // P1.2  -  Skipped,     Open-Drain, Analog
    // P1.3  -  Skipped,     Open-Drain, Analog
    // P1.4  -  Skipped,     Open-Drain, Analog
    // P1.5  -  Skipped,     Open-Drain, Analog
    // P1.6  -  Skipped,     Open-Drain, Analog
    // P1.7  -  Skipped,     Open-Drain, Analog

    // P2.0  -  INT0 (Tmr0), Open-Drain, Digital
    // P2.1  -  INT1 (Tmr1), Open-Drain, Digital
    // P2.2  -  T2EX (Tmr2), Open-Drain, Digital
    // P2.3  -  T4EX (Tmr4), Open-Drain, Digital
    // P2.4  -  Unassigned,  Open-Drain, Digital
    // P2.5  -  Unassigned,  Open-Drain, Digital
    // P2.6  -  Unassigned,  Open-Drain, Digital
    // P2.7  -  Unassigned,  Open-Drain, Digital

    // P3.0  -  Unassigned,  Open-Drain, Digital
    // P3.1  -  Unassigned,  Open-Drain, Digital
    // P3.2  -  Unassigned,  Open-Drain, Digital
    // P3.3  -  Unassigned,  Open-Drain, Digital
    // P3.4  -  Unassigned,  Open-Drain, Digital
    // P3.5  -  Unassigned,  Open-Drain, Digital
    // P3.6  -  Unassigned,  Open-Drain, Digital
    // P3.7  -  Unassigned,  Open-Drain, Digital

    P1MDIN    = 0x00;
    XBR0      = 0x15;
    XBR1      = 0x54;
    XBR2      = 0x54;


 //   P1MDIN    = 0x00;//将P1配置为模拟输入
 //   XBR0      = 0x15;
///	XBR1      = 0x40;//T2EX接到外部引脚//0x14;
 //   XBR2      = 0x54;//T4EX接到外部引脚//0x44;//0x46;//与P0.7(cex1)有关
 	P2MDOUT	  = 0X00;
	P2   	   =0XFF;
	P3MDOUT   = 0x3f; //P3的0~5配置为推挽输出(区动六个继电器)
//	P3MDOUT   = 0x00; //驱动继电器不用推挽输出,漏极开路即可
	P3        |= 0xc0;//P3的7~6配置为输入
//	P74OUT    |= 0x80;//P7高4位为推挽输出
	P74OUT    &= 0x3f;//P7低四位配置为漏极开路
	P74OUT    |= 0x03;//P4配置为推挽输出
	P7        = 0x0f;//P7低四位配置为输入
	P0MDOUT   |= 0xc0;//P0.6~7配置为推挽输出
	P0 = 0xff;
	//EMIFLE(XBR2.1)
	P3IF = 0x00;//P3.7中断由下降沿触发
	EIE2 |= 0x20;//允许INT7外部中断
	EIP2 |= 0x20;//INT7外部中断置为高优先级
	//-----USB Write--------------
	P74OUT    = 0xcc;//P7、P5配置为推挽	,P6、P4配置为漏极开路
	P6        = 0xff;//P6配置为输入
//	P4        = 0xff;//P6配置为输入
	P7        = 0x00;//P7低四位配置为输入
	P74OUT    &= 0xF3;
	P5 = 0xff;//设置P5为输入
	//----------------------------
	
}

void Oscillator_Init()
{

	int i; // 延时计数器
	OSCXCN = 0x67; // 起动外部振荡器11.0592MHz晶体
	for (i=0; i < 3000; i++) ; // 等待振荡器启动
	while (!(OSCXCN & 0x80)) ; // 等待晶体振荡器稳定
	OSCICN = 0x8f;//0x08; // 选择外部振荡器为系统时钟源并使能丢失时钟检测器*/
}

void Interrupts_Init()
{
    IE        = 0x00; //由于Timer0 中断优先级高于PCA,所以有关掉TIMER0 0x1B
					  //关掉两个外部中断0、1
	EIE1      = 0x08;//允许PCA中断
//	IP        = 0x01; //INT0优先级置高    
    EIP1      = 0x08; //PCA中断优先级置高
//	EIE2      = 0x01;//允许Timer3中断
//	EIP2      = 0x01;//	Timer3中断优先级置
}

// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
 //   Timer_Init();
 //   PCA_Init();
 //   ADC_Init();
 	DAC_Init();
    Port_IO_Init();
    Oscillator_Init();
 //   Interrupts_Init();
}

⌨️ 快捷键说明

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