51微控制器跑馬燈程式,51微控制器設計跑馬燈的程式用(c語言)編寫

時間 2021-08-30 10:29:00

1樓:

不好意思,延時用了樓上的。keil下編譯ok。假設p1接燈。

org 00h

sjmp start

org 30h

start:

mov a ,#00

setb c

mov r0,#9

;從左到右

loop1:

rlc a

mov p1, a

acall delay

djnz r0, loop1

;從右到左

mov r0,#9

loop2:

rrc a

mov p1, a

acall delay

djnz r0, loop2

sjmp start

delay:

mov r6,#20

delay_0:mov r5,#255

djnz r5,$

djnz r6,delay_0

retend

這個程式比較簡單了。再精簡,只能精簡一句,將mov p1,a 放在delay函式裡。這樣減少一行。

簡單介紹一下:

首先就是你要輪流點亮,就是將1迴圈一圈,因為你要全滅一次,所以用到cy。

rg 00h

sjmp start

org 30h

start:

mov a ,#00 ;//清空a暫存器

setb c     ;//將cy置1,然後帶進位左移就會進入將a的b0

mainloop: ;//大迴圈起始

mov r0,#9 ;設定移位次數,要滅一次,所以設定為9

;從左到右

loop1:

rlc a     ;帶進位左移一次;第一次移位結果為01

mov p1, a ;將a中值放入p1點亮對應led;該句可放在delay裡,然後從右到左也去掉該句

acall delay ;延時,保持燈亮一段時間,自己根據實際情況調整一下。

djnz r0, loop1 ;迴圈,點亮下一個燈,最後一次,a為0,將全滅一次,cy為1

;從右到左

mov r0,#9 ;設定迴圈次數

loop2:    ;迴圈起始表示

rrc a     ;帶進位右移,第一次結果為80h

mov p1, a ;更新p1點亮對應led

acall delay ;延時,保持燈亮一段時間

djnz r0, loop2 ;迴圈,點亮下一個燈

sjmp mainloop  ;迴圈,重新開始下一輪

如果你是管腳輸出低led才亮,只需將mov a ,#00 和setb c改為mov a, #0ffh和clr c即可。

方案2:位定址區00做標誌,為0從左到右,該標誌為1從右到左

org 00h

sjmp start

org 30h

start:

mov a ,#00

setb c

mov r0,#9

clr 00h

loop1:

rlled:

jb 00h, rrled

rlc a

ajmp disp

rrled:

rrc a

disp:

mov p1, a

acall delay

djnz r0, loop1

cpl 00h

ajmp start

delay:

mov r6,#20

delay_0:mov r5,#255

djnz r5,$

djnz r6,delay_0

retend

下面是方案1的流程圖,這種流程圖不知怎麼寫好,而且寫出來基本是對每行的**的解釋。

2樓:

org 00h

sjmp main

org 30h

main:

mov r7,#8

mov r0,#00h

loop:

mov dptr,#100h

mov a,r0

movc a,@a+dptr

mov p1,a

acall delay

inc r0

djnz r7,loop

mov r0,#00h

mov r7,#8

loop_0:mov dptr,#200hmov a,r0

movc a,@a+dptr

mov p1,a

acall delay

inc r0

djnz r7,loop_0

sjmp main

delay:mov r6,#20

delay_0:mov r5,#255

djnz r5,$

djnz r6,delay_0

retorg 100h

db 根據燈的實際連線狀態寫

org 200h

db 根據燈的實際連線狀態寫end

3樓:r傻強

迴圈以後

連續賦值就可以了!!

51微控制器設計跑馬燈的程式用(c語言)編寫

4樓:墨汁諾

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

#include

unsigned char i;

unsigned char temp;

unsigned char a,b;

void delay(void)

void main(void)

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

5樓:

這個簡單,不要提問啊。你讓一個p0=0x01;然後再移的思路去想就能實現。不要什麼都要問啊。

6樓:匿名使用者

p1口接8個發光二極體共陽,燒入下面程式

#include

unsigned char i;

unsigned char temp;

unsigned char a,b;

void delay(void)

void main(void)

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

7樓:匿名使用者

用中斷多美。。

另外樓上那個include要自己調一下

用51微控制器(組合語言寫)寫一個跑馬燈程式??知道的幫個忙寫寫。

8樓:白朮的草戒指

急用!請教!!!

用組合語言程式,程式功能:實現方向可控的跑馬燈

程式設計要求:用八個led發光二極體實現跑馬燈(即:8個燈依次輪流發光,每次只亮一個燈),系統啟動後,跑馬燈右向流轉,按下k1鍵,則反向流轉,再按則再反向……。

接線方法:流水燈接p0口,按鍵k1可自選p1~p3任一引腳。

9樓:胖大海君

答疑解難   跑馬燈程式

org     0000h

ljmp     main

org     0100h

main:            jb          p0.7,main  ;等待開始鍵按下

lcall    ys             ;按鍵延時

jb         p0.7,main

mov     a,#7fh       ;是開始鍵按下  則跑馬燈開始執行

ll:                 mov     p1,a

lcall    ys           ;顯示延時

rr          a             ;迴圈右移一位

jb         p0.6, ll     ;沒有按下停止鍵  則繼續跑馬

lcall    ys            ;按鍵延時

jb          p0.6,ll         ;按下停止鍵 則停止跑馬;否則繼續跑馬

mov      a,#0ffh

mov      p1,a

sjmp     main            ;轉到程式開始處,等待開始鍵的按下

ys:                mov    r7,#150          ;延時子程式

yl:                mov    r6,#200

yy:                nop

djnz    r6,yy

djnz    r7,yl

retend

硬體介面電路如下:

哈哈   還滿意嗎   就請給俺選擇(滿意選項)吧

關於51微控制器的跑馬燈設定問題,關於51微控制器跑馬燈程式碼的修改。。。

蘇羽奇偶 自己看程式修改一下 include include 延時子程式 void delayms unsigned char ms 主程式 main 穿假鞋打街球 中斷程式void int0 void interrupt0 void int1 void interrupt2 延時程式void de...

51微控制器C程式問題

很明顯不一樣 原因如下 s2con 0x02 0 這條語句成立的條件是s2con 0 二進位制表示的,代表任意值 即s2con只需要第二位為0就一定滿足 s2con 0x02 1 這條語句成立的條件是s2con 二進位制表示的,代表任意值 即s2con可以為任意值,都滿足 我猜你的問題應該是這麼樣子...

微控制器大神請進,51微控制器彙編程式,程式可發至

生活如歌 1 p1口做輸出口,編寫程式,使p1口接的8個發光二極體l1 l8按16進位制加一方式點亮發光二極體。程式如下 org 0540h ha1s mov a,00h a初值為0 ha1s1 jb p3.3,ha1s1 如果p3.3為1則等待 有脈衝變0一次 mov r2,20h r2賦值為20...