zhouqixinhaoceliang.c
来自「此程序可以对时钟脉冲信号进行计数」· C语言 代码 · 共 115 行
C
115 行
/***********************************************************
周期信号测量实验(方案2)
2002-4-8
PHIL Instrument & Equitment Co,.Ltd.
***********************************************************/
#include <reg51.h>
unsigned char c[5]={0x0a,0x0a,0x0a,0x0a,0x0a};
unsigned char flag;
unsigned int a;
/***********************************************************
延时1秒子程序
***********************************************************/
void delaytime()
{
unsigned char i,j;
/*#pragma asm
MOV R5,#06H
D1S1: MOV R7,#0FFH
D1S2: MOV R6,#0FFH
D1S3: DJNZ R6,D1S3
DJNZ R7,D1S2
DJNZ R5,D1S1
#pragma endasm */
//延时10ms×count
for(i=0;i<100;i++)
{
for(j=0;j<120;i++) //120是在12M时钟时实验出的数值
{}
}
}
/***********************************************************
初始化子程序
***********************************************************/
void initial() reentrant
{
TMOD=0x05; //T0定义为16位计数器
TH0=0x00;
TL0=0x00;
EX0=1;
}
/***********************************************************
外部0中断子程序
***********************************************************/
void sever_int0() interrupt 0 using 1
{
flag=1;
initial();
}
/**************************
十六进制转换为十进制
**************************/
void h_d00(unsigned int i)
{
c[4]=i/10000;
if(c[4]==0)
c[4]=0x0a;
i=i%10000;
c[3]=i/1000;
if(c[3]==0)
c[3]=0x0a;
i=i%1000;
c[2]=i/100;
if(c[2]==0)
c[2]=0x0a;
i=i%100;
c[1]=i/10;
if(c[1]==0)
c[1]=0x0a;
i=i%10;
c[0]=i;
}
/**************************
显示子程序
**************************/
void display()
{
unsigned char dispnum[11]={3,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,1,9,0xff}; //0xff 为无显示
unsigned char i,j,k;
j=1;
for(i=0;i!=5;i++)
{
P1=0;
k=c[i];
P0=dispnum[k];
P1=j;
j=j<<1;
P1=0;
}
}
/***********************************************************
主子程序
***********************************************************/
main()
{
TCON=1; //外部中断0为下降沿触发方式
initial();
ET1=0; //关定时器中断
for(;;)
{
if(flag==1)
{
EX0=0;
TR0=1;
delaytime();
TR0=0;
a=TH0*100+TL0;
h_d00(a);
display();
a=0;
}
flag=0;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?