|
程序如下;怎么ADC0809一直处于忙状态 (P[0..7]接D[0..7]P0接数码管)
#include
#define uchar unsigned char
#define uint unsigned int
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管显示码0-9
sbit ST=P3^2;//转换启动信号
sbit EOC=P3^1;//转换结束信号
sbit OE=P3^0;//输出允许信号
void delay(uint time)
{
uint i,j;
for(i=0;i
for(j=0;j<50;j++);
}
void display()
{
uchar bw,sw,gw,team,i;
ST=0;//启动转换
ST=1;
ST=0;
while(EOC==0);//等待转换结束
delay(100);
OE=1;//允许输出
team=P1;暂存转换结果
OE=0;//关闭输出
bw=team/100;//将AD转换结果转换成BCD码
sw=(team%100)/10;
gw=team%10;
for(i=0;i<1;i++)
{
P0=table[bw];
P2=0xfd;
delay(100);
P0=table[sw];
P2=0xfb;
delay(100);
P0=table[gw];
P2=0Xf7;
delay(100);
}
}
void main()
{
P3=0X30;//控制选通0IN3
while(1)
{
display();
}
}
|
|