|
//你要的計(jì)時(shí)最長(zhǎng)時(shí)間是多少?還有計(jì)時(shí)的精度要是多少?這里給你寫個(gè)簡(jiǎn)單的程序。
//有不懂可以一起討論一下。
#include"STC15F2K60S2.H"
#define uint unsigned int
#define uchar unsigned char
sbit SensorA =P2^0;
sbit SensorB =P2^1;
uint CNT=0;
void Timer0Init(void) //1毫秒@12.000MHz //計(jì)時(shí)精度1ms
{
AUXR |= 0x80; //定時(shí)器時(shí)鐘1T模式
TMOD &= 0xF0; //設(shè)置定時(shí)器模式
TL0 = 0x20; //設(shè)置定時(shí)初值
TH0 = 0xD1; //設(shè)置定時(shí)初值
TF0 = 0; //清除TF0標(biāo)志
TR0 = 1; //定時(shí)器0開始計(jì)時(shí)
ET0=1;
}
void time_r1_() interrupt 1
{
CNT++;
if(CNT==60000) //最大計(jì)時(shí)量60000ms
{
CNT=0;
}
}
void main()
{
uint Resust=0;
Timer0Init();
EA=1;
while(1)
{
if(SensorA==1) //當(dāng)傳感器a檢測(cè)到時(shí)
{
CNT=0; //從0開始計(jì)時(shí)
}
if(SensorB==1) //當(dāng)傳感器B檢測(cè)到時(shí)
{
Resust=CNT; //存儲(chǔ)計(jì)數(shù)結(jié)果
}
}
} |
|