📄 call111.c
字号:
/****************************************************************/
/* 这是调用MAX111汇编程序(MAX111B.ASM)的C51程序。 */
/* 文件名CALL111.C。 */
/* 功能:本程序主要是读出MAX111芯片输入通道CH0,CH1的模数 */
/* 转换值,转换值依次放在数组mid1[2]中,转换值的标度变换值放在*/
/* 浮点数组volt[2]中。MAX111芯片的2个通道可编程为单极性/双极 */
/* 性和差动/单端工作,这里采用单端\单极性输入。MAX111有内部时 */
/* 钟和外部时钟两种工作模式,这里采用内部时钟模式。控制字中 */
/* CONV4、CONV3、CONV2、CONV1取0110B,表示转换分辨率为14位; */
/* 控制字中DV2,DV4取01B,表示对计数脉冲发生器发出的脉冲作二 */
/* 分频。因采用+1.5V的参考电压,故两个通道的电压输入范围都是 */
/* 0~1.5V。 */
/****************************************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay1(uint x);
extern uint chai; //把全局变量chai声明为外部变量
extern uint a_func(uint); //把a_func 声明为外部函数
uint idata mid1[2],aaa;
float idata volt[2];
uchar idata i;
void delay1(uint x) //延时程序
{
uchar tw;
while (x-->0){
for (tw=0;tw<125;tw++){;}
}
}
void main() //主程序
{
SP=0xcf;
delay1(1000);
EA=0;
// chai=a_func(0x8d0c); //零偏校准
// chai=a_func(0x8d08); //增益校准
// chai=a_func(0x8d04); //通道调零校准
// delay1(1000);
chai=a_func(0x8d00); // 将第一次读芯片输入通道CH0的A/D转换值舍去
chai=a_func(0x8d10); // 读出MAX111芯片输入通道CH0的A/D转换值
mid1[0]=chai; // 把它放入数组mid1中。
chai=a_func(0x8d00); // 读出MAX111芯片输入通道CH1的A/D转换值
mid1[1]=chai; // 把它放入数组mid1中。
aaa=mid1[0]&0x4000;
if (aaa==0x4000) goto overflow;//若CH0的A/D转换值越限,转越限处理。
aaa=mid1[0]&0x8000;
if (aaa==0x8000) goto pol; //若CH0的A/D转换值是负数,转负数处理。
aaa=mid1[1]&0x4000;
if (aaa==0x4000) goto overflow;//若CH1的A/D转换值越限,转越限处理。
aaa=mid1[1]&0x8000;
if (aaa==0x8000) goto pol; //若CH1的A/D转换值是负数,转负数处理。
for (i=0;i<2;i++){
volt[i]=(mid1[i]/16384.0)*1.5; // 标度变换。
}
while(1);
overflow:; //越限处理。
pol: ; //负数处理。
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -