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

📄 c8051fini.c

📁 this procedure is a game of basketball or subsystems time, the competition will record the entire ti
💻 C
字号:
#include <c8051f020.h>
#include <delay.h>

void DisableWDT()
{
	bit ea;
	ea=EA;
	EA=0;
	WDTCN=0x0DE;
	WDTCN=0x0AD;
	EA=ea;
}

bit GetWDTStatus()
{
	char wdtcn;
	wdtcn=WDTCN;
	wdtcn>>=4;
	return (bit)wdtcn;
}

void SetWDTime(unsigned char time)
{
	time|=0xF8;
	WDTCN&=0x78;
	WDTCN&=time;
} 
#define _ADC0_
#define _DAC_

void IniCPU()
{	
	OSCXCN=0x67;		//set external xtal
	OSCICN=0x14;		//set internal xtal

	DisableWDT();		//disable watchdog

	P74OUT=0x3C;		//set port output mode
	P0MDOUT=0x01;
	P1MDOUT=0x0;
	P2MDOUT=0x00;
	P3MDOUT=0xfC;

	EMI0CN=0x7F; 		
	EMI0CF=0x3c;		//XRAM config
	EMI0TC=0xFF;

	//REF config
	REF0CN=0x07;		//REF out enable

#define _ADC1_
#ifdef _ADC1_
	ADC1CF=0xf8;
	ADC1CN=0xc0;
#endif

#ifdef _ADC0_
	ADC0CF=0xf8;
	ADC0CN=0xc0;
#endif	
#ifdef _DAC_
	DAC0CN=0x80;
	DAC1CN=0x80;
#endif
	
	XBR0=0xEf;			//crossbar config
	XBR1=0x7f;
	//XBR0=0x04;			
	XBR2=0xC0;
}

void UseExtal() 
{
	unsigned char oscxcn;
	while(1)
	{
		oscxcn=OSCXCN;
		oscxcn>>=7;
		if(oscxcn) 
		{
			OSCICN|=0x08;
			//OSCICN&=0xfb;
			break;
		}
	}
}

int GetADC0(unsigned char channel)
{
		int ad;
		AMX0SL=channel;
		Delay1us(10);
		AD0INT=0;
		AD0BUSY=1;
		while(AD0INT==0);
		ad=ADC0H;
		//ad&=0x87;
		ad<<=8;
		ad|=ADC0L;
		return ad;
} 

void SetDAC0(int da)
{
	DAC0L=(unsigned char )da;
	da>>=8;
	DAC0H=(unsigned char )da;
}

void SetDAC1(int da)
{
	DAC1L=(unsigned char )da;
	da>>=8;
	DAC1H=(unsigned char )da;
}

⌨️ 快捷键说明

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