dac.c

来自「c8051f020模块.rar」· C语言 代码 · 共 105 行

C
105
字号
#include <c8051f020.h>
#include<intrins.h>
#include<math.h>

#define uint8 unsigned char
#define uint16 unsigned int

sfr16 DAC0=0XD2;

void SYSCLK_Init(void)
{ 
  uint8 i;
  OSCXCN = 0X67;//开始外部22.1184M晶振
  for(i = 0;i < 128;i++); //等待外部起振
  while(!(OSCXCN & 0X80));	//查询标志位
  OSCICN = 0X88;//用外部晶振,并使能始终丢
}

void Init_DAC0(void)
{
  XBR2=0X40;
  REF0CN=0X03;
  DAC0CN=0X80;
}

void Write_DAC0(uint16 Data)
{
  uint8 m,j,k;
 
  m=Data;
  j=Data>>8;
 // k=DAC0L;
  DAC0L=m;
  DAC0H=j;
  //DAC0H=DAC0H;
  //DAC0=Data;

}

void Init_System(void)
{
  WDTCN=0XDE;
  WDTCN=0XAD;
  SYSCLK_Init();
  Init_DAC0();
}


void main(void)
{
  uint16 i;
  Init_System();
  
  while(1)
  {
   Write_DAC0(0X0ccc);
   //Write_DAC0(0X0CCC);
   //for(i=0;i<1000;i++);
  }

} 

/*
void DAC_Init(void)
{
  REF0CN=0X03;
  DAC0CN=0X80;
  
}


void main(void)
{
  uint16 i,k;
  uint8 m;
  float y,x;
  WDTCN=0XDE;
  WDTCN=0XAD;
  SYSCLK_Init();
  //DAC_Init();
  while(1);
  {
  	for(x=0;x<(2*3.14159);x+=0.1)
	  {
	  	 y=2048*(sin(x)+1);
		 //DAC0=y;

		 m=DAC0L;
		
  REF0CN=0X03;
  DAC0CN=0X80;
		 DAC0L=(uint16)y;
		 DAC0H=((uint16)y)>>8;//DAC0H;
		 DAC0L=(uint16)y;
		 DAC0H=((uint16)y)>>8;//DAC0H;
		 for(i=0;i<=100;i++);	  
	  }
  
  
  
  }



} 			  */

⌨️ 快捷键说明

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