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

📄 c8051f020.c

📁 C8051ucos源码
💻 C
字号:



#include "c8051F020.h"

bit SYSTEM_TEMP_BIT;
//------------------------------------------------------------------------------------
void Oscillator_Init()
{
    int i = 0;
    OSCXCN    = 0x67;
    for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
    while ((OSCXCN & 0x80) == 0);
    OSCICN    = 0x08;
}
//------------------------------------------------------------------------------------
void Port_IO_Init(void)
{

   P1MDIN   = 0xFF;  // 1对应的引脚是数字输入      0对应的引脚是模拟输入       开机默认:0xff
  
   P0MDOUT |= 0x00;  // 1对应的引脚是推挽输出      0对应的引脚是漏极开路输出   开机默认:0x00
   P1MDOUT |= 0x00;  // 1对应的引脚是推挽输出      0对应的引脚是漏极开路输出   开机默认:0x00
   P2MDOUT |= 0x00;  // 1对应的引脚是推挽输出      0对应的引脚是漏极开路输出   开机默认:0x00
   P3MDOUT |= 0x00;  // 1对应的引脚是推挽输出      0对应的引脚是漏极开路输出   开机默认:0x00

	P74OUT=0Xff;
	
	P0=0xff;
	P1=0xff;
	P2=0xff;
	P3=0xff;
	P4=0xff;
	P5=0xff;
	P6=0xff;
	P7=0xff;

   XBR0    = 0x04;                     // Enable UART0
   //XBR1    = 0x04;
   XBR2    = 0x44;                     // Enable crossbar and weak pull-ups
   P0MDOUT |= 0x01;                    // enable TX0 as a push-pull output
   P1MDOUT |= 0x01;
   P2MDOUT  = 0xe0;                    // P2口设为推挽方式
   P3MDOUT  = 0xff;                    // P2口设为推挽方式
   //XBR2      &=	~(0x80);//弱上拉允许
}
//------------------------------------------------------------------------------------
/*
//外部总线初始化
void ExtBus_Init(void)
{

	EMI0CN = 0x00;//当使用8位的MOVX命令时,XRAM页选择位提供16位外部数据存储器地址的高字节,实际上是选择一个256 字节的RAM	
	EMI0CF = 0X34;//外部P4-P7,非复用,EMIF=01,ALE=0;
	EMI0TC = 0x45;//(地址建立时间(0-3)<<6)||(RD/WR(0-15)<<2)||(地址保持时间(0-3))


   	XBR2      |= 0x40;//交叉开关启动
    XBR2      &=	~(0x80);//弱上拉允许
}
//------------------------------------------------------------------------------------
/*
void ADC_Init()
{
    ADC1CF    = 0xF9;
    AMX1SL    = 0x00;
    ADC1CN    = 0x82;
	P1MDIN    = 0xFE;
    IE        = 0x80;
    EIE2      = 0x09;
	REF0CN    = 0x1A;
    //REF0CN    = 0x02;
}

void ADC0_Init()
{
	AMX0CF = 0X00;
	ADC0CF = 0XF0;
	ADC0CN = 0X84;
    EIE2   = 0x03;
    IE        = 0x80;
	REF0CN    = 0x0b;
}
//------------------------------------------------------------------------------------

void DAC_Init()
{
	DAC0CN = 0x87;
	DAC1CN = 0x80;
}
//------------------------------------------------------------------------------------
/*
//ADC2初始化
void ADC2_Init(void)
{
	

	AMX2CF = 0X00;//低4位是差分输入标志位1为差分输入
	ADC2CF = ((SYSTEM_CLK/5000000)<<3);
	ADC2_SetupMul(1);//放大倍数设为1倍	 
	ADC2CN = 0XA2;//定时器3触发转换
	REF0CN&=0Xf7;//设置adc2基准电压为3.3V;
	REF0CN|=0x20;//开启偏执电压
}
//------------------------------------------------------------------------------------
//读取ADC2转换结果
//可工作与中断或非中断方式
unsigned char ADC2_Read(void)
{
unsigned char val;
	while((ADC2CN&0x20)==0);
	val = ADC2;
	ADC2CN&=0x20;
	return val;
}
//------------------------------------------------------------------------------------
//DAC0初始化
void DAC0_Init(void)
{
	DAC0CN = 0x88;//DAC0允许和设定为定时器3启动
	REF0CN|=0x20;//开启偏执电压
}
//------------------------------------------------------------------------------------
//DAC1初始化
void DAC1_Init(void)
{
	DAC1CN = 0x88;//DAC0允许和设定为定时器3启动
	REF0CN|=0x20;//开启偏执电压
}
//------------------------------------------------------------------------------------
//DAC0输出
void DAC0_OUT(unsigned int val)
{
union
{
	unsigned char uchar[2];
	unsigned int  uint;
}int2char;

	int2char.uint = val;
	DAC0L = int2char.uchar[0];
	DAC0H = int2char.uchar[1];
}
//------------------------------------------------------------------------------------
//DAC1输出
void DAC1_OUT(unsigned int val)
{
union
{
	unsigned char uchar[2];
	unsigned int  uint;
}int2char;

	int2char.uint = val;
	DAC1L = int2char.uchar[0];
	DAC1H = int2char.uchar[1];
}
//------------------------------------------------------------------------------------
*/

//------------------------------------------------------------------------------------



⌨️ 快捷键说明

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