菜鸟 基于单片机的红外线心率计c程序对吗?敬请大侠指教!!!!

lutaoliuyu 2009-06-16 04:59:50

#include <REG51.H>
#include<absacc.h>
#include<INTRINS.h>
#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<count;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();
}
}
...全文
261 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Great_Bug 2009-06-25
  • 打赏
  • 举报
回复
这样长的程序,要自己去分析,遇到难搞定的问题再来求助,不要把全部程序贴上来
lbing7 2009-06-23
  • 打赏
  • 举报
回复
更要命的是连注释都少...
szandy 2009-06-22
  • 打赏
  • 举报
回复
没硬件,很难看的懂的。
zhujinqiang 2009-06-22
  • 打赏
  • 举报
回复
学习下。

27,517

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧