#include
#include
#include
sbit clk5250=P1^0;
sbit din5250=P1^1;
sbit cs5250=P1^2;
sbit cl5250=P1^3;
#define uchar unsigned char
#define uint unsigned int
/*************************************************
MAX5250驱动程序
名称: write5250(void)
功能: 向MAX5250写数据
输入参数: 电压值vin (10位数据位,6位控制位)
输出参数: 无
*************************************************/
write5250(void)
{
uchar i,k;
uint vcon,Icon,j;
vcon=55296;//设定初始值(0 V)
Icon=47104;
cs5250=1;
clk5250=0; //CS下降沿,时钟要保持为0
_nop_();
for(k=0;k<6;k++)
{ for(j=0;j<1024;j++)
{ cs5250=0;
for(i=0;i<16;i++) //串行方式送16位数据
{ din5250=(bit)(vcon&0x8000) ; //从高位开始一位一位传送
vcon<<=1;
clk5250=1; //时钟上升沿,数据移入shift register
_nop_();
clk5250=0;
_nop_();
}
cs5250=1; //禁止片选,数据移入input/DAC寄存器,进行转换
vcon="vcon"+4; //数据位从第三位开始,加4
cs5250=0;
_nop_();
for(i=0;i<16;i++)
{ din5250=(bit)(Icon&0x8000); //从高位开始一位一位传送
Icon<<=1;
clk5250=1;
_nop_();
clk5250=0;
_nop_();
}
}
Icon="Icon"+81; //设定阶梯电压位50毫伏一级
vcon="55296"; //锯齿波电压初始值重载(0 V)
if(k==5) //一周期完毕
{ k="0";
Icon="47104"; //阶梯电压初始值重载(0 V)
}
}
}
文章评论(0条评论)
登录后参与讨论