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()}}
微控制器中的流水燈,花樣燈,跑馬燈
等 到 你微控制器學到一定程度就理解了,這些燈只是按照自己的意思來亮,至於名稱都無所謂 估計樓上都沒看題目,花樣燈應該沒啥既定要求,流水燈和跑馬燈有區別,跑馬燈是一亮一滅,流水燈是實現一個流水的效果 流水燈和跑馬燈 圖源csdn 沒什麼實質的區別只是各人說法不一樣,像流水燈程式也有人叫跑馬燈,說個簡...
求大神幫忙,寫一份51微控制器,16位跑馬燈,p1口和p2口輸
程式思路,用中斷按鈕,改變flag的值,主程式里根據flag的值,執行三種亮燈模式之一 uint a if flag 0 方式1,單燈亮 if flag 1 方式2單燈滅 if flag 2 方式3 雙燈亮 專注51微控制器 led1 equ 30h led2 equ 31h org 0000h l...
關於51微控制器的中斷,關於51微控制器的中斷。
廣東人讀書好 中斷的概念 cpu在處理某一事件a時,發生了另一事件b請求cpu迅速去處理 中斷髮生 cpu暫時中斷當前的工作,轉去處理事件b 中斷響應和中斷服務 待cpu將事件b處理完畢後,再回到原來事件a被中斷的地方繼續處理事件a 中斷返回 這一過程稱為中斷 二 中斷源 在51微控制器中有5箇中斷...