📄 c8051fini.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 + -