微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于外部脉冲定时计数

关于外部脉冲定时计数

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar count,s;
sbit dula=P2^6;      
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void display(uchar temp);
void delay(uint z)
{
     uint x,y;
     for(x=z;x>0;x--)
       for(y=110;y>0;y--);
}
uchar shi,ge;
       
void main()
{
         EX0=1;
         IT0=1;
     TMOD=0x01;
     EA=1;
     ET0=1;
     TR0=1;
     TH0=(65536-50000)/256;         //设定定时器初值
     TL0=(65536-50000)%256;       
                 while(1)
                 {
                         display(count);
                        }
}

void zhongduan0()interrupt 0
{
        count++;
          if(s==1200)
                {
                        EA=0;
                        TR0=0;
                        EX0=0;
                        }
}
void timer0()interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        s++;
       

}
void display(uchar temp)     
{
     uchar shi,ge;
     shi=temp/10;
         ge=temp%10;

                 dula=1;
         P0=table[shi];
                 dula=0;
                 P0=0xff;
                 wela=1;
         P0=0xfe;
                 wela=0;
         delay(5);      
              dula=1;
         P0=table[ge];
                 dula=0;
                 P0=0xff;
                 wela=1;
                 P0=0xfd;
                 wela=0;
         delay(5);
}
大家请看一下,这个程序为什么实现不了定时呢。

你想实现什么功能呢
你在中断里把 EA关闭了。
count还能++ 吗
你是想用外部触发启动定时器吗

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top