📄 ad197.c
字号:
///////////////////////////////////////////////////////////////
//
// 12位A/D MAX197转换子函数。
// 子函数名:ad_cy()
// 参考电压:4.096v.
//
// 硬件连线:PB0--PB7为数据线D0--D7,控制线: (4+1)
// adcs P1_7 adwr P1_6
// adrd P1_5 adhb P1_4 adint P3_2
//
// 入口条件:一个0---5V的模拟量从第八通道CH7对应UPSD的P3_2输入。
// 出口条件:返回一个无符号的整数值
//
//
//////////////////////////////////////////////////////////////
////////A/D197中用到的申明
////////
xdata uchar PB_ctr _at_ 0x7f03; //A/D中用到的申明。
xdata uchar PB_datout _at_ 0x7f05; //A/D中用到的申明。
xdata uchar PB_dir _at_ 0x7f07; //A/D中用到的申明。
xdata uchar PB_datin _at_ 0x7f01; //A/D中用到的申明。
#define adcs P1_7 //A/D中用到的申明。
#define adwr P1_6 //A/D中用到的申明。
#define adrd P1_5 //A/D中用到的申明。
#define adhb P1_4 //A/D中用到的申明。
#define adint P3_2 //A/D中用到的申明。
///////////////////////////////A/D中用到的申明结束///////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
void ad_ini(void)
{
PB_ctr = 0;
PB_dir = 0xff;
}
uint ad_cy(void)
{
uint adcjieguo,adctemp;
uchar i,j;
adcjieguo =0;
ad_ini();
PB_datout=0;
adcs=0;
_nop_();
adrd=1;
_nop_();
PB_datout=0x47;
adhb = 0;
adwr = 0;// AD写完读
adcs=1;
adwr = 1;
while (adint);
adcs=0;
PB_dir = 0x00;
adrd=0;
_nop_();
_nop_();
_nop_();
i=PB_datin;
adcs=1;
///////////////////////////////////////低位采样结束,高位开始//////////////////////////////////////////////////////
PB_dir = 0xff;
adcs=0;
_nop_();
adrd=1;
_nop_();
PB_datout=0x47;
adwr = 0;// AD写完读
adcs=1;
adwr = 1;
while (adint);
adcs=0;
PB_dir = 0x00;
adrd=0;
_nop_();
_nop_();
_nop_();
adhb = 1;
j = PB_datin;
adctemp = (j&0x0f)*256;
adcjieguo = adctemp +i;
_nop_();
_nop_();
return(adcjieguo);
}
////////////////////////////////////A/D转换子函数结束////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -