1樓:蘇羽奇偶
自己看程式修改一下:
#include
#include
* 延時子程式 *
* *
void delayms(unsigned char ms)
* 主程式 *
* *
main()}
2樓:穿假鞋打街球
中斷程式void int0(void) interrupt0 void int1(void)interrupt2
延時程式void delay*ms(int i)
void main()
關於51微控制器跑馬燈**的修改。。。
3樓:狄思鬆
迴圈語句 是不能用了~~
但可以修改, 方法兩種。
一是 通過 陣列 而是邏輯判斷
陣列方式就是 開一個8個元素的陣列 內容是 0000001.。。。1000000 其中 第一個為 0100000 第二個為 1000000 這樣一次向埠寫 陣列中的內容就行了。
第二個就是 利用 for 迴圈,當 迴圈值= 7 的時候 就讓 1 輸出 =8的時候讓 0 輸出。
關於51微控制器跑馬燈的**,為什麼我這樣寫所有led是一直亮著的
4樓:
去掉while(1);這個語句後面的分號。
51微控制器設計跑馬燈的程式用(c語言)編寫
5樓:墨汁諾
|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++)}}
6樓:
這個簡單,不要提問啊。你讓一個p0=0x01;然後再移的思路去想就能實現。不要什麼都要問啊。
7樓:匿名使用者
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++)}}
8樓:匿名使用者
用中斷多美。。
另外樓上那個include要自己調一下
51微控制器跑馬燈程式
9樓:
不好意思,延時用了樓上的。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的流程圖,這種流程圖不知怎麼寫好,而且寫出來基本是對每行的**的解釋。
10樓:
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
11樓:r傻強
迴圈以後
連續賦值就可以了!!
51微控制器 跑馬燈怎麼兩顆燈在中間亮起,往兩邊亮。在以下程式修改
12樓:匿名使用者
就改一下這一條 代替 第五條
uchar table=;
13樓:晴天小豬
51微控制器 跑馬燈怎麼兩顆燈在中間亮起,往兩邊亮。只有4種狀態吧!試試看~
#include
#include
#define uchar unsigned char#define uint unsigned intuchar table=;
void delay(uint time)}}void main()}}
用51微控制器(組合語言寫)寫跑馬燈程式??知道的幫個忙寫寫
白朮的草戒指 急用!請教!用組合語言程式,程式功能 實現方向可控的跑馬燈 程式設計要求 用八個led發光二極體實現跑馬燈 即 8個燈依次輪流發光,每次只亮乙個燈 系統啟動後,跑馬燈右向流轉,按下k1鍵,則反向流轉,再按則再反向 接線方法 流水燈接p0口,按鍵k1可自選p1 p3任一引腳。 胖大海君 ...
51微控制器裡TMOD設定問題,51微控制器裡TMOD設定問題
問題1 工作方式0 0x00 工作方式1 0x01 工作方式2 0x02 工作方式3 0x03 問題2 當你選擇好工作方式後,接下來就是設定初始值,方式0 16位加法計數器用了13位,也就是說,可以計算2 13 要想計數更大,使用迴圈即可。同理方式1 16位加法計數器用了16位,方式2是8位的。以上...
關於51微控制器的中斷問題,51微控制器外部中斷0的問題
優先中斷,就是在執行乙個中斷的時候,又來了乙個中斷 如果新來的中斷,其優先順序高於正在執行的中斷,那麼就會暫停現在的中斷而去執行新來的中斷,等這個新中斷執行完之後再會回去繼續執行剛才那個沒執行完也就是那個被打斷的中斷 如果新來的中斷,其優先順序不如正在執行的中斷的優先順序高,那麼程式會繼續執行這個中...