实行对方波信号脉冲个数的计数

2019-07-18 09:40发布

我才用的是用T0端的计数模式,计数方式为2自动再装计数,从255开始计数,来一个脉冲对变量进行加一,然后输出变量的值,我这个脉冲计数是没有时间的限制的计数。但是每次输入是个脉冲,变量才会加一,希望大神求解
#include<reg51.h>
unsigned int cnt_t0,cnt_t1,qian,bai,shi,ge,bb,wan,shiwan;
unsigned long num;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管断码表

void delay1ms(unsigned int z) //延时1ms程序
{
  unsigned char i,j;
  for(i=0;i<z;i++)
  for(j=0;j<110;j++);
}
                                                                                 
void init()           //T0初始化
{
  num=0;
  TMOD=0x06;
  TH0=255;
  TL0=255;
  ET0=1;
  EA=1;
  TR0=1;
}

void display(unsigned long num_num)           //驱动数码管显示
{
  shiwan=num_num%1000000/100000;
  wan=num_num%100000/10000;
  qian=num_num%10000/1000;
  bai=num_num%1000/100;
  ge=num_num%100/10;
  P0=0xdf;    //P0是位选
  P2=table[shiwan];
  delay1ms(1);
  P0=0xef;
  P2=table[wan];
  delay1ms(1);
  P0=0xf7;
  P2=table[qian];
  delay1ms(1);
  P0=0xfb;
  P2=table[bai];
  delay1ms(1);
  P0=0xfd;
  P2=table[shi];
  delay1ms(1);
  P0=0xfe;
  P2=table[ge];
  delay1ms(1);
}

void main() //主函数
{
  P0=0xff;
  init();
  while(1)
  {
     display(num);
        }
}

void timert0() interrupt 1
{
  num++;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。