|
菜鸟 基于单片机的红外线心率计c程序对吗?敬请大侠指教!!!!
[复制链接]
#include
#include
#include
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
#define key P3_4//s3
#define signal P1_3
#define sw P1_6//开关
#define baiwei P2_5
#define shiwei P2_6
#define gewei P2_7
#define lamp1 P1_7
code uchar TABLE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极
uint num;
bit flag=1;
void chushi(void)
{
lamp1=1;
TMOD=0x11;//16位计数
TL0=0xDF;
TH0=0xB1;
TH1=0x3C;
TL1=0xAF;
IE=0x8A;
IP=0x08;
TR0=1;
TR1=1;
}
void delay1ms(uint count)
{
int m,n;
for(m=0;m
for(n=0;n<60;n++)
;
}
void timer0() interrupt 1//5ms扫描一次
{
uchar ge,shi,bai;
TL0=0xDF;
TH0=0xB1;
ge=num%10;
shi=(num/10)%10;
bai=num/100;
shiwei=1;
baiwei=1;
P0=TABLE[ge];
gewei=0;
delay1ms(1);
gewei=1;
baiwei=1;
P0=TABLE[shi];
shiwei=0;
delay1ms(1);
gewei=1;
shiwei=1;
P0=TABLE[bai];
baiwei=0;
delay1ms(1);
}
void timer1() interrupt 3//一分钟计时
{
uchar i,j;
TL1=0xAF;
TH1=0x3C;
i++;
if(i==20)
{
i=0;
j++;
if(j==60)
{
j=0;
flag=0;
}
}
}
void celiang(void)
{
num=0;
while(sw==1)
{
if(key==0)
{
while(flag==1)
{
TR1=1;
lamp1=0;
if(signal==1) delay1ms(20);
if(signal==1) num++;
if(signal==0) delay1ms(20);
}
while(flag==0)
{
TR1=0;
lamp1=1;
if(key==0)
{
flag=1;
num=0;
delay1ms(500);
}
}
}
}
while(sw==0)
{
num=0700308103;
}
}
void main(void)
{
chushi();
num=888;
delay1ms(500);
while(1)
{
celiang();
}
}
|
|