标题: 求助,关于单片机定时器中断时间问题 [打印本页]

作者: liugc123    时间: 2020-1-25 11:50
标题: 求助,关于单片机定时器中断时间问题
#include "reg52.h"

sbit led1 = P2^0;

unsigned int cnt = 0;

void Timer0Init();

void main()
{
        Timer0Init();
        while(1)
        {
               
        }
}


void Timer0Init()           //定时1ms,11.0592M
{
        TMOD = 0X01;
        TL0 = 0XCD;
        TH0 = 0XD4;
        TR0 = 1;
        TF0 = 0;
        ET0 = 1;
        EA = 1;
}


void Timer0() interrupt 1
{
        TL0 = 0XCD;
        TH0 = 0XD4;
        
        cnt++;
        if(cnt>=100)
        {
                cnt = 0;
                led1 = ~led1;
        }
        
}
预期效果0.1ms闪烁,实际效果1s闪烁,求助
作者: 王可乐_    时间: 2020-1-25 11:50
你好,你的定时器赋初值为11ms,加上下面cnt==100,就是1100ms一次,可以改成下面这段,因为1ms的闪烁间隔我看不出来,,但是应该是对的void Timer0() interrupt 1 {         TH0=0XFC;                                 TL0=0X18;                  cnt++;         if(cnt==1)         {                 cnt = 0;                 led1 = ~led1;         }          }
作者: ggggaaaaaaa    时间: 2020-1-27 00:45
知道为何没人回答吗?
提问的方法不对,描述不清楚.

虽然不知道那些寄存器什么意思,最快的方法就是把那个00改成10.然后好好看技术手册,修改寄存器的数值
作者: sgly    时间: 2020-1-27 07:38
你是不是问错了啊,按照你代码逻辑是100ms闪烁一次吧,因为你定时器最短是1ms的,怎么会变成0.1ms闪烁呢,况且0.1ms的闪烁人眼根本分辨不过来,现象是一直亮,没什么意义
作者: liugc123    时间: 2020-1-27 13:59
sgly 发表于 2020-1-27 07:38
你是不是问错了啊,按照你代码逻辑是100ms闪烁一次吧,因为你定时器最短是1ms的,怎么会变成0.1ms闪烁呢, ...

我预期效果那里的时间应该是0.1s,打成了0.1ms
作者: liugc123    时间: 2020-1-27 14:02
王可乐_ 发表于 2020-1-26 20:20
你好,你的定时器赋初值为11ms,加上下面cnt==100,就是1100ms一次,可以改成下面这段,因为1ms的闪烁间隔 ...

嗯,我当时用的stc上面那个定时器计算器,没有把时钟改成12T,所以配置错了
作者: liugc123    时间: 2020-1-27 14:04
ggggaaaaaaa 发表于 2020-1-27 00:45
知道为何没人回答吗?
提问的方法不对,描述不清楚.

刚刚开始学习单片机,谢谢指点




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1