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

📄 paralleladc.c

📁 51单片机开发与应用技术详解(珍藏版)PPT及源码
💻 C
字号:
#include <reg51.h>			    			//头文件
#include <absacc.h>
#include <stdio.h>

#define uchar unsigned char 
#define adch0 XBYTE[0x0100]				//MAX197控制字节

uchar CHDataL,CHDataH; 				//转换结果
sbit ADINT = P1^0;						//MAX197中断输出位
sbit HBEN = P2^0;						//MAX197数据总线复用控制位
sbit CS=P1^7;							//MAX197片选信号

void ADRead(void);						//AD转换读取函数声明

void main()							//主函数
{
uchar Select_Menu; 					//功能选择

SCON=0x50;							//初始化串行口模式1
TMOD=0x20;							//初始化T1为定时功能,模式2
PCON=0x80;							//设置SMOD=1
TL1=0xF4;							//波特率4800bit/s,初值
TH1=0xF4;

TR1 = 1;       						//启动T1
TI = 1; 								//启动发送

while(1)
{
  printf("A/D Converter MAX197 Control!");
  printf (" Select Control Menu Option\n");		//菜单信息
  printf (" 0. Read Channel 0.\n");
  printf (" 1. Read Channel 1.\n");
  printf (" 2. Read Channel 2.\n");
  printf (" 3. Read Channel 3.\n");
  printf (" 4. Read Channel 4.\n");
  printf (" 5. Read Channel 5.\n");
  printf (" 6. Read Channel 6.\n");
  printf (" 7. Read Channel 7.\n");
  printf (" 8. Enable MAX197.\n");
  printf (" 9. EXIT.\n");
  printf (" Please Input Menu Option:\n");

  	Select_Menu = _getkey(); 			//从键盘输入选择数字
	switch(Select_Menu)
{
		case '0': 						//读取通道0
			printf ("\n You Select 0. ReadChannel 0.\n");
			adch0=0x40;				//控制字节
			ADRead();				//AD转换
			printf("Channel 0:CHDataL=%d,ChDataH=%d\n",CHDataL,CHDataH);
			break;
		case '1': 						//读取通道1
			printf ("\n You Select 1. ReadChannel 1.\n");
			adch0=0x41;				//控制字节
			ADRead();				//AD转换
			printf("Channel 1:CHDataL=%d,ChDataH=%d\n",CHDataL,CHDataH);
			break;
		case '2': 						//读取通道2
			printf ("\n You Select 2. ReadChannel 2.\n");
			adch0=0x42;				//控制字节
			ADRead();				//AD转换
			printf("Channel 2:CHDataL=%d,ChDataH=%d\n",CHDataL,CHDataH);
			break;
		case '3': 						//读取通道3
			printf ("\n You Select 3. ReadChannel 3.\n");
			adch0=0x43;				//控制字节
			ADRead();				//AD转换
			printf("Channel 3:CHDataL=%d,ChDataH=%d\n",CHDataL,CHDataH);
			break;
		case '4': 						//读取通道4
			printf ("\n You Select 4. ReadChannel 4.\n");
			adch0=0x44;				//控制字节
			ADRead();				//AD转换
			printf("Channel 4:CHDataL=%d,ChDataH=%d\n",CHDataL,CHDataH);
			break;
		case '5': 						//读取通道5
			printf ("\n You Select 5. ReadChannel 5.\n");
			adch0=0x45;				//控制字节
			ADRead();				//AD转换
			printf("Channel 5:CHDataL=%d,ChDataH=%d\n",CHDataL,CHDataH);
			break;
		case '6': 						//读取通道6
			printf ("\n You Select 6. ReadChannel 6.\n");
			adch0=0x46;				//控制字节
			ADRead();				//AD转换
			printf("Channel 6:CHDataL=%d,ChDataH=%d\n",CHDataL,CHDataH);
			break;
		case '7': 						//读取通道7
			printf ("\n You Select 7. ReadChannel 7.\n");
			adch0=0x47;				//控制字节
			ADRead();				//AD转换
			printf("Channel 7:CHDataL=%d,ChDataH=%d\n",CHDataL,CHDataH);
			break;
		case '8': 						//使能MAX197
			printf ("\n You Select 8. Enable MAX197.\n");
			CS=0;					//CS低电平有效,使能MAX197
			printf ("\nMAX197 Enabled.\n");
			break;
		case '9': 						//退出程序
			printf ("\n You Select 9. Exit\n");
			goto Exit; 				//转向Exit标号处
			break;
		default: 
printf ("\n Error: Please Select Right Menu Option\n");
			break;
		}; 
  }
Exit: printf("Exit the program!");				//退出
}

void ADRead(void) 
{
	while (ADINT!=0)					//查询MAX197的中断输出,判断是否完成转换
	{
		HBEN = 0;					//首先置HBEN=0,即先读低位
	}
	CHDataL = P0;					//读取A/D转换结果的低位

	HBEN = 1; 						//设置HBEN=1,再读高位
	CHDataH = P0;					//读取A/D转换结果的高位
	HBEN = 0;						//重置HBEN=0
}

⌨️ 快捷键说明

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