单个数码管循环显示0到9的程序。

#include <reg51.h>

unsigned char led;
unsigned char LED_CODE[10] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };

void main(void)
{
led = 0;
TMOD=0x10;
TH1=(65536-50000)/256;
TL0=(65536-50000)%256;

ET1=1;
EA=1;

TR1=1;

P2 = LED_CODE[led];
led++;

while(1);

}

//Timer1
void Timer1_Routine(void) interrupt 3
{
static unsigned char counter;

TH1=(65536-50000)/256;
TL0=(65536-50000)%256;

counter++;
if(counter == 20)
{
counter = 0;
P2 = LED_CODE[led];
led++;
if(led == 10)
led = 0;
}

}

请问,放在主函数中的
P2 = LED_CODE[led];
led++;
是什么意思?中断函数中不是已经有了么?
还有一点,
led = 0;
P2 = LED_CODE[led];
led++;
P2不是只接收到0的码么(因为觉得led++影响不了 LED_CODE[led])
为何接收到的是0到9的码。
谢谢。

主函数中的P2 = LED_CODE[led];led++;可以删去,没有任何的意义
,因为定时和循环显示都在中断函数里面完成了,主函数只是起了一个初始化的作用,led++影响LED_CODE[led]的值,它使LED_CODE[10] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 }数组中的10个值依次赋给P2,依次显示0——9的数字,即当led = 0时,P2接受0xC0,对应数码显示0,当led = 1时,P2接受LED_CODE[1]=0xF9,对应显示1,依次类推,从而显示0——9。
温馨提示:答案为网友推荐,仅供参考
相似回答