微控制器c語言編了個流水燈,用按鍵怎麼實現它暫停

時間 2022-02-01 20:02:17

1樓:諾諾百科

實現流水燈的方式有很多種(中斷,定時器,延時等等),看用哪種方式,最簡單的是延時做流水燈,那麼在死迴圈裡面增加按鍵檢測,判斷出有按鍵按下來時,再進入死迴圈,程式不往下走就可以暫停,再按跌出死迴圈。

#include //51系列微控制器定義檔案

#define uchar unsigned char //定義無符號字元

#define uint unsigned int //定義無符號整數

void delay(uint); //宣告延時函式

void main(void)

uint i;

uchar temp;

uint flag1=0;  按鍵標誌位bai

uint flag2=0;

while(1)

flag1 = keyscan();

if(flag1==1)(flag2=~flag2); //如果一旦檢測到一次按鍵掃描就把標誌位2 開啟;再次就關閉;

if(flag2==1)// 如果標誌位開啟就開始流水燈

temp=0x01;

for(i=0;i<8;i++) //8個流水燈逐個閃動

p1=~temp;

delay(100); //呼叫延時函式

temp<<=1;

2樓:

利用外部中斷可以,在中斷函式裡面寫入你要執行的讓流水燈停止的程式,設定一個全域性變數flag=0;每次進入中斷就取反,通過判斷flag的值來決定是暫停還是繼續

3樓:

可以用定時器設定流水燈的時間間隔,按鍵控制定時器開關

微控制器c語言如何實現8個led流水燈來回流動?

4樓:一直向前

你直接把這八個月流水燈串聯起來就可以

5樓:天雲一號

可以通過左移函

數_crol_()和右移函式_cror_()來實現led等的來回流動。

具體實現方法可以參考如下程式:

#include

#include

#define uint unsigned int#define uchar unsigned charvoid delay(uint a);

void main()

// 向右迴圈點亮led

for(i=0; i<7; i++)}}

// 延時函式,延時a毫秒

void delay(uint a)

6樓:原十三

十四行**

#include

#include

unsigned int a,b;

void main()

p2=0x7f;

for(b=7;b>=1;b--)}

7樓:沙裡波特

c 語言,還弄這麼簡單的東西?

這是基礎的知識,應該用組合語言解決。

8樓:匿名使用者

char i;

while(1)

for(i=0; i<7; i++)}

9樓:匿名使用者

p1e=_cror_(p1e,1);

10樓:聖__尛尐

#include

#include

#define uint unsigned int#define uchar unsigned charvoid delay(uint a);

void main()

// 向右迴圈點亮led

for(i=0; i<7; i++)}}

// 延時函式,延時a毫秒

void delay(uint a)

51微控制器 c語言 如何用4個按鍵控制4個流水燈

11樓:cindere鞡

不用中斷一樣的實現,而且可以有多少個按鍵就可以有多少種流水燈方式。你使專用的鍵盤函式直屬接呼叫流水燈函式就可以。比如使用獨立鍵盤,if(p1.

1==0) light_water(); 然後:

void light_water()

}這樣就會有一個led從右往左移動8次;那麼當第一次流水未完時,又呼叫第二個流水函式light_water1就能中斷當前執行的流水函式又去執行第二個流水燈函式了。

希望我的回答能幫助到你。

12樓:匿名使用者

(1)如果外抄

部中斷不足四個,那襲四個按鍵都接入同一個中斷,同時各自接入一個gpio,有按鍵按下,會觸發中斷,中斷程式就讀出鍵值。

(2)如果外部中斷有四個,那直接各自接入一箇中斷,各自的中斷服務程式直接負責修改控制流水燈方式的引數就好了。

13樓:匿名使用者

可以考慮使用中斷法實現

51微控制器用4個按鈕控制開始暫停快速慢速的流水燈。需要用c語言程式設計。求大神幫助 5

14樓:cindere鞡

其實很簡單的,隨便使用一個定時/計數 器,使其工作在方式1(方便計算初值),然後寫中斷服務函式,使用_crol_()函式來反覆迴圈做流水效果,然後在主函式最後寫while(1),一直不停掃描鍵盤函式,然後鍵盤函式定義4個按鍵,開始:trx=1,停止:trx=0,至於快慢的控制你可以在中斷函式裡邊寫一個延時函式,然後按鍵3和4按下一次自增或自減1000(你可以取其他值),然後傳遞給延時函式。

有不懂的地方隨時回覆我。

希望我的回答能幫助到你。

15樓:

開始鍵用復位 其他鍵用中斷

16樓:

簡單啊,最好 自己把思路想了,自己動手

微控制器c語言,一個按鍵控制三個流水燈

17樓:匿名使用者

void main()

if(i==2)

if(i==3)}}}

51微控制器c語言對鍵控雙向流水燈程式設計。用兩個按鍵,中端來做。

18樓:匿名使用者

#include

#define uchar unsigned charuchar num,temp,times,led;

t0isr() interrupt 1

else if(key2==0)

led>>=num;}}

main()

51微控制器,有8個流水燈,每個之間延遲1秒,這個延遲用c程式編寫怎麼寫

19樓:匿名使用者

要看你的時鐘週期,如果是12mhz的話,每個時鐘週期mc=6*2/12 m =1us,所以延遲是讓機器計數1000000下,上面那個公式你自己套用24mhz的就是2000000下。c語言的迴圈次數你自己算,每條指令一個週期,所以樓上的程式在12mhz下是1s延遲。

20樓:匿名使用者

呼叫delay()函式

其中x,y的最大數字根據除錯結果做修改,很長時間沒寫了。。。。

void delay()

21樓:匿名使用者

寫個for迴圈 在除錯下就行了

22樓:匿名使用者

去網上下一個微控制器 小精靈 只要你輸入 晶振頻率就能夠給出準確的延時程式 ,記得下破解的哦。

51微控制器按鍵控制流水燈左移,51微控制器的c語言 左移右移怎麼用?想用來控制流水燈,請幫忙寫個完整的c程式,參考下,埠隨意

按鍵不能用while函式來寫,第八行 if k1 0 按一次執行一次函式內容 開始學習微控制器的同學們寫注意了,在執行程式後,現象不正確的時候,不要首先就找軟體的錯誤,我的經驗是從源頭開始找問題,首先你得確定你的平臺是正確的,你說是按鍵沒效果,先用萬用表測試一下你的引腳的電平,是否被拉低了如果按鍵沒...

求一89c52微控制器c語言程式,流水燈 數碼管共同作用

士多啤梨啤 include define uint unsigned int define uchar unsigned char define led p3 uchar code tab unsigned char a,i unsigned long int temp void init void...

微控制器控制流水燈程式註釋

org 0000h mov p1,00h p1口送00,全滅。clr a 累加器請0 l0 jnb l1 為低轉l1k0 jb l2 為高轉l2mov r4,0fh r4 0fh l1 inc a 累加器加1 mov p1,a p1 a lcall dl 延時。djnz r4,l1 r4減1不為0轉...