📄 main.c
字号:
#include<stdio.h>
#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
sbit INT = P2^1; //转换结束标志位,为低时表示转换结束,可以读取数据
sbit HBEN = P2^2; //输出控制位,当HBEN为高输出高四位(可能包含符号位),为低输出低四位
#define HIGH 1
#define LOW 0
#define CS XBYTE[0X9FFF] //片选取地址
#define CONTROL_IN_DATA_OUT XBYTE[0X8000] //控制字读入,数据读出
unsigned int ADC_5614()
{
unsigned char RESULTHIGH,RESULTLOW;
unsigned int RESULT;
CS = 0; //给出片选信号
CONTROL_IN_DATA_OUT = 0X60; //输入信号范围0~5V,正常功耗模式,内部时钟,外部信号,通道0输入模拟信号,位ACQMOD先取1,下条指令取0
CONTROL_IN_DATA_OUT = 0X40;
HBEN = LOW; //先读取结果的低八位
while(INT); //转换完成了没有
RESULTLOW = CONTROL_IN_DATA_OUT; //低八位暂存于RESULTLOW
HBEN = HIGH; //读取转换结果的高八位
RESULTHIGH = CONTROL_IN_DATA_OUT; //高八位暂存于RESULTHIGH
RESULT = RESULTHIGH*256+RESULTLOW; //结果转换,由于控制字CONTROL_IN_DATA_OUT中DIP位为零,且信号范围为0~5V,故可直接转换
return RESULT;
}
void main()
{
unsigned int ADC_RESULT;
ADC_RESULT = ADC_5614();
}
/*
/////////////////////////////////////
//以下为读负值区信号的函数
unsigned int ADC_5614()
{
unsigned char RESULTHIGH,RESULTLOW;
unsigned int RESULT;
CS = 0; //给出片选信号
CONTROL_IN_DATA_OUT = 0X68; //输入信号范围-5~+5V,正常功耗模式,内部时钟,外部信号,通道0输入模拟信号,位ACQMOD先取1,下条指令取0
CONTROL_IN_DATA_OUT = 0X48;
HBEN = LOW; //先读取结果的低八位
while(INT); //转换完成了没有
RESULTLOW = CONTROL_IN_DATA_OUT; //低八位暂存于RESULTLOW
HBEN = HIGH; //读取转换结果的高八位
RESULTHIGH = CONTROL_IN_DATA_OUT; //高八位暂存于RESULTHIGH
RESULTHIGH &= 0X0F; //由于控制字CONTROL_IN_DATA_OUT中DIP位为1,故需将高八位结果中的高四位清零
在此还应该判断读入的信号是正还是负值,因为此选择的是-5~+5V的量程,方法:第十二位数据为1,则读入为负,为0则读入为正
RESULT = RESULTHIGH*256+RESULTLOW; //结果转换,由于控制字CONTROL_IN_DATA_OUT中DIP位为零,且信号范围为0~5V,故可直接转换
return RESULT;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -