#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#include "xianshi.c"
uint mega16_ad()
{
uint addata;
DDRA&=~BIT(PA0);
PORTA&=~BIT(PA0);
ADMUX=0;
ADCSR=0X80;
ADCSR|=BIT(ADSC);
while(!(ADCSR&(BIT(ADIF))));
addata=ADCL;
addata=addata+ADCH*256;
return addata;
}
void main()
{
uint ada,i,ad[4];
while(1)
{
ada=mega16_ad();//999 0999
for(i=0;i<4;i++)
{
ad[3-i]=ada%10;
ada=ada/10;
}
for(i=0;i<4;i++)
{
show(ad[i],i);
delay(2); DDRA|=BIT(3);
DDRA|=BIT(4);
DDRB=0XFF;
}
}
}
=================================================================
<xianshi.c>
#pragma data:code
const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<1141;j++);
}
}
void show(uchar j,uchar k)
{
DDRA|=BIT(3);
DDRA|=BIT(4);
DDRB=0XFF;
PORTA|=BIT(3);
PORTB=table[j];
PORTA&=~BIT(3);
PORTB=0XFF;
PORTB&=~BIT(k);
PORTA|=BIT(4);
PORTA&=~BIT(4);
delay(1);