专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

测速度与路程

作者:佚名   来源:本站原创   点击数:  更新时间:2011年03月16日   【字体:

/******************************
对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);
 }
}
关闭窗口

相关文章