找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1616|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)捉蟲之點亮LED所用軟件延時 求指導(dǎo)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:983197 發(fā)表于 2022-9-29 22:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
一、硬件環(huán)境:金沙灘KST-51單片機(jī)開發(fā)板
二、軟件環(huán)境:Keil C51
三、軟件預(yù)期功能:
       KST-51 LED2 延時相同時間
四、Bug復(fù)現(xiàn)流程:
1、新建項目1;
2、新建C源程序文件;
3、將虛線以下代碼第一部分粘貼進(jìn)2新建的C源程序文件;
4、編譯、下載hex文件至開發(fā)板,觀察LED2延時時長;
5、新建項目2;
6、新建C源程序文件;
7、將虛線以下代碼第二部分粘貼進(jìn)6新建的C源程序文件;
8、編譯、下載hex文件至開發(fā)板,觀察LED2延時時長;
5、bug現(xiàn)象如題目所附視頻所示,兩次LED2延時時長明顯不同。
五、要求(提示:第一二部分唯一的區(qū)別僅在于變量 i 的類型不同):
1、指出延時時長明顯不同的原因所在(80分);
2、通過程序跟蹤調(diào)試,結(jié)合代碼具體分析兩次延時不同的根本原因(20分)。

六、提交要求:
1、在答案區(qū)以文字?jǐn)⑹黾纯,不需要上傳任何形式的附件?br /> ------------------------------------------第一部分----------------------------------------

#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空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1006814 發(fā)表于 2022-9-30 07:49 | 只看該作者
看這兩段程序哪里有差別,再看看變量占用字節(jié)的個數(shù),就知道為什么了!
回復(fù)

使用道具 舉報

板凳
ID:123289 發(fā)表于 2022-9-30 08:33 | 只看該作者
是來布置作業(yè)的。
回復(fù)

使用道具 舉報

地板
ID:146878 發(fā)表于 2022-9-30 10:44 | 只看該作者
int和long的數(shù)據(jù)類型不同,長度不同,程序執(zhí)行的步驟就不同,比如int i
回復(fù)

使用道具 舉報

5#
ID:146878 發(fā)表于 2022-9-30 10:48 | 只看該作者
比如int i,要判斷i是否為0,int是2字節(jié),對單片機(jī)來說,先要判斷低8位是不是0,再判斷高8位是不是0。long i,要判斷i是否為0;long4字節(jié)。那就要4次。雖然對于C語言都是通用一句話。但是編譯出來的代碼不同的。long類型的代碼量要多。
回復(fù)

使用道具 舉報

6#
ID:146878 發(fā)表于 2022-9-30 10:50 | 只看該作者
1、指出延時時長明顯不同的原因所在(80分);delay函數(shù)所用時間不同
2、通過程序跟蹤調(diào)試,結(jié)合代碼具體分析兩次延時不同的根本原因(20分)。int類型和long類型長度不同,編譯出來的指令數(shù)量不同。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表