仰卧起坐计数器程序
- 格式:doc
- 大小:31.50 KB
- 文档页数:3
unsigned int k;
unsigned char tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};
//数码管0~9,灭
void disp(unsigned char c);
if(START==0)
{
TH0=TH_C;
TL0=TL_C;
T0count=0;
TR0=1;
while(flag60==0)//等待60s倒计时到
{
if((sig1==1)&&(sig2==0))//sig1检测卧姿,sig2检测坐姿
{
count++;
disp(count);
while(((sig1==0)&&(sig2==1))&&(flag60==0));
//显示函数
void delay1ms(int x)//延时xms函数开始
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
/********主函数*********/
main()
{
IE=0x82;//10000010,开T0溢出中断
TMOD=0x01;//定时器0,方式1,产生50ms定时
TH0=TH_C;//装入初值
TL0=TL_C;
TR0=0;//各变量初始化
T0count=0;
k=0;
count=0;
flag60=0;
SPEAK=0;//关蜂鸣器
disp(count);//显示开始界面
while(1)//循环测量
{
if(START==0)
{
delay1ms(10);//软件延时
仰卧起坐程序
/********声明区********/
#include <reg51.h>
#include <stdio.h>
sbit sig1=P1^0;
sbit sig2=P1^1;
sbit START=P1^2;
sbit CLR=P1^3;
sbit SPEAK=P1^4;
sbit LED=P1^5;
SPEAK=0;
LED=1;பைடு நூலகம்
delay1ms(100);
}
}
}
}
}
/***********显示子函数***********/
void disp(unsigned char c)
{
unsigned char c1,c2;
c1=c/10;
c2=c%10;
P0=tab[c2];
delay1ms(500);
#define TH_C (65536-50000)/256//定时50ms,高低位
#define TL_C (65536-50000)%256
unsigned char count; //sj存放倒计时数,count存放仰卧计数
unsigned char T0count;//存放T0中断次数,20次为1s
//判断是否回到原位,若回,准备下一次计数,直到60s计时满
}
}
TR0=0;
disp(count);
TH0=TH_C;//装初值,为下次准备
TL0=TL_C;
T0count=0;
count=0;
flag60=0;
while(CLR==1)//测量完毕后等待清0键
{
SPEAK=1;
LED=0;
delay1ms(100);
{
k++;//时间值减1
T0count=0;
if(k==60)
flag60=1;
//倒计时为0,置位标志位
}
}
if(c1==0)
P2=tab[10];
else
P2=tab[c1];
}
/**********定时器中断函数************/
void TO1S(void)interrupt 1
{
TH0=TH_C;
TL0=TL_C;
T0count++;
if(T0count==20)//1s时间到则记录标志位