找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1538|回复: 4
收起左侧

求助,为什么定时1ms,用cnt计数100次后led会以1s闪烁

[复制链接]
ID:661513 发表于 2020-1-25 08:43 来自手机 | 显示全部楼层 |阅读模式
#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;
        }
}
回复

使用道具 举报

ID:661513 发表于 2020-1-25 12:23 来自手机 | 显示全部楼层
我知道了,我定时器T0配置错了,我把定时器时钟弄成了1T弄错了
回复

使用道具 举报

ID:213173 发表于 2020-1-25 14:09 | 显示全部楼层
楼主定时器设置错误,你这个TL0 = 0XCD;TH0 = 0XD4;接近10ms,11.0592MHz设置1ms:TL0 = 0x66;TH0 = 0xFC;
       
回复

使用道具 举报

ID:235200 发表于 2020-1-25 14:14 | 显示全部楼层
TL0 = 0X66; TH0 = 0XFC; 是12T的初值,TL0 = 0XCD; TH0 = 0XD4; 是1T的初值,程序中需用AUXR设置1T还是12T模式
回复

使用道具 举报

ID:123289 发表于 2020-1-26 21:02 | 显示全部楼层
定时器也就是一个加法计数器,每个CLK+1!
你要看看定时器的原理框图(书上定时器章节中找),看看CLK取自何处?它的频率是多少?一看就明白你错在哪里了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表