打印

定时器计脉冲宽度问题

[复制链接]
1489|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
2001myp|  楼主 | 2009-3-12 18:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <REG51.H>    
#define uchar unsigned char
#define uint unsigned int
uchar code SEG7[10]={0x12,0xb7,0x19,0x91,0xb4,0xd0,0x50,0x97,0x10,0x90};
uchar ACT[4]={0xfe,0xfd,0xfb,0xf7}; 
uint ms=0;cnt=0;                
/****************************/
void initial(void)        
{                    
TMOD=0x0a;            
TH0=0x90;            
TL0=0x90;            
IE=0x00;                
TR0=1;                
}
/**************************************************/
void delay(uint k)                
{                            
uint data i,j;                    
    for(i=0;i<k;i++)            
    {                        
    for(j=0;j<121;j++){;}        
    }                        
}        
/****************************/            
void main(void)            
{    uchar i;
    initial();
           for(;;)                                
      { while(!TF0);    
       TF0=0;         
       if(++cnt>=9){cnt=0;ms++;}
        for(i=0;i<100;i++)        
        {if(ms>99) ms=ms-ms/99*99;                    
        P1=SEG7[ms/10];    
        P2=ACT[0];            
        delay(1);                
        P1=SEG7[(ms%10)];
        P2=ACT[1];            
        delay(1);  
      }    }                
}                        
一个51单片机计算脉冲宽度的小程序,我将GATE设为1,即设为INTO脚输入高电平开始计时,输入低结束的程序,并送数码管显示。我只有两个数码管,所以让它从1到99循环。可是我一通电,它就成了秒表,慢慢的加从1到99,这到没什么,因为INTO本来就是高电平吧,可是当我把INTO拉低以后,数码管有时不亮,有时就亮一个数码管,这是为什么呢,哪位大侠帮小弟解释一下啊

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

210

帖子

0

粉丝