找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1348|回复: 3
收起左侧

c51单片机仿真时间问题求助

[复制链接]
ID:595853 发表于 2020-2-23 19:06 | 显示全部楼层 |阅读模式
初学C51,遇到问题了,一样的代码用KEILL5作软件仿真时运行到断点的时间为0.219,教程里才0.044,以为是代码有错误,折腾一天无果,今天想到教程里用的是KEILL2,一试就跟教程里一样了,来请教师傅,一样的代码为什么keill2与keill5仿真的时间差这么多,是不是哪里需要设置什么,先谢谢各位师傅!

51hei图片20200223190212.png
单片机源程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar num,dunum,wenum;
uchar code table_du[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

uchar code table_we[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

void display(uint);
void delay(uchar);

void main()
{
        delay(100);
        EA=1;     //这里设断点
        ET0=1;
        TMOD=0X01;
        TH0=(65536-500)/256;
        TL0=(65536-500)%256;
        TR0=1;
        while(1)
        {
                if(num==2)
                {
                        num=0;
                        if(dunum==6)
                        dunum=0;
                        if(wenum==6)
                        wenum=0;
//                        display();
                        dunum++;
                        wenum++;
                }
        }
}

void time0() interrupt 1
{
        TH0=(65536-500)/256;
        TL0=(65536-500)%256;
        num++;
}

void display(uint disnum)
{
        
        P0=table_du[disnum/100];
        dula=1;
        dula=0;
        P0=0xfe;
        wela=1;
        wela=0;
//        delay();
        
        P0=table_du[disnum%100/10];
        dula=1;
        dula=0;
        P0=0xfd;
        wela=1;
        wela=0;
//        delay();
        
        P0=table_du[disnum%100%10];
        dula=1;
        dula=0;
        P0=0xfb;
        wela=1;
        wela=0;
//        delay();
}

void delay(uchar x)
{
        uchar a,b;
        for(a=x;a>0;a--)
                for(b=200;b>0;b--);
}

回复

使用道具 举报

ID:235200 发表于 2020-2-23 21:11 | 显示全部楼层
两个时间不一样,并不能说明延时程序的时间不一样,正确的做法是在delay(100);这一条设置一个断点,在EA=1;这一条设置一个断点,分别记下两个断点处的时间,其差值是延时程序的时间,两者不一样说明使用不同的仿真环境,进入到主程序第一条指令的时间不一样而已
回复

使用道具 举报

ID:213173 发表于 2020-2-24 05:32 | 显示全部楼层
可能是目标选项里晶振频率设置不当或使用默认设置。试想一下用不同频率调试能跑出相同效果吗?
回复

使用道具 举报

ID:595853 发表于 2020-4-30 22:25 | 显示全部楼层
谢谢各位师傅,找到问题了,是显示和延时声明语句格式错了,已经解决了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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