为什么动态数码管不用消隐
#include<reg52.h>#define WXUAN P2 //位选#define DXUAN P0 //段选unsigned char code we[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char code figure[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f};unsigned int i,j,fre;unsigned char num;void main(){ TMOD=0x01; fre=50; TH0=(65535-fre)/256; TL0=(65535-fre)%256; EA=1; ET0=1; TR0=1; while(1)}void interrupt0() interrupt 1{ TH0=(65535-fre)/256; TL0=(65535-fre)%256; num++; if(num==1) { num=0; WXUAN=we[i]; DXUAN=figure[i]; i++; if(i==8) i=0; }}我想问的是:为什么这个程序不用消隐?如,第一次进入中断,位选WXUAN=we[0],段选DXUAN=figure[0];当第二次进入中断时,首先,位选WXUAN=we[1],此时段选DXUAN仍为figure[0],此时应该会出现1的影子才对。然后才段选DXUAN=figure[1];通过调试,发现确实是如此。但是运行此程序后显示没有问题,根本不用不用消隐。。。实在理不清头脑了。于是写了另外一个数码管动态显示。如下:#include<reg52.h>#define WXUAN P2#define DXUAN P0unsigned char code we[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char code figure[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f};unsigned int i,j;void main(){while(1)for(i=0;i<8;i++){WXUAN=we[i];DXUAN=figure[i];j=10; while(j--); DXUAN=0x00;//消隐 }}同样:第一次进入中断,位选WXUAN=we[0],段选DXUAN=figure[0];当第二次进入中断时,首先,位选WXUAN=we[1],此时段选DXUAN仍为figure[0],此时应该会出现1的影子才对。然后才段选DXUAN=figure[1];但运行这程序时,如果不加消隐,显示却会出现问题。加了消隐后才正常。很是纠结,寻求解答,谢谢!(财富值仅19。。。。尽力了)