单片机定时器问题
时间: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灯亮,到了灭就这样循环。以上的程序执行的效果是对的,为什么时间每次都不一样啊,大侠们帮帮忙,谢谢!
#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都没有关掉;这样就一直计时呀。逻辑就乱了