max5541.c

来自「串行DA转换器MAX5541的驱动程序!单片机为AT89C51!」· C语言 代码 · 共 60 行

C
60
字号

/***************AD5541/MAX5541 C51*****************/
// 最后修改日期:2006年01月11日;调试通过
//
/**************************************************/
#include    <reg52.h>
#include    <intrins.h>

#define    uchar  unsigned char
#define    uint   unsigned int

sbit SCLK= P1^3; //定义串行时钟线所在口 使用时根据自己的需要来定义
sbit DIN= P1^4; //定义串行数据线所在口 使用时根据自己的需要来定义
sbit DA_CS= P1^5;

//extern  void delayus(uchar us);
/*void delayms(uchar x)
{
     uchar i; 
     for(i=0;i<x;i++); 
}
*/
void  ad5541_ck(void){
      SCLK=0;_nop_();_nop_();       
      SCLK=1;_nop_();_nop_();       
}

void  ad5541(uint da1){
 
      uchar r=16;
      uint ch;
      ch=da1;

      DA_CS=1;
      //dacs2=1;
      ad5541_ck();  
      DA_CS=0;
      while (r--){
          DIN=ch&0x8000;
          ad5541_ck();
          ch<<=1;
      }
      DA_CS=1;
      _nop_();_nop_();_nop_();
}

main()              //发锯齿波
{
  uint DA_i=0;
  while(1)
   { 
   //ad5541(DA_i++);
   ad5541(0xffff);   //输出最大值对应10V
   //ad5541(0x7fff);
   //ad5541(0x0);
   //delayms(100);
   }

}

⌨️ 快捷键说明

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