原创 MAX5250产生阶梯与锯齿波

2007-9-10 21:27 4213 1 1 分类: MCU/ 嵌入式

#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条评论)

登录后参与讨论
我要评论
0
1
关闭 站长推荐上一条 /2 下一条