max197.c

来自「基于单片机AT89S52系统的一些测试程序」· C语言 代码 · 共 73 行

C
73
字号
#include <reg52.h>
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>

typedef unsigned char uchar;
typedef unsigned int  uint;

#define CS_A    XBYTE [0x5000]		/* MAX197A的片选地址 */
#define CS_B    XBYTE [0x4000]		/* MAX197B的片选地址 */
#define CS_ALL  XBYTE [0x3000]		/* 两片MAX197的片选地址 */

sbit  HBEN=P1^3;

/*************************************************
延时子程序
*************************************************/
void delay(uint time)
{
	while(time--);
}
/*************************************************
AD采样子程序
id=1时,选择MAX197A,id=2时,选择MAX197B
ch为采样通道号
*************************************************/
uint ADconvert(uint id,uint ch)
{
	uint value;
	uint datH,datL;
	if((ch>8) || (id > 2) || (id < 1))
		return 0xffff;
	if(id == 1)
	{
		CS_A = 0x40 | ch;
		delay(1000);
		HBEN = 1;
		datH = CS_A;
		HBEN = 0;
		datL = CS_A;
	}
	else if(id == 2)
	{
		CS_B=0x40 | ch;
		delay(1000);
		HBEN = 1;
		datH = CS_B;
		HBEN = 0;
		datL = CS_B;
	}
	datH  &= 0x0f;
	value  = datH*256+datL;
	return (value);
}
main()
{     	
	uint ad;
	SCON=0X52;      
	TMOD=0X20;
	TH1=0XFD;     // 波特率为9600,晶振=11.0592M
	TR1=1;
	//采集开始
	while(1)
	{
		ad=ADconvert(1,0); //选择MAX197A,通道0
		printf("AD result A =%d\n",ad);
		ad=ADconvert(2,0); //选择MAX197B,通道0
		printf("AD result B =%d\n",ad);
	}
}
       

⌨️ 快捷键说明

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