原创 测速度与路程

2009-4-2 17:57 2844 5 5 分类: MCU/ 嵌入式

/******************************
对P3.2口输入的脉冲测量周期,从而求出脉冲的频率
T0设置为工作于方式1的定时器,用来计内部时钟脉冲,再乘以单个时钟周期,得到T
INT0在脉冲的下降沿读数,其中第1次计数是不准确的


***************************/
//==============================
#include <reg52.h>
#include <absacc.h>
#include "display.c"
#define uchar unsigned char
#define uint unsigned int      
#define ulong unsigned long  
uint count="0";
ulong period="0";
bit bdata rflag="0";
bit bdata rflag1=0;
sbit p32=P3^2;
sbit p37=P3^7;
void control (void)
{
TMOD=0x09;       //T0方式1且GATE位为1
IT0=1;        //INT0为边沿触发
TH0=0;        //计数值清0
TL0=0;
IP=0x01;       //置相应优先级
IE=0x81;       //开中断
TR0=1;        //启动T0
}
void int_0(void) interrupt 0 using 1 //INT0中断
{
TR0=0;      
period=period+2;     //车轮每圈周长是2米
count=TL0+TH0*256;     //求计数值
rflag=1;
TH0=0;
TL0=0;
TR0=1;
}
void main()
{
control();       //初始化
while(rflag==0);     //关显示,省电
while(1)
 {
 if(p37==0)      //选择显示项目
 display(count);
 else
 display(period);
 }
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条