高手老师们你好请教个问题 《为什么先关闭段选,再送位选,打开段选,这样子数码管动态显示不正常。》
#include<reg52.h>
unsigned char code smguan[]={0xC0, 0xF9, 0xA4, 0xB0,0x99, 0x92,
0x82, 0xF8,0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E };
sbit q0=P0^0; //段选
sbit q1=P0^1; //段选
sbit led =P2^0;
unsigned int x,l,k,j;
unsigned char a;
main()
{
TMOD=0X01;
TH0=0XD8;
TL0=0XF0;
TR0=1 ;
EA=1;
ET0=1;
while(1)
{
if(a==100)
{
led=~led;
l++; a=0;
if(l>99){
l=0; }
x=l;
k=x/10; j=x%10;
}
}
}
unsigned char v = 0;
void dingshizhongduan() interrupt 1
{ TH0=0XD8;TL0=0XF0;
P0=0xFF; a++;
switch (v)
{
case 0: q0=1; P1= smguan[k]; q0=0; v++;break; //为什么先关闭段选,再送位选,打开段选,这样子数码管动态显示不正常。
case 1: q1=1; P1= smguan[j]; q1=0; v=0;break;//疑问为什么先打开段选,,再送位选,关闭段选,这样子数码管动态显示正常。
default: break;
}
/* switch (v)
{
case 0: q0=0; P1= smguan[k]; q0=1; v++;break;
case 1: q1=0; P1= smguan[j]; q1=1; v=0;break;
default: break; 为什么这样子设置段选择数码管几乎不亮*/
不亮*/
|