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

單片機雙燈左移右移

發布時間: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);
}
}
}

閱讀全文

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

熱點內容
androidlayout注釋 瀏覽:957
重啟手機命令 瀏覽:836
程序員那麼可愛男女主是誰 瀏覽:490
文件如何上傳到自己的伺服器 瀏覽:399
你用什麼app 瀏覽:224
安卓平板用什麼優化軟體 瀏覽:747
centos重新編譯程序 瀏覽:335
cocoapods命令 瀏覽:906
androidusb卸載 瀏覽:143
linux解壓縮軟體 瀏覽:143
ppt及備注轉pdf 瀏覽:564
ssh下載文件命令 瀏覽:821
程序員考MBA 瀏覽:265
國外加密鎖是什麼樣子 瀏覽:229
linuxhosts重啟 瀏覽:168
c語言編譯正確但是不能執行 瀏覽:856
編程素質教育代理 瀏覽:908
渴望力量程序員 瀏覽:370
app頁面拆解拆到什麼程度 瀏覽:153
如何建立備份伺服器 瀏覽:595