當前位置:首頁 » 編程語言 » 跑馬燈從兩邊移動到中間c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

跑馬燈從兩邊移動到中間c語言

發布時間: 2022-07-10 13:35:43

c語言 跑馬燈 左移 程序設計 左移位運算不完整 請高手 補充下 謝謝

你的燈接在哪個I/O口 這里我就當你接在P1口給你補充一下吧 I/O你根據自己的修改
首先你要把這個頭文件加進去 #include "intrins.h"
for(i=1;i<=8;i++)
{
P1 = temp; //這里根據你實際的I/o口位置修改
temp = _crol_(temp,1); //循環左移這個數據就行了
delay();
}

② C語言移位問題,跑馬燈效果

a=010101110,b=010101110;
int i=0;//a變數恢復時需要的循環次數變數
while(1)
{
if(a!=000000000)
{
a=a<<1; //一個移位清零的過程;
}
else //一個還原的過程;
{
i=8;
while(a!=b)//這是一個逐步恢復的過程,一位一位出。從b的高位開始,當跳出循環時,a被恢復。
{
a=((b>>i)||a);
i--;
}
}//當被恢復時,有判斷a!=000000000;所以又開始移位清零。這樣構成死循環
}

樓主,這就是基本完整的答案,由於不知道你是在什麼平台下做的,所以a,b的數據類型不確定。不過可以採用位操作來定義。如果是做題,這答案肯定夠用了。
中間最關鍵的一步:恢復((b>>i)||a) 就是先將b右移你的數據(寬度-1)bit,咱們這里是9-1;然後和a做或運算的到高一位的值,這樣下去依次得到a的高9位值,而這時a就和b相等了,跳出循環,進行下一次a!=000000000所依賴的循環清零。

寫的挺多了 ,樓主給分吧!!!

③ 單片機C語言編程跑馬燈問題

這大概是你用到了LED>>1這樣的右移指令,這條指令有點缺陷,最高位是填0的,所以達不到循環右移的效果,LED=LED | 0x80 就是為了實現循環右移的目的而增加的一條指令。右移一位後將最高位置1.

④ 求高手解 有8個燈的led跑馬燈 要控制燈同時從中間向兩邊跑的代碼

跑馬燈說白了就是讓燈按照一定順序亮起來,你可以採用最笨的方法,從中間往兩邊跑,假設0代表低點平,1代表高電平,那麼就得出以下幾個狀態,
0b11111111
0b11100111
0b11011011
0b10111101
0b01111110
看0是不是從中間往兩邊跑
當然你也可以用演算法實現,你可以將這個八位的數據看做兩個4位的,然後將高四位左移,低四位右移
寫個大概程序為:
unsigned char a ,b,c,,i;
for(i=0;i<5;i++)//總共移動5次
{
a=(~(1<<i))&0x0f;//將1左移i位後取反與a相與,得出結果為高四位
b=(~(0x80>>i))&0x0f;//將1右移i位後取反與a相與,得出結果為低四位
c=a<<4+b;// 復原8位值
}
我沒有具體編譯執行你可以編譯執行驗證下演算法。
希望能幫到你

⑤ 單片機跑馬燈C語言程序,只要實現跑馬燈功能,要簡單點

#include<stdio.h>
#include<reg51.h>
void main()
{
int a;
unsigned char tmp=0;
while(1)
{
if(tmp==0) tmp=0x80;
else tmp = (tmp>>1);
P1 = tmp; //P1.0到P1.7控制8個燈
for(a=50000;a;a--); //延時一下
}
}
//只是示例,湊和一下

⑥ 51單片機設計跑馬燈的程序用(c語言)編寫

|P1口接8個發光二極體共陽

#include <AT89X51.H>

unsigned char i;

unsigned char temp;

unsigned char a,b;

void delay(void)

{

unsigned char m,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

void main(void)

{

while(1)

{

temp=0xfe;

P1=temp;

delay();

for(i=1;i<8;i++)

{

a=temp<<i;

b=temp>>(8-i);

P1=a|b;

delay();

}

for(i=1;i<8;i++)

{

a=temp>>i;

b=temp<<(8-i);

P1=a|b;

delay();

}

}

}

(6)跑馬燈從兩邊移動到中間c語言擴展閱讀:

Proteus 自從有了單片機也就有了開發系統,隨著單片機的發展開發系統也在不斷發展。 keil是一種先進的單片機集成開發系統。它代表著匯編語言單片機開發系統的最新發展,首創多項便利技術,將開發的編程/模擬/調試/寫入/加密等所有過程一氣呵成,中間不須任何編譯或匯編。

⑦ 8個跑馬燈從中間向兩邊跑的C程序,庫函數的形式!要C語言,不要匯編語言!

這樣的程序太簡單了
你只需要把值一個一個給IO口,沒給一次延時一段時間,就可以看到效果!
你可以把這個程序寫成一個子函數
然後把程序名放到XXX.H文件中就可以了
以後你要調用這個程序就先 #include 「XXX.H」
在調用函數就OK了

⑧ C語言設計跑馬燈程序

#include<reg51.h> //51系列單片機定義文件
#define uchar unsigned char //定義無符號字元
#define uint unsigned int //定義無符號整數
void delay(uint); //聲明延時函數
void main(void)
{
uint i;
uchar temp;
while(1)
{
temp=0x01;
for(i=0;i<8;i++) //8個流水燈逐個閃動
{
P1=~temp;
delay(100); //調用延時函數
temp<<=1;
}
}

void delay(uint t) //定義延時函數
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
跑馬燈程序最基本的,c語言還未入門啊!!!

⑨ 兩邊往中間的跑馬燈匯編語言程序

ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV DPTR,#TAB

MOV R2,#4

LOOP:
CLR A

MOV A,@A+DPTR

MOV P0,A

INC DPTR

LCALL DELAY

DJNZ R2,LOOP

SJMP MAIN

DELAY:
MOV R3,#200

DELAY1:
MOV R4,#250

DJNZ R4,$

DJNZ R3,DELAY1

RET

TAB:
DB 7EH,0BDH,0DBH,0E7H

END

⑩ 環形跑馬燈的編程,用C語言實現

#include <MSP430G2553.h>
#include <intrinsics.h>

#define myMCLK 8000000
#define uint unsigned int
#define uchar unsigned char

unsigned long led_left =0;
unsigned long led_right =0;
unsigned long led;

unsigned char Ok();
void Dis_Led();

void Init_clk()
{
BCSCTL1 = CALBC1_8MHZ;
DCOCTL = CALDCO_8MHZ;
}
void main(void)
{
uchar i;
WDTCTL = WDTPW + WDTHOLD; //關閉看門狗
Init_clk();
while(1)
{
led_left = 0x80000000; //點亮第一個燈
led_right = 0x00000004; //點亮最後一個燈
Dis_Led();
__delay_cycles(4000000);//500MS延時
if( Ok() )
{
for(i=0;i<30;i++)
{
led_left <<=1;
Dis_Led();
__delay_cycles(4000000);//500MS延時
if( led_left==0 && led_right==0)
;
led_right >>=1;
Dis_Led();
__delay_cycles(4000000);//500MS延時
if( led_left==0 && led_right==0)
;
}
}
}
}
unsigned char Ok()
{
uchar i;
for(i=0;i<30;i++)
{
led_left &=~0x00000003;// 總是把最後兩位置0
led_right &=~0x00000003;// 總是把最後兩位置0

led_left >>=1;
led_left = led_left | 0x80000000;
Dis_Led();
__delay_cycles(4000000);//500MS延時
if(led_left & led_right)
return 1;

led_right <<=1;
led_right = led_right | 0x00000004;
Dis_Led();
__delay_cycles(4000000);//500MS延時
if(led_left & led_right)
return 1;
}
return 0;
}
void Dis_Led()
{
led = led_left | led_right;
;// 把led中的相應位送給 IO 口,顯示
}

可以參考一下啊