ad16744.c

来自「本系统的控制部分是以89C51为核心」· C语言 代码 · 共 46 行

C
46
字号
#include <at89x55.h>
#include<absacc.h>
#include <intrins.h>
#define ADCOM XBYTE[0x9fff]     /* 使A0=0, R/C=0, CS=0 */
#define ADLO  XBYTE[0xbfff]     /* 使R/C=1, A0=1, CS=0 */
#define ADHI  XBYTE[0x9fff]     /* 使R/C=1, A0=0, CS=0 */
#define uint  unsigned int
sbit adbusy=P1^5;               /* STS */
sbit LF398=P1^4;

uint AD574(void)
{              /* AD574转换函数 */
  uint hi,low,ad57;
  uint temp1,temp2;
//  rd=1;
  ADCOM=0;                     /* 启动A/D转换 */
  while(adbusy==1);            /* 等待转换结束 */
 // rd=0;
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  temp1= ADHI  ;
  temp2 = ADLO;
  hi= ADHI<<4;
  low=ADLO>>4;
  ad57=low+hi;
  return (ad57);
}

void main(void)
  {
   float result[20];
   unsigned char i;
   LF398=1;
   for(i=0;i<=20;i++)
   {result[i]=AD574();
    result[i]=(((float)result[i]-0x800)*10)/0x7ff;
    } /* 启动AD574进行一次转换, 获得12位转换结果 */
   }

⌨️ 快捷键说明

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