找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机捉虫之点亮LED所用软件延时 求指导

[复制链接]
跳转到指定楼层
楼主
ID:983197 发表于 2022-9-29 22:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、硬件环境:金沙滩KST-51单片机开发板
二、软件环境:Keil C51
三、软件预期功能:
       KST-51 LED2 延时相同时间
四、Bug复现流程:
1、新建项目1;
2、新建C源程序文件;
3、将虚线以下代码第一部分粘贴进2新建的C源程序文件;
4、编译、下载hex文件至开发板,观察LED2延时时长;
5、新建项目2;
6、新建C源程序文件;
7、将虚线以下代码第二部分粘贴进6新建的C源程序文件;
8、编译、下载hex文件至开发板,观察LED2延时时长;
5、bug现象如题目所附视频所示,两次LED2延时时长明显不同。
五、要求(提示:第一二部分唯一的区别仅在于变量 i 的类型不同):
1、指出延时时长明显不同的原因所在(80分);
2、通过程序跟踪调试,结合代码具体分析两次延时不同的根本原因(20分)。

六、提交要求:
1、在答案区以文字叙述即可,不需要上传任何形式的附件。
------------------------------------------第一部分----------------------------------------

#include <reg52.h>

sbit LED2 = P0^0;

sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

sbit ADDR2 = P1^2;
sbit ADDR1 = P1^1;
sbit ADDR0 = P1^0;

int i;
void delay();
void main(){
while(1){
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;

ENLED = 0;
ADDR3 = 1;

P0 = 0xFE;
delay();
P0 = 0xFF;
delay();
}
}

void delay(){
for(i=0;i<30000;i++);
}
------------------------------------------第二部分------------------------------
#include <reg52.h>

sbit LED2 = P0^0;

sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

sbit ADDR2 = P1^2;
sbit ADDR1 = P1^1;
sbit ADDR0 = P1^0;

long i;
void delay();
void main(){
while(1){
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;

ENLED = 0;
ADDR3 = 1;

P0 = 0xFE;
delay();
P0 = 0xFF;
delay();
}
}

void delay(){
for(i=0;i<30000;i++);
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1006814 发表于 2022-9-30 07:49 | 只看该作者
看这两段程序哪里有差别,再看看变量占用字节的个数,就知道为什么了!
回复

使用道具 举报

板凳
ID:123289 发表于 2022-9-30 08:33 | 只看该作者
是来布置作业的。
回复

使用道具 举报

地板
ID:146878 发表于 2022-9-30 10:44 | 只看该作者
int和long的数据类型不同,长度不同,程序执行的步骤就不同,比如int i
回复

使用道具 举报

5#
ID:146878 发表于 2022-9-30 10:48 | 只看该作者
比如int i,要判断i是否为0,int是2字节,对单片机来说,先要判断低8位是不是0,再判断高8位是不是0。long i,要判断i是否为0;long4字节。那就要4次。虽然对于C语言都是通用一句话。但是编译出来的代码不同的。long类型的代码量要多。
回复

使用道具 举报

6#
ID:146878 发表于 2022-9-30 10:50 | 只看该作者
1、指出延时时长明显不同的原因所在(80分);delay函数所用时间不同
2、通过程序跟踪调试,结合代码具体分析两次延时不同的根本原因(20分)。int类型和long类型长度不同,编译出来的指令数量不同。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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