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

求帮忙看看定时器的问题

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit led=P1;
uchar num;
void main()
{
        TMOD=0x01;
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;       
        EA=1;
        ET0=1;
        TR0=1;
    while(1);
}
void TO_time() interrupt 1
{
               
                led=~led;
}
为什么LED灯闪烁呢,这里定时器没有重新设定初值啊

定时器在响应了中断后要重新给TH0,TL0赋值。因为既然响应了中断,那么肯定TF0=1了,既然TF0=1了,那么肯定计数满溢出了。你的中断程序里没有重新赋值,所以不闪烁

可是我的灯却在不停闪烁

不好意思,我看成不闪烁了。

肯能是中断标志的问题

程序好像是没错  看硬件电路有没有好错,最好接下上拉电阻

不是应该重新附初值的吗?

没有关闭中断,即TR0依然等于1,定时器溢出后重新头0开始计数了

void timer0_initialize()
{
counter=0;
TR0=0;
TMOD=0x01;     //定时器0
TH0=(65535-5000)/256;  //5ms
TL0=(65535-5000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0()interrupt 1   //中断服务子程序
{

TH0=(65535-5000)/256;  //5ms
TL0=(65535-5000)%256;
counter++;
}
你换这个再试试!

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

网站地图

Top