
为什么我的程序 定时器中断函数 stop()里的4300改为教程里的2000,在开发板上按按键就没法显示了。求大神解决。。
#include<reg52.h>
//////////////////////////////////////定义&初始化/////////////////////////////////////////////////////////////
sbit latch_duan = P2^2;//段锁存)
sbit latch_wei = P2^3;//位锁存)
sbit jia = P2^1;//加键)
sbit jian = P2^0;//减键)
void timer();
void stoper();
void delay(unsigned int m);
void delays(unsigned int m);//1ms延时函数
void display(unsigned int num);
unsigned int num = 0;
unsigned char code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//段码)
unsigned char code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位码)
unsigned char temp[8];//缓冲数组)
//////////////////////////////////////////////////////////////////////////////////////////////////////
void main()
{
timer();
jia = 1;// 强制高电平
jian = 1;// 强制高电平
while(1)
{
if(jia==0)
{
delays(10);//防抖
if(jia==0)
{
while(jia==0)//持续按下
{}
if(num<999)
num++;
}
}
if(jian==0)
{
delays(10);
if(jian==0)
{
while(jian==0)
{}
if(num>0)
num--;
}
}
temp[0]=duan[(num/100) ];
temp[1]=duan[(num/10)%10];
temp[2]=duan[(num/1)%10 ];
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void delay(unsigned int m)//延时函数2t)
{//T=mx2+5 uS (12M晶振)
while(--m);//1ms=1000μs
}//m=(0~255)
void delays(unsigned int m)//1ms延时函数
{
while(m--);
delay(245);//0.5ms=500μs
delay(245);//两个delay(245)≈【245x2+5】x2=1000μs=1ms
}
////////////////////////////////////八位数码管显示器函数//////////////////////////////////////////////////////////////
void display(unsigned int num)
{
static unsigned char i=0;
P0=0; //防其他数码管重影
latch_duan = 1;
latch_duan = 0;
P0=temp[i];
latch_duan = 1;
latch_duan = 0;
P0=wei[i];
latch_wei = 1;
latch_wei = 0;
delays(2);//延迟防重影
i++;
if (i==num)
{i = 0;}
}
/////////////////////////////////////////////////////////////////////////////////////////////
void timer()
{
TMOD=0x01;//定时器模式
TH0=0x00;//高八位
TL0=0x00;//低八位
EA=1; //定时器总开关
ET0=1; //定时器中断开关
TR0=1; //定时器开关
}
void Stop() interrupt 1
{
TH0=(65536-4300)/256;
TL0=(65536-4300)%256;
display(3);
}