下面是我的测试代码:单片机用89s52.ad芯片用adc0809(旧片),输出通过单片机p1口用8只发光管显示,输入端输入电压,数据输出端没有反应.不知何原因,请大家帮助分析.
#include <at89x52.h>
//adc0809,ad转测试程序.
unsigned char getdata;
int i;
void delay(i);//廷时程序
sbit st=p3^0;//位定义;
sbit oe=p3^2;//位定义;
sbit eoc=p3^1;//转换检测位定义;
sbit clk=p3^3;//时钟位定义;
void main(void)
{
st=0;
oe=0;//转换销存
et0=1;//开t0中断
et1=1;//开t1中断
ea=1;//开总中断
tmod=0x12;
th0=216;//t0初值
tl0=216;//t0初值
th1=0x3c;//t1初值
tl1=0xb1;//t1初值
tr1=1;//开始计数
tr0=0;//t0晳不计数
st=1;
delay(600);
st=0;//st 0--1--0初始
while(1)
{
if(eoc==1)//检测是否转换结束
{
oe=1;//如结束送出转换后的数
getdata=p0;
p1=getdata;//送数到p1口
delay(600);
oe=0;//ad重心开始,第二次循环
delay(600);
st=1;
delay(600);
st=0;
}
}
}
void t0(void) interrupt 1 using 0
{
//空
}
void t1(void) interrupt 3 using 0
{
clk=~clk;//中断方式产生给ad0809芯片用的时钟
th1=0x3c;//初值重装
tl1=0xb1;
}
void delay(int i)//延时
{
while(i!=0)
i--;
}