写了个关于adc0809c语言程序,目的显示0到256,最后只显示0,怎么回事啊,帮帮忙啊

#include<reg52.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
sbit wela=P3^7;
sbit dula=P3^6;
sbit OE =P2^2;
sbit EOC=P2^1;
sbit ST =P2^0;
sbit CLK =P2^3;
sbit ADDA=P2^4;
sbit ADDB=P2^5;
sbit ADDC=P2^6;
void display(uchar num);
uchar code table[]={0x03,0x9f,0x25,0x0d,0x99,0x49,
0x41,0x1f,0x01,0x09,0x11,0xc1,
0x63,0x85,0x61,0x71,0xff};

void delay5ms()
{ uchar i;
for (i=0;i<150;i++) ;
}

void main()
{

uchar ADC=0;
CLK=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
ADDA=0;
ADDB=0;
ADDC=1;

while(1)
{
ST=0;
ST=1; //上升沿清除ADC寄存器
ST=0; //下降沿启动转换
while(!EOC); //等待转换结束
OE=1; //允许输出
delay5ms();
ADC=P1;
OE=0; //关闭输出
display(ADC);
}
}

void time() interrupt 1
{
CLK=~CLK;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}

void display(uchar num)
{
wela=1;
P0=0xf1;
wela=0;
dula=1;
P0=table[num/1000];
dula=0;
delay5ms();

wela=1;
P0=0xf2;
wela=0;
dula=1;
P0=table[num%1000/100];
dula=0;
delay5ms();

wela=1;
P0=0xf4;
wela=0;
dula=1;
P0=table[num%100/10];
dula=0;
delay5ms();

wela=1;
P0=0xf8;
wela=0;
dula=1;
P0=table[num%10];
dula=0;
delay5ms();

}

第1个回答  2011-05-22
感觉clk震荡好像有点低
相似回答