加上延时后为什么下面的程序没反应,求大神帮忙。
先程序#include <reg52.h>
unsigned char duan1[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
unsigned char *pduan1=duan1;
unsigned int i;
sbit key1=P3^6;
sbit wei1=P2^7;
sbit wei2=P2^6;
sbit wei3=P2^5;
sbit Led1=P1^0;
void main(void)
{
void delay1ms(unsigned int a);
TMOD=0x10;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
//TR1=1;
ET1=1;
EA=1;
while(1)
{
if(key1==0)
{
delay1ms(1); // 难道还是时间上冲突了吗?(就这里有问题)
if(key1==0)
{
TR1=0;
P0=*(pduan1+i/100);
wei1=0;
delay1ms(20);
P0=*(pduan1+i/10%10);
wei1=1;
wei2=0;
delay1ms(20);
P0=*(pduan1+i%10);
wei2=1;
wei3=0;
delay1ms(20);
wei3=1;
}
}
else TR1=1;
}
}
void timer1_1() interrupt 3
{
//unsigned int i;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
if(i==1000)
i=0;
P0=*(pduan1+i/100);
wei1=0;
delay1ms(20);
P0=*(pduan1+i/10%10);
wei1=1;
wei2=0;
delay1ms(20);
P0=*(pduan1+i%10);
wei2=1;
wei3=0;
delay1ms(20);
wei3=1;
i++;
}
void delay1ms(unsigned int a) //a=10差不多是1ms
{
unsigned char k,j;
for(k=0;k<a;k++)
for(j=0;j<120;j++);
}
这个程序的目的是“数码管前三位显示一个跑表,从000到999之间以1%秒速度运行,当按下一个独立键盘时跑表停止,松开手后跑表继续运行。(用定时器设计表)”。但是我把delay1ms(1)这条代码加上后按键就没反应了,屏蔽掉delay1ms(1)这条代码按键有反应。向大神请教。