系统是作为一个电机测速系统,这里只把程序部分弄出来
初始化部分
TMOD=0x51; //T0方式1 定时计数 T1方式1计数
TH0=0xb1; //装入初值 20MS
TL0=0xe0;
TH1=0x00; // 计数
TL1=0x00;
TR0=1; //启动 t0
TR1=1; //启动t1
gw=sw=bw=qw=ww=0; //数码管初始化
然后是数码管显示部分
gw=x%10; //求速度个位值,送到个位显示缓冲区
sw=(x/10)%10; //求速度十位值,送到十位显示缓冲区
bw=(x/100)%10; //求速度百位值,送到百位显示缓冲区
qw=(x/1000)%10; //求速度千位值,送到千位显示缓冲区
ww=(x/10000)%10;
然后是中断子函数
/*********t0定时*中断函数*************/
void t0() interrupt 1 using 2
{
TH0=0xb1; //重装t0
TL0=0xe0;
f--;
if(k==0)
{
if(f<t)
P10=1;
else
P10=0;
P11=0;
}
else
{
if(f<t)
P11=1;
else
P11=0;
P10=0;
}
if(f==0)
{
f=5;
}
j++;
if(j==50)
{
j=0;
x=TH1*256+TL1; //t1方式1计数,读入计数值
TH1=0x00;
TL1=0x00;
x++;
display();
}
}
问题有两个 1,为什么在中断子函数中
x=TH1*256+TL1; //t1方式1计数,读入计数值
TH1=0x00;
TL1=0x00;
x++;
会出现一个X++
2 ,这个程序测出的单位是圈/秒还是圈/分钟
初始化部分
TMOD=0x51; //T0方式1 定时计数 T1方式1计数
TH0=0xb1; //装入初值 20MS
TL0=0xe0;
TH1=0x00; // 计数
TL1=0x00;
TR0=1; //启动 t0
TR1=1; //启动t1
gw=sw=bw=qw=ww=0; //数码管初始化
然后是数码管显示部分
gw=x%10; //求速度个位值,送到个位显示缓冲区
sw=(x/10)%10; //求速度十位值,送到十位显示缓冲区
bw=(x/100)%10; //求速度百位值,送到百位显示缓冲区
qw=(x/1000)%10; //求速度千位值,送到千位显示缓冲区
ww=(x/10000)%10;
然后是中断子函数
/*********t0定时*中断函数*************/
void t0() interrupt 1 using 2
{
TH0=0xb1; //重装t0
TL0=0xe0;
f--;
if(k==0)
{
if(f<t)
P10=1;
else
P10=0;
P11=0;
}
else
{
if(f<t)
P11=1;
else
P11=0;
P10=0;
}
if(f==0)
{
f=5;
}
j++;
if(j==50)
{
j=0;
x=TH1*256+TL1; //t1方式1计数,读入计数值
TH1=0x00;
TL1=0x00;
x++;
display();
}
}
问题有两个 1,为什么在中断子函数中
x=TH1*256+TL1; //t1方式1计数,读入计数值
TH1=0x00;
TL1=0x00;
x++;
会出现一个X++
2 ,这个程序测出的单位是圈/秒还是圈/分钟