導航:首頁 > 操作系統 > 單片機雙燈左移右移

單片機雙燈左移右移

發布時間:2024-09-18 05:49:11

① 怎麼控制51系列單片機流水燈先左移再右移最好有分析

#include<reg52.h>
#include <intrins.h> 頭文件
#define uchar unsigned char 宏定義
uchar a,b;
uchar b=1;
uchar a=0xfe; 變數定義和初始化
void main() 主函數
{
EA=1;IT1=1;ET0=1;中斷允許設置
TH0=-5000/256;
TL0=-5000%256; 賦值
TMOD=0x01;

TR0=1; 啟動
while(1); 等待中斷產生

}

void timer0(void) interrupt 1 using 1 中斷函數
{
TH0=-5000/256;
TL0=-5000%256; 重新賦值
b=b+1; 計算時間

if(b==40) 0.5秒時間到
{
b=0; 清0
P1=a; P1口賦值 0XFE 二進制11111110 也就是第一盞亮其他滅
a=_crol_(a,1); 庫函數實現循環
P1=a; 把循環後的值重新付給P1口
}
}
以上只是單方向的循環 還缺少延時函數 加在賦值後面
雙向循環 可以用左移右移指令
賦值 P1口 A=A<<1 循環左移一位 A=A>>1 循環右移一位

② 51單片機LED左移完右移為什麼不行

22行在while 裡面,必然會循環執行,P0=~(1<<8),結果是 0xff,也就是沒燈亮。
也就是說,在執行右移的時候,是先滅,亮第1顆,再滅一段時間,再右移下一顆,再滅一段時間,右移下一顆…………
#define LED_Num 8
if(cnt<LED_Num) P0=~(1<<cnt);
else P0=~(1<<(LED_Num-1<<1)-cnt);
for(i=0;i<30000;i++);
cnt=++cnt%(LED_Num-1<<1);
另外,以後不要用 延時函數了。

③ 關於單片機流水燈左移右移的問題

51單片機的左移右移,首先在開始要調用"intrins.h"的文件包,這個文件包含_cror_(右移),_crol_(左移);然後通過for語句來控制;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(k=250;k>0;k--);
理解這三句,第一句是指:m=20;m>0然後m--是真就執行:
for(n=20;n>0;n--)
for(k=250;k>0;k--);
這兩句,m--一直減,減一次,裡面就執行一次,這里是20次。
流水燈的左右移,第一用"intrins.h"的文件包,第二要要會定義賦值變數,第三延時,這是關鍵。

④ 單片機點亮一個燈泡時,為什麼要進行左移一個單位呢,這里有點不懂還望大神解答

這個是為了讓時間長一點,單片機運行速度還是比較快的。你看只有led8_one的最高位是1,才點亮燈。其他的時間是關閉燈的。每次移位就是為了讓led8_one的那個1向最高位動一次。

⑤ 單片機led左移然後右移循環亮滅的匯編語言

ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV A,#0FEH
MOV R2,#8
LOOP1:
MOV P0,A
LCALL DELAY
RL A
DJNZ R2,LOOP1
MOV R2,#8
LOOP2:
MOV P0,A
LCALL DELAY
RR A
DJNZ R2,LOOP2
SJMP MAIN
DELAY:
MOV R2,#200
DLY:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DLY
RET
END

⑥ 利用51單片機某個埠實現:首先讓LED燈 每兩位循環左移8次,循環右移8

#include <reg52.h>
#include <intrins.h>
sbit LED7 = P1^7;
sbit LED0 = P1^0;
#define N 1000
//-------------------------------------------------------
//延時Z個ms
//-------------------------------------------------------
void delay(unsigned int z)
{
unsigned int x,y;
for(x = z; x > 0; x--)
for(y = 120; y > 0 ; y--);
}

void main()
{ unsigned int i,j;

while(1)
{
P1 = 0xfc;
for(i=0;i<8;i++) //循環左移
{
P1 =_crol_(P1,2);
delay(N);
}
for(i=0;i<8;i++) //循環右移
{
P1 =_cror_(P1,2);
delay(N);
}
for(i=1;i<=10;i++) //奇、偶交替閃爍10次
{
P1 = 0xaa; //奇數0xaa
delay(N);
P1 = 0x55; //偶數0x55
delay(N);
}

for(j=0;j<8;j++) // 循環左移
{ P1 = 0xfe;
P1 =_crol_(P1,1);
delay(N);
}
for(i=0;i<8;i++) //循環右移
{ P1 = 0x7f;
P1 =_cror_(P1,2);
delay(N);
}
}
}

閱讀全文

與單片機雙燈左移右移相關的資料

熱點內容
c編程第一課視頻 瀏覽:371
伺服器2008怎麼清理緩存命令 瀏覽:420
windowsxp命令 瀏覽:62
在哪裡可以看到程序員那麼可愛 瀏覽:631
java線程傳遞參數 瀏覽:37
安卓手機投屏電視怎麼連播 瀏覽:55
文檔中添加文件夾 瀏覽:804
番茄小說app安裝目錄在哪裡 瀏覽:449
壓縮包直接解壓到u盤 瀏覽:468
編程器輸入指令 瀏覽:319
安卓跟蘋果系統為什麼不一樣 瀏覽:369
如何word轉pdf 瀏覽:475
單片機44鍵盤 瀏覽:223
了解黨史有什麼app 瀏覽:253
efs加密文件能破解嗎 瀏覽:994
phpsoapserver參數 瀏覽:122
如何利用dos創建文件夾 瀏覽:286
應用加密8位的是什麼手機 瀏覽:420
簡述什麼是單片機 瀏覽:862
編程貓怎麼才能獲得高手稱號 瀏覽:5