}
}
Pulsecnt++; //来一次中断脉搏计数器加1
/******************************************************************** 函数功能:定时器/计数器0中断处理 入口参数:null 返 回:null 备 注:null
********************************************************************/ void Timer0IntProc() interrupt 1 {
TH0 = TIMER0_HIGHT; //设置定时器0高字节初值 TL0 = TIMER0_LOW; //设置定时器0低字节初值 if(++cnt10ms == 100) { }
if(keyin == 0) {
if(starttest == 1) //处在测试状态 {
//检测按键
cnt10ms = 0; if(starttest == 1) { }
if(++cnt1s == 60) { }
starttest = 0; //一次检测完毕,等待下一次检测 Pulsenum = Pulsecnt; //保存测得脉搏值
//一分钟时间到 //处在测试状态 //1s计时到
}
}
}
cnt10ms = 0; cnt1s = 0; Pulsecnt = 0;
//复位测试值,重新开始测试
else { }
//不在测试状态,开始新的一次测试
starttest = 1; cnt10ms = 0;
/////////////////////////End of Timer0IntProc//////////////////////// void Init_Extint(void) {
IT0 = 1; //外部中断1设置为下降沿触发 IE0 = 0; //标志位清0 EX0 = 1; //允许外部中断1 }
/******************************************************************** 函数功能:定时器/计数器初始化 入口参数:null 返 回:null 备 注:null
********************************************************************/ void TimerInitProc() {
TMOD &= 0xF0; TMOD |= 0x01;
//设置定时器0,方式1:16位定时器
TH0 = TIMER0_HIGHT; //设置定时器0高字节初值
TL0 = TIMER0_LOW; //设置定时器0低字节初值 TR0 = 1;
//启动定时器0 //开定时器0中断
ET0 = 1; }
EA = 1; //开总中断
/////////////////////////End of TimerInitProc//////////////////////// void initvar() { }
void Init_System(void) {
Init_Extint(); TimerInitProc(); }
/******************************************************************************
* 函 数 名: Display(uchar chose_dat,uchar dat) * 函数功能: 数码管显示
* 入口参数: chose_dat数码管显示字位,dat显示字型 * 返 回: 无
*******************************************************************************/
void Display(uint8 chose_dat, uint8 dat) {
initvar(); starttest = 0; cnt10ms = 0; cnt1s = 0; Pulsecnt = 0; Pulsenum = 0;
P0 = dat; //送显示字型
P2 = ~(0x01< DelayMs(1); //延时1MS } void ShowDisp(uint8 tPulsenum, uint8 tPulsecnt, uint8 tcnt1s) { } /******************************************************************** 函数功能:延时ms 入口参数:MS 返 回:null 备 注:null ********************************************************************/ void DelayMs(uint8 Ms) { unsigned char i,j; do { for(i=5;i>0;i--) for(j=98;j>0;j--); Display(6, DispCode[tPulsenum]); //显示上次测量的脉搏 tPulsenum = tPulsenum/10; Display(7, DispCode[tPulsenum]); Display(3, DispCode[tPulsecnt]); //显示测试中的脉搏 tPulsecnt = tPulsecnt/10; Display(4, DispCode[tPulsecnt]); Display(0, DispCode[tcnt1s]); //显示测试中的时间 tcnt1s = tcnt1s/10; Display(1, DispCode[tcnt1s]); P2 = 0xFF; //关闭显示 }while(--Ms); } ///////////////////////////End of DelayMs//////////////////////////// //Test for 12M