#include<reg52.h> //头文件
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit fs = P1^3;
sbit din = P1^0;
sbit sclk = P1^1;
sbit cs = P1^2;
void write_16(uint da);
void init5636();
void da5636(uint da);
/**********************主程序(产生正弦波)*********************/
void main()
{
uint code da[]={0x800,0x98f,0xb0f,0xc71,0xda7,0xea6,0xf63,0xfd8,0xfff,0xfd9,0xf64,0xea8,0xda9,0xc74,0xb12,0x992,0x803,0x673,0x4f3,0x391,0x25a,0x15b,0x9d,0x28,0x0,0x26,0x99,0x156,0x253,0x389,0x4ea,0x66a};
uchar i;
init5636();
while(1)
{
for(i=0;i<32;i++)
da5636(da[i]);
}
}
/************************向5636写16位数据*************************/
void write_16(uint da)
{
uchar i;
cs=1;
fs=1;
cs=0;
_nop_();
fs=0;
sclk=1;
for(i=0;i<16;i++)
{ if(da&0x8000)
din=1;
else
din=0;
_nop_();
da<<=1;
sclk=0;
sclk=1;
}
fs=1;
cs=1;
}
/******************************初始化5636*************************/
void init5636()
{ write_16(0xd002); //初始化设置为快速模式,内部2.048V基准电压
}
/****************************DA转换函数**************************/
void da5636(uint da)
{da&=0x0fff; //屏蔽高四位
da|=0x4000;
write_16(da);
}