#include
#include
#define VREF 5.0//基准电压///
#define GETLIGHT P2///获取0809数据口为P2口////
//////////////定义0809控制端口
sbit st_ale=P0^0;
sbit oe=P0^1;
sbit eoc=P0^2;
sbit clk=P0^3;
//////////////////////////////
unsigned char get_val;//用于单片机获取0809转化数值/////
int t;//中间变量
float light;///中间变量
void adc0809()
{
st_ale=0;///实际上0809的ST脚和ALE脚相连了//////
st_ale=1;///产生转化脉冲//////
st_ale=0;
while(eoc==0);
oe=1;//output enable as ture
get_val=GETLIGHT;
oe=0;//output enable as false
light=((get_val*1.0*VREF)/256)*1000;
t=light;
sentmsg2[0]=t/1000+0x30;
sentmsg2[1]=t%1000/100+0x30;
sentmsg2[2]=t%1000%100/10;
}
main()
{
SCON=0x50;/*方式一*/
TMOD=0x01;/*定时器0工作于方式一*//
TH0=(65536-2)/256;////初始化T0的计数寄存器,2uss溢出申请中断////////
TL0=(65536-2)%256;
st_ale=0;////初始化0809控制端口/////
oe=0;
EA=1;//打开总中断/////
ET0=1;///打开定时器零中断////////
TR0=1;//暂不启动T0//////
while(1)
{
adc0809();////调用函数获取0809转化数值
}
}
void t0(void) interrupt 1///定时器0溢出中断//////
{
TH0=0xff;
TL0=(65536-2)%256;
clk=~clk;
}