1樓:匿名使用者
參考《微控制器原理與應用-基於彙編、c51及混合程式設計》一書的第146-147頁例題5-25,要改變流水燈的花樣只改變陣列a中各元素即可
2樓:做而論道
k1 bit p3.0
k2 bit p3.1
org 0000h
jmp start
start:
mov tmod, #01h
setb tr0
mov r4, #7fh
mov r5, #7fh
mov r6, #0feh
m_loop:
jnb k1, k1_prog
jnb k2, k2_prog
mov p1, r4
mov a, r4
rr a
mov r4, a
call dl1s
jmp m_loop
;---------------------------------k1_prog:
mov a, r5
anl a, r6
mov p1, a
mov a, r5
rr a
mov r5, a
mov a, r6
rl a
mov r6, a
cjne r6, #0efh, k1_dlmov r5, #7fh
mov r6, #0feh
k1_dl:
call dl1s
jmp m_loop
;---------------------------------k2_prog:
mov r3, #16
lp2:xrl p1, #255
call dl1s
djnz r3, lp2
jmp m_loop
;---------------------------------dl1s:
mov r2, #20
lp1:mov tl0, #low (65536-50000)mov th0, #high(65536-50000)jnb tf0, $
clr tf0
djnz r2, lp1
ret;---------------------------------end
3樓:修者世界
led equ 30h
times equ 31h
k1 bit p3.2
k2 bit p3.3
org 0000h
ljmp main
org 000bh
ljmp t0isr
org 0030h
main:
mov tmod,#01h
mov th0,#high(65536-50000)mov tl0,#low(65536-50000)setb tr0
setb et0
setb ea
mov r2,#0
mov r3,#0
mov led,#0feh
mov times,#0
loop:
jb k1,loop1
jnb k1,$
mov times,#1
sjmp loop
loop1:
jb k2,loop
jnb k2,$
mov times,#2
sjmp loop
t0isr:
push acc
clr tr0
mov th0,#high(65536-50000)mov tl0,#low(65536-50000)setb tr0
inc r3
cjne r3,#20,t0e
mov r3,#0
mov a,times
jnz t001
mov a,led
mov p0,a
t01:
jnz t011
mov a,#0feh
sjmp t012
t011:
clr c
rlc a
t012:
mov led,a
pop acc
reti
t001:
dec a
jnz t002
mov dptr,#tab1
mov a,r2
movc a,@a+dptr
mov p0,a
inc r2
cjne r2,#4,t0e
mov r2,#0
mov times,#0
pop acc
reti
t002:
mov dptr,#tab2
mov a,r2
movc a,@a+dptr
mov p0,a
inc r2
cjne r2,#8,t0e
mov r2,#0
mov times,#0
t0e:
pop acc
reti
tab1:
db 7eh,3ch,18h,00h
tab2:
db 00h,0ffh,00h,0ffh,00h,0ffh,00h,0ffhend
微控制器中的流水燈,花樣燈,跑馬燈?
4樓:
等 到 你微控制器學到一定程度就理解了,這些燈只是按照自己的意思來亮,至於名稱都無所謂
5樓:近視800度不戴眼鏡
估計樓上都沒看題目,花樣燈應該沒啥既定要求,流水燈和跑馬燈有區別,跑馬燈是一亮一滅,流水燈是實現乙個流水的效果
流水燈和跑馬燈(圖源csdn)
6樓:匿名使用者
沒什麼實質的區別只是各人說法不一樣,像流水燈程式也有人叫跑馬燈,說個簡單的例子,比方說乙個亮點不斷的左迴圈就叫流水燈。從中間亮兩個點,從左右兩邊流動就叫花樣。
7樓:
可以把每組i/o口看成乙個陣列,進行移位取反等操做就可以邊不同的流水燈程式,參考一下:#include
unsigned char i;
unsigned char temp,temp1;
unsigned char a,b;
void delay(void)
void main(void)
for(i=0;i<9;i++)
for(i=0;i<9;i++)
for(i=0;i<3;i++) }
}這個是我在開發板上的實驗程式,很久以前了,從程式來看應該是兩組八個的,
轉一圈然後閃三下。
8樓:匿名使用者
這三個和你了解都差不多,只是順序不同
51微控制器流水燈程式
9樓:電路diy手工
來自理科生的浪漫,用51微控制器製作心形流水燈
10樓:安迪的快樂時光
花樣流水燈的玩法,乙個51微控制器8位埠輪流輸出16顆燈珠,
11樓:匿名使用者
推薦你看郭天祥十天學會微控制器,回講實際程式的,講的挺好的
c語言c51微控制器花樣流水燈程式分析註釋
12樓:
和你說一句關鍵的(別告我你整個程式一句都看不懂):
p1=0xfe;
0xfe是十六進位制表示的數,二進位制就是1111 1110,通過你的程式和相關註釋可以看出,硬體上你有8個led燈連線p1口,且這些led是低電平亮。p1=0xfe(1111 1110)也就是表示七個燈滅,乙個燈亮。接下來的**就是讓p1資料0xfe左移且低位補1,移一次就是1111 1101,、兩次就是1111 1011,三次是1111 0111。。。
以此類推,可以看出它是0由最低位到最高位依次移過去的,而剛說了0表示led亮,這也就是led從一邊到另一邊依次點亮的效果。
後面的**按我上面說的自己理解,完全對你解釋太麻煩,對你也沒多大好處,只有你自己理解了才能學好微控制器
微控制器流水燈c語言程式(8個燈,依次點亮每個燈,延時500ms)
13樓:小夏在深圳
微控制器流水燈c語言程式的源**如下:
#include //51系列微控制器定義檔案#define uchar unsigned char //定義無符號字元
#define uint unsigned int //定義無符號整數
void delay(uint); //宣告延時函式void main(void)
temp=0x80;
for(i=0;i<8;i++) //8個流水燈反向逐個閃動temp=0xfe;
for(i=0;i<8;i++) //8個流水燈依次全部點亮temp=0x7f;
for(i=0;i<8;i++) //8個流水燈依次反向全部點亮void delay(uint t) //定義延時函式擴充套件資料51微控制器流水燈的源**如下
#include
#include
void delay(int a)
main()}}
14樓:
1、用精確定時的方法,設定流水燈執行時的時間間隔,延時時間為500ms。
2、#include "reg51.h"首先寫出微控制器的頭函式。
3、#include "intrins.h"輸入位移函式。
4、unsigned int count=0,led;定義函式。
5、輸入主函式,定義微控制器的埠,寫入延時函式。
6、中斷跳轉,使流水燈執行起來。
15樓:匿名使用者
#include //51系列微控制器定義檔案#define uchar unsigned char //定義無符號字元
#define uint unsigned int //定義無符號整數
void delay(uint); //宣告延時函式void main(void)
}} void delay(uint t) //定義延時函式
關於微控制器流水燈
不知道你有沒有搞明白所有的彙編指令的用途就看這個。p0口應該接了8個燈,操作他們的方法有兩種,一種是位操作,一種就是對整個p0口操作。51微控制器中每個並口有8條線,這8條線每條都接乙個led,如果是共陰極的話,給p0口的哪一位送高電平哪一位就亮。如果是共陽極,送低點平亮。一般都是共陽極,因為微控制...
微控制器流水燈彙編問題
org 0000h ljmp main org 030h mov p0,0dbh 11011011 零為亮 main mov a p0 rl a mov p0,a acall delay ajmp main delay mov r7,255 延時子程式d1 mov r6,255 d2 djnz r6...
求助高手 給些有關微控制器花樣流水燈程式 C語言編寫
去網上下乙個 然後對著晶元把程式寫進去測試下就 好了。微控制器十六位led流水燈控制用c語言怎麼程式設計 15 微控制器從小白開始系列 七 第乙個c語言程式來控制led燈。你也是計算機應用技術班的嗎?不會做呢 看不到線路圖,誰能幫你啊!51微控制器中如何用組合語言編寫流水燈 51微控制器中如何用組合...