📄 paralleladc.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 + -