📄 main.c
字号:
//-----------------------------------------------------------------------------//
//单片机心律计C51程序---2008-11-11---by tjx------------------------------------//
//-----------------------------------------------------------------------------//
//-----------------------------------------------------------------------------//
//定义各个接口-----------------------------------------------------------------//
//-----------------------------------------------------------------------------//
#include <AT89X52.H>
#include<absacc.h>
#include<INTRINS.h>
#define uint unsigned int //定义一下方便编程
#define uchar unsigned char //定义一下方便编程
#define ulong unsigned long //定义一下方便编程
#define key P3_4 //定义启动按牛口
#define signal P1_3 //定义信号输入口
#define sw P1_6 //定义拨动开关口
#define baiwei P2_5 //定义百位驱动口
#define shiwei P2_6 //定义十位驱动口
#define gewei P2_7 //定义个位驱动口
#define lamp0 P2_0 //定义灯一驱动口
#define lamp1 P1_7 //定义灯二驱动口
#define SEGDATA P0 //定义七段译码输出口
code uchar datab[11]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x3F};
//定义共阳极七段译码值
uint num=0,i=0; //定义心律计数值
uchar ge,shi,bai;
bit flag=0; //定义时间标志位
//-----------------------------------------------------------------------------//
//定义完毕---------------------------------------------------------------------//
//-----------------------------------------------------------------------------//
//-----------------------------------------------------------------------------//
//单片机初始化函数-------------------------------------------------------------//
//-----------------------------------------------------------------------------//
void mcuint(void)
{
lamp0=1;
lamp1=1;
TMOD=0x11;
TL0=0x3C;
TH0=0xF6;
TL1=0xB0;
TH1=0x3C;
IE=0x8A;
IP=0x08;
TR0=1;
}
//-----------------------------------------------------------------------------//
//函数完毕---------------------------------------------------------------------//
//-----------------------------------------------------------------------------//
//-----------------------------------------------------------------------------//
//延时1ms的函数----------------------------------------------------------------//
//-----------------------------------------------------------------------------//
void delay1ms(uint count)
{
int m,n;
for(m=0;m<count;m++)
for(n=0;n<59;n++)
;
}
//-----------------------------------------------------------------------------//
//函数完毕---------------------------------------------------------------------//
//-----------------------------------------------------------------------------//
//-----------------------------------------------------------------------------//
//T0中断服务函数,作用是每5ms扫描一次数码管------------------------------------//
//-----------------------------------------------------------------------------//
void timer0() interrupt 1
{
TL0=0x3C;
TH0=0xF6;
ge=num%10;
shi=(num/10)%10;
bai=num/100;
shiwei=1;baiwei=1;
SEGDATA=datab[ge];
gewei=0;
delay1ms(1);
gewei=1;baiwei=1;
SEGDATA=datab[shi];
shiwei=0;
delay1ms(1);
gewei=1;shiwei=1;
SEGDATA=datab[bai];
baiwei=0;
delay1ms(1);
baiwei=1;
}
//-----------------------------------------------------------------------------//
//函数完毕---------------------------------------------------------------------//
//-----------------------------------------------------------------------------//
//-----------------------------------------------------------------------------//
//T1中断函数,作用是一分钟计时,时间到置标志位为1,lamp0用于检测T1是否工作-----//
//-----------------------------------------------------------------------------//
void timer1() interrupt 3
{
TL1=0xB0;
TH1=0x3C;
i++;
lamp0=~lamp0;
if(i==600)
{i=0;flag=1;}
}
//-----------------------------------------------------------------------------//
//函数完毕---------------------------------------------------------------------//
//-----------------------------------------------------------------------------//
//-----------------------------------------------------------------------------//
//测量心律函数-----------------------------------------------------------------//
//-----------------------------------------------------------------------------//
void celiang(void)
{
num=0;
while(sw==1)
{
if(key==0)
{
TR1=1;
lamp1=0;
while(flag==0)
{
while(signal) ;
while(~signal) ;
if(signal==1) delay1ms(20);
if(signal==1) num++;
delay1ms(50);
}
while(flag==1)
{
TR1=0;
lamp1=1;
if(key==0)
{
flag=0;
num=0;
delay1ms(400);
}
}
}
}
while(sw==0)
{
num=123;
}
}
//-----------------------------------------------------------------------------//
//函数完毕---------------------------------------------------------------------//
//-----------------------------------------------------------------------------//
//-----------------------------------------------------------------------------//
//主函数,开机初始化单片机,并显示2s的888,用于检测笔画是否接正确--------------//
//-----------------------------------------------------------------------------//
void main(void)
{
mcuint();
num=888;
delay1ms(400);
while(1)
{
celiang();
}
}
//-----------------------------------------------------------------------------//
//主函数完毕-------------------------------------------------------------------//
//-----------------------------------------------------------------------------//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -