標(biāo)題: 單片機(jī)捉蟲之點(diǎn)亮LED所用軟件延時(shí) 求指導(dǎo) [打印本頁]

作者: 15587674366    時(shí)間: 2022-9-29 22:21
標(biāo)題: 單片機(jī)捉蟲之點(diǎn)亮LED所用軟件延時(shí) 求指導(dǎo)
一、硬件環(huán)境:金沙灘KST-51單片機(jī)開發(fā)板
二、軟件環(huán)境:Keil C51
三、軟件預(yù)期功能:
       KST-51 LED2 延時(shí)相同時(shí)間
四、Bug復(fù)現(xiàn)流程:
1、新建項(xiàng)目1;
2、新建C源程序文件;
3、將虛線以下代碼第一部分粘貼進(jìn)2新建的C源程序文件;
4、編譯、下載hex文件至開發(fā)板,觀察LED2延時(shí)時(shí)長;
5、新建項(xiàng)目2;
6、新建C源程序文件;
7、將虛線以下代碼第二部分粘貼進(jìn)6新建的C源程序文件;
8、編譯、下載hex文件至開發(fā)板,觀察LED2延時(shí)時(shí)長;
5、bug現(xiàn)象如題目所附視頻所示,兩次LED2延時(shí)時(shí)長明顯不同。
五、要求(提示:第一二部分唯一的區(qū)別僅在于變量 i 的類型不同):
1、指出延時(shí)時(shí)長明顯不同的原因所在(80分);
2、通過程序跟蹤調(diào)試,結(jié)合代碼具體分析兩次延時(shí)不同的根本原因(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++);
}


作者: hb_lhw    時(shí)間: 2022-9-30 07:49
看這兩段程序哪里有差別,再看看變量占用字節(jié)的個(gè)數(shù),就知道為什么了!
作者: yzwzfyz    時(shí)間: 2022-9-30 08:33
是來布置作業(yè)的。
作者: pdwdzz    時(shí)間: 2022-9-30 10:44
int和long的數(shù)據(jù)類型不同,長度不同,程序執(zhí)行的步驟就不同,比如int i
作者: pdwdzz    時(shí)間: 2022-9-30 10:48
比如int i,要判斷i是否為0,int是2字節(jié),對(duì)單片機(jī)來說,先要判斷低8位是不是0,再判斷高8位是不是0。long i,要判斷i是否為0;long4字節(jié)。那就要4次。雖然對(duì)于C語言都是通用一句話。但是編譯出來的代碼不同的。long類型的代碼量要多。
作者: pdwdzz    時(shí)間: 2022-9-30 10:50
1、指出延時(shí)時(shí)長明顯不同的原因所在(80分);delay函數(shù)所用時(shí)間不同
2、通過程序跟蹤調(diào)試,結(jié)合代碼具體分析兩次延時(shí)不同的根本原因(20分)。int類型和long類型長度不同,編譯出來的指令數(shù)量不同。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1