#include <at89x51.h>
#include <absacc.h>
#define unit unsigned int
#define uchar unsigned char
#define ADC 0x7FF8 //ADC0809的端口地址
sbit led1=P2^0; //三个数码管的位控端
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3;
unsigned char ad_data,LED1,LED2,LED3;
unsigned char idata led_data[3];
uchar code led_segment[12]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x0,0x0};
void delay(unsigned int i)
{
while(i)i--;
}
void display(void) //显示子程序
{
LED1=ad_data%10;
LED2=(ad_data/10)%10;
LED3=ad_data/100;
P2=0xff;
delay(2);
P1=led_segment[LED1];
led1=0;
delay(100);
led1=1;
if((LED3==0)&&(LED2==0))LED2=10;
P1=led_segment[LED2];
led2=0;
delay(100);
led2=1;
if(LED3==0)LED3=10;
P1=led_segment[LED3];
led3=0;
delay(100);
led3=1;
}
void ad0808(void) interrupt 0
{
ad_data=XBYTE[ADC]; //存数
XBYTE[ADC]=0; //再次启动AD转换
}
void main(void)
{
EA=1;
EX0=1;
IT0=1;
ad_data=0;
XBYTE[ADC]=0; //启动AD转换
while(1)
{
display(); //反复显示直到下一次中断
}
}