找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3995|回复: 15
打印 上一主题 下一主题
收起左侧

单片机定时时间不对,什么原因?

[复制链接]
跳转到指定楼层
楼主
用定时器试了一下小灯的亮灭,结果时间好象不对,(程序应该是亮1秒、灭1秒,而实际亮灭各1.7秒左右),请教是什么原因?
#include<reg52.h>
sbit led=P1^0;
void main()
{
unsigned char cnt=0;
TMOD=0x01;
TH0=0xb8;   //定时20毫秒
TL0=0x00;
TR0=1;
while(1)
{
if (TF0==1)
{
TF0=0;
TH0=0xb8;
TL0=0x00;
cnt++;
if(cnt>=50)  //定时器溢出50次,
{
cnt=0;
led=~led;}   //亮灭各0.02*50=1秒钟
}
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:86913 发表于 2019-2-26 20:38 | 只看该作者
不好意思,视频没有传好
回复

使用道具 举报

板凳
ID:86913 发表于 2019-2-26 20:47 | 只看该作者
回复

使用道具 举报

地板
ID:164602 发表于 2019-2-27 08:37 | 只看该作者
你的定时器是定的1s,但中断后,你不是还执行了其它语句嘛,它们也是要占用时间的,一次很少,次数多了,误差就会很大的。
回复

使用道具 举报

5#
ID:388151 发表于 2019-2-27 13:35 | 只看该作者
多大的晶振?
回复

使用道具 举报

6#
ID:388151 发表于 2019-2-27 13:39 | 只看该作者
应该是定时器初值搞错了
回复

使用道具 举报

7#
ID:213173 发表于 2019-2-27 14:46 | 只看该作者
你这定时器设置是按晶振频率11.0592MHz,程序本身没有问题。时间不对可能是你用的晶振频率不是11.0592MHz。
回复

使用道具 举报

8#
ID:481565 发表于 2019-2-27 15:13 | 只看该作者
定时器是定的1s中断后,你还执行了其它语句,它们也是要占用时间的,一次很少,次数多了,误差就会很大的。
回复

使用道具 举报

9#
ID:432823 发表于 2019-2-27 15:16 | 只看该作者
一般这几条程序不会用多长时间,不会有这样多大的误差,可能是定时初值不对。
回复

使用道具 举报

10#
ID:86913 发表于 2019-2-27 19:36 | 只看该作者

11.0592M
回复

使用道具 举报

11#
ID:86913 发表于 2019-2-27 19:47 | 只看该作者
yaoji123 发表于 2019-2-27 15:16
一般这几条程序不会用多长时间,不会有这样多大的误差,可能是定时初值不对。

初值(十进制)=65536-0.02*12/11059200=47104,转为十六进制是为B800,不会错的
回复

使用道具 举报

12#
ID:86913 发表于 2019-2-27 19:50 | 只看该作者
wulin 发表于 2019-2-27 14:46
你这定时器设置是按晶振频率11.0592MHz,程序本身没有问题。时间不对可能是你用的晶振频率不是11.0592MHz。

晶振频率是对的,我在别的地方用过了,没有错
回复

使用道具 举报

13#
ID:86913 发表于 2019-2-27 19:52 | 只看该作者
HC6800-ES-V2.0 发表于 2019-2-27 08:37
你的定时器是定的1s,但中断后,你不是还执行了其它语句嘛,它们也是要占用时间的,一次很少,次数多了,误 ...

执行了50次,但误差不应该这么大呀
回复

使用道具 举报

14#
ID:86913 发表于 2019-2-27 20:31 | 只看该作者
62黑 发表于 2019-2-27 15:13
定时器是定的1s中断后,你还执行了其它语句,它们也是要占用时间的,一次很少,次数多了,误差就会很大的。

如用延时函数的话,执行次数再多也看不出误差,估计程序有错,但我自己看不出来
回复

使用道具 举报

15#
ID:213173 发表于 2019-2-28 07:34 | 只看该作者
tmxk0574 发表于 2019-2-27 19:50
晶振频率是对的,我在别的地方用过了,没有错

这个程序经仿真验证没有问题,时间不对只能是你的硬件问题,重点怀疑晶振和振荡电容的品质和焊接质量。


回复

使用道具 举报

16#
ID:164602 发表于 2019-2-28 08:20 | 只看该作者
62黑 发表于 2019-2-27 15:13
定时器是定的1s中断后,你还执行了其它语句,它们也是要占用时间的,一次很少,次数多了,误差就会很大的。

抄袭?!!!!!!呵呵呵呵
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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