本程序实现的是通过按键的选择来实现测量周期,还是测量脉冲宽度,通过LCD显示结果。
单独都能实现,但当按下测量脉宽是,没有反应。刚开始觉得应该是抖动的原因,然后去了抖动还是不行
请问是什么原因?
以下是源程序:
/*通过开关的转换来选择测量是周期还是脉宽*/
#include
#include
#include"display.h"
#define uint unsigned int
#define uchar unsigned char
sbit zhouqi=P1^0;
sbit maikuan=P1^1;
/*****************************************************
函数功能:延时1ms
(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒
***************************************************/
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
/*****************************************************
函数功能:延时若干毫秒
入口参数:n
***************************************************/
void delayn(unsigned char n)
{
unsigned char i;
for(i=0;i
delay1ms();
}
int t=0;
uint temp;
void main(void)
{
temp=P1;
temp=temp&0xff;
if(temp!=0xff)
{
delayn(20);
temp=P1;
temp=temp&0xff;
if(temp!=0xff)
{
temp=P1;
temp=temp&0xff;
switch(temp)
{
case 0xfe: //如果周期按键按下,测周期
TMOD=0x01;
EX0=1;
IT0=1;
EA=1;
TH0=0;
TL0=0;
TR0=1;
break;
case 0xfd: //如果脉宽按键按下,测脉宽
TMOD=0x09;
EX0=1;
IT0=1;
EA=1;
TH0=0;
TL0=0;
TR0=1;
break;
}
while(1)
{
dectobit(t);
display();
}
}
}
}
int0() interrupt 0 using 2
{
t=TH0*256+TL0;
TH0=0;
TL0=0;
}