/******************************
對(duì)P3.2口輸入的脈沖測(cè)量周期,從而求出脈沖的頻率
T0設(shè)置為工作于方式1的定時(shí)器,用來(lái)計(jì)內(nèi)部時(shí)鐘脈沖,再乘以單個(gè)時(shí)鐘周期,得到T
INT0在脈沖的下降沿讀數(shù),其中第1次計(jì)數(shù)是不準(zhǔn)確的
***************************/
//==============================
#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為邊沿觸發(fā) TH0=0; //計(jì)數(shù)值清0 TL0=0; IP=0x01; //置相應(yīng)優(yōu)先級(jí) IE=0x81; //開(kāi)中斷 TR0=1; //啟動(dòng)T0 } void int_0(void) interrupt 0 using 1 //INT0中斷 { TR0=0; period=period+2; //車輪每圈周長(zhǎng)是2米 count=TL0+TH0*256; //求計(jì)數(shù)值 rflag=1; TH0=0; TL0=0; TR0=1; } void main() { control(); //初始化 while(rflag==0); //關(guān)顯示,省電 while(1) { if(p37==0) //選擇顯示項(xiàng)目 display(count); else display(period); } }