熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2019-7-20 00:14
正文摘要:第一顆燈在先延遲的時(shí)候,能正常移動(dòng); 但是在先移動(dòng)后延遲的時(shí)候,第一顆燈竟然不發(fā)生移動(dòng)了,我就改了一下延遲的順序,但不知道這是為什么,能解釋一下那? |
|
首先明確: P0 = P0<<1; P0 = P0|0x01; 這部分內(nèi)容其實(shí)是實(shí)現(xiàn) 偽“循環(huán)左移”,第一行代碼左移之后,最低位補(bǔ)0,而下一行代碼,又馬上把剛才最低位補(bǔ)進(jìn)來的0“或成1”。 相當(dāng)于:先點(diǎn)亮第二盞燈,然后又馬上熄滅第一盞燈。所以有一個(gè)瞬間,第二盞和第一盞同時(shí)點(diǎn)亮。 上述就是正常情況。 而當(dāng)你把延時(shí)Delay(50000);這句話放在上述兩行之間時(shí),意味著,點(diǎn)亮第二盞燈后,等“50000”的延時(shí)之后,才熄滅第一盞。 不是很懂得話!去網(wǎng)絡(luò)上查一下移位和循環(huán)移位的資料!很快會(huì)懂的! |
| 參與人數(shù) 1 | 黑幣 +80 | 收起 理由 |
|---|---|---|
|
| + 80 | 回帖助人的獎(jiǎng)勵(lì)! |
|
void main() { unsigned int a; unsigned char b=P1; bit k; while(1){P1=(k?P1>>1:P1<<1);a=55555;while(a--);if(!P1){k=~k;P1=(k?255:(b=(b?b<<1:255)));}} } |
| unsigned int a; while(1){P1=P1<<1;a=55555;while(a--);if(!P1)P1=255;} |
Powered by 單片機(jī)教程網(wǎng)