⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tlc2543.c

📁 12位串行A/D转换芯片TLC2543的驱动程序
💻 C
字号:
#pragma small
#include<reg51.h>
#include<absacc.h>
#include<stdio.h>
#include<intrins.h>

#define  uchar unsigned char
#define  uint  unsigned int

/*  A/D端口定义  */

sbit   AD_CLK                  =P0^5;
sbit   AD_DATAIN               =P0^6;
sbit   AD_OUT                  =P0^7;
sbit   AD_CS                   =P2^7;

uint Read2543(uchar);
void ADdelay(uchar);


void main()                           /*主程序*/
  {
  uint  AD_DATA;            /*AD结果*/
  uchar ad_port;           /*模拟量输入端口号*/

  ad_port=0xd0;
a:  AD_DATA=Read2543(0xb0);
  //AD_DATA=Read2543(0xc0);
 goto a;
  }

///////////////////////////////////////////////////////////////////////////
//////////////////// Read2543子程序 //////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
uint Read2543(uchar port)        /*A/D转换子程序*/
  {
  uchar  i;
  uint  ad_dat;               /*A/D子程序返回AD结果变量*/
  ad_dat=0;
  AD_CLK=0;
  AD_CS=1;
  AD_DATAIN=0;
  //AD_OUT=0;
  AD_CS=0;
  ADdelay(19);
  for(i=1;i<=12;i++)             /*12位DATA INPUT*/
    {
    AD_DATAIN=(bit)(port&0x80);
   ADdelay(19);
    AD_CLK=1;                       //上升沿送入
    port<<=1;
   ADdelay(19);
    AD_CLK=0;
    }

  AD_CS=1;
  ADdelay(19);
  AD_CS=0;
 ADdelay(19);
  for(i=1;i<=12;i++)              /*12位AD_DATAIN OUTPUT*/
    {
    if (AD_OUT) {ad_dat|=0x01;}

    ADdelay(19);
    AD_CLK=1;
    ADdelay(19);
    AD_CLK=0;
    ADdelay(19);
    if(i<12)
    ad_dat=ad_dat<<1;
    }
  AD_CS=1;
  return(ad_dat);
  }

////////////////////////////////////////////////////////////////////
////////////////////  AD延时程序///////////////////////////////////////
/////////////////////////////////////////////////////////////////////
 void ADdelay(uchar i1)               /*延时程序,延时i1个机器周期*/
   {
   uchar ii;
   for(ii=0;ii<=i1;ii++)
     {
     _nop_();
     }
   }

⌨️ 快捷键说明

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