找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3768|回复: 9
收起左侧

关于用Protues仿真51单片机时,定时器时间不准确问题

[复制链接]
ID:576900 发表于 2021-3-23 15:12 | 显示全部楼层 |阅读模式
       用Protues软件仿真51单片机时,定时器的时间和用板子测试时不一样,怎么办?
平时用板子的时候,时间设置为2ms中断一次,中断里面+500次就得到一秒钟,但是在用Protues软件仿真的时候,要10秒才加一次,这是什么问题呢?
      时钟我设置的初始时间是12:30:00,本应该数码管显示的变量会和时钟秒钟一样快才对,可是当时钟跑到12:30:10的时候,定时器里面那个变量才加一显示在数码管上。
有大佬帮忙解答一下吗, 非常感谢了!!
2.png
void Timer0_Init(void)
{
        TMOD |= 0x01;//设置为16位计数器
        TH0 = (65535-2000)/256;//时间定为2ms
        TL0 = (65535-2000)%256;
        EA = 1;
        ET0 = 1;
        TR0 = 1;
}

void Interrupt0(void)interrupt 1
{
        static uint tim = 0,time = 0;
        
        TH0 = (65535-2000)/256;
        TL0 = (65535-2000)%256;
        
        tim++;
        if(tim >= 500)
        {
                tim = 0;
                time++;
        }

        Dis[0] = Tab[time/1000%10];
        Dis[1] = Tab[time/100%10];
        Dis[2] = Tab[time/10%10];
        Dis[3] = Tab[time%10];
        
        key2();
        Display();
}

回复

使用道具 举报

ID:207421 发表于 2021-3-23 17:08 | 显示全部楼层
你这个time加到什么时候才到头啊? 65535+ ?
65535-2000  还是 65536-2000  ?

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:213173 发表于 2021-3-23 21:13 | 显示全部楼层
完成中断函数任务的时间超过中断周期导致部分中断请求丢失。所以计时慢了许多。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:139866 发表于 2021-3-24 09:31 | 显示全部楼层
中断里面不要放那么多东西,除了计数其他操作都放在Main函数里面

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:895034 发表于 2021-3-24 14:37 | 显示全部楼层
中断任务里头太繁杂了,中间阻隔了其他中断,就少了

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:576900 发表于 2022-8-10 10:38 | 显示全部楼层
860012525 发表于 2021-3-24 14:37
中断任务里头太繁杂了,中间阻隔了其他中断,就少了

程序新手哈,以前习惯了
回复

使用道具 举报

ID:576900 发表于 2022-8-10 10:39 | 显示全部楼层
lwh999995 发表于 2021-3-23 17:08
你这个time加到什么时候才到头啊? 65535+ ?
65535-2000  还是 65536-2000  ?

time是全局变量,在main函数中会清除的
回复

使用道具 举报

ID:576900 发表于 2022-8-10 10:39 | 显示全部楼层
天ノ忆 发表于 2021-3-24 09:31
中断里面不要放那么多东西,除了计数其他操作都放在Main函数里面

嗯嗯,下次改正
回复

使用道具 举报

ID:284226 发表于 2022-10-6 17:17 | 显示全部楼层
然后呢。问题得到解决了吗
回复

使用道具 举报

ID:1109276 发表于 2024-1-26 07:53 | 显示全部楼层
wulin 发表于 2021-3-23 21:13
完成中断函数任务的时间超过中断周期导致部分中断请求丢失。所以计时慢了许多。

即便中断函数里只有两行代码,在proteus仿真时也慢十倍,实物中就正常,为什么呢?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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