大致思想是,跳变沿从P3.3进入时,启动定时器0,等待跳变沿再次进入,停止定时器,读取定时器的值,然后清零,关闭中断允许,主函数显示,开中断,再次……,结果是显示的数值是随机数,求指点
#include<reg52.h>
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned int i,j;
char speed;
bit flag;
//省略了显示函数
void main()
{
TMOD=0X01
TH0=0;
TL0=0;
EX1=1;
IT1=1;
EA=1;
while(1)
{
if(!flag)
{
j=(unsigned int)(i*1.09);
speed=1000000/j;
display(speed);
delayms(1000) ;
EX1=1;
}
}
}
void inter() interrupt 2
{
flag=~flag;
if(flag)
{
TR0=1;
i=0;
}
else
{
TR0=0;
i=TH0;
i<<=8;
i|=TL0;
TH0=0;
TL0=0;
EX1=0;
}
}
| 欢迎光临 OpenEdv-开源电子网 (https://www.openedv.com/) | Powered by Discuz! X3.4 |