微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机定时器问题

单片机定时器问题

时间:10-02 整理:3721RD 点击:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED1 = P1^1;
sbit key = P3^0;
uint C;
void delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
         for(j>100;j>0;j--);
}
void init()
          
{
   EA  = 1;                    
   ET1 = 1;                       
   TMOD = 0X10;               
   TH1 = (65536-50000)/256;       
   TL1 = (65536-50000)%256;             
}
void main()
{
init();
while(1)
{
   if(key==0)           //μ±?ü?ì°′??      
   delayms(500);      
         if(key==0)
         {
     TR1=1;
                 LED1=0;
   }
  }
}
void Time1(void) interrupt 3 using 0    // if(key==0)
{
         TH1 = (65536-50000)/256;       
   TL1 = (65536-50000)%256;                                               
           C++;
           if(C==20)                //μ?′?ê?·??óoó   
           {   
       C=0;         
       LED1=1;
           }                 
}  
//开机LED灭,当按下按键时候启动定时器LED灯亮,当定时器到了LED灯灭。在按下按键又启动定时器LED灯亮,到了灭就这样循环。以上的程序执行的效果是对的,为什么时间每次都不一样啊,大侠们帮帮忙,谢谢!

启动定时器的时候没有初始化C的值

你时间到了LED灭了以后,TR1都没有关掉;这样就一直计时呀。逻辑就乱了

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

网站地图

Top