📄 cepin.c
字号:
/*************定时1s对外部脉冲计数*********************************/
//定时1秒 T1 定时,T0 计数
// T0--P3.4 输入信号
/**********************************************/
#include<reg51.h>
unsigned int number; //计数值
unsigned int count; //常规参数
/************************************************************************************************************/
unsigned char d[4]; //显示的数值
unsigned char code digit[4]={0xf8,0xf4,0xf2,0xf1}; //数码显示选择
unsigned char code tab[10]={0x3f,6,0x5b,0x4f,0x66,0x6d, 0x7d,7,0x7f,0x6f};
//数码管0-----9;
/********延时子程序***********/
void delay(unsigned char dy)
{
while(--dy);
}
/********十进制到BCD码的转换*************/
void hextobcd(unsigned int hexs)
{
d[0]=hexs/1000;
hexs=hexs%1000;
d[1]=hexs/100;
hexs=hexs%100;
d[2]=hexs/10;
hexs=hexs%10;
d[3]=hexs;
}
/*******非中断的显示子程序***********/
void display0()
{
unsigned char m;
for(m=0;m<4;m++)
{
P2=digit[m]; P0=tab[d[m]];
delay(250);
P0=0;
}
}
/************************************************************************************************************/
/**************main函数******************/
main()
{
unsigned char k2; //延时参数
unsigned int temp;
TMOD=0x15; //定时器的方式控制字
TH0=0;TL0=0; //TH0为定时器/记数器0高字节,TL0为定时器/记数器0低字节
TH1=0x4a;TL1=0x00; // T1 定时50ms
ET1=1;ET0=1;
EA=1;
TR0=1;
TR1=1;
count=1;
while(1)
{
while(!TF1) {display0();}
count--;
if(count==0)
{
TR0=0;
TR1=0;
count=2;
temp=(TH0<<8|TL0);
number=temp/100;
hextobcd(number);
display0();
for(k2=0;k2<50;k2++) {delay(200); display0();}
TH0=0;
TL0=0;
TH1=0x4a;
TL1=0;
TF1=0;
TR0=1;
TR1=1;
}
else
{TF1=0;TH1=0x4a;TL1=0;TR1=1;}
if(number<=24 && number>=0) P3=0x01;
else if(number>24 && number<48) P3=0x02;
else if(number>48 && number<98) P3=0x04;
else if(number>98) P3=0x80;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -