1樓:匿名使用者
迴圈點亮led燈,也就是流水燈效果的控制,可以用定時器來控制,這樣做相對**量較少而時間比較精確,外部中斷0接以按鍵,可以控制動態效果的啟停。程式如下:
org 0000h
ljmp main
org 0003h
ljmp ext0 ;外部中斷0,控制流水燈啟停org 000bh
ljmp t0isr ;定時0控制流水燈迴圈點亮org 0030h
main:
mov tmod,#01h ;設定定時器0工作模式mov th0,#high(65536-60000) ;60毫秒定時
mov tl0,#low(65536-60000)setb et0
setb ea
mov a,#0feh ;led等初始化mov p0,a
sjmp $
ext0:
cpl tr0
reti
t0isr:
clr tr0
mov th0,#high(65536-60000)mov tl0,#low(65536-60000)setb et0
rl a
mov p0,a ;迴圈點亮led燈retiend
2樓:匿名使用者
你的程式太亂了,根本看不下去,給你說一下思路,你將中斷設定為電平觸發方式,當有中斷的時候將當前a裡邊的io口顯示放到中斷程式裡邊輸出到led顯示上,當按鍵鬆開時候就繼續走流水燈了,你這個應用不太符合我們常規的中斷應用,我們中斷是處理一件事情,你的中斷需要多次響應中斷。
3樓:空巷子
這個只要給p1口送入fe或者01看你外部電路的led接法然後只要用左移或者右移命令就可以迴圈
中斷的時候把那個資料送個暫存器r
重新開始的時候只要呼叫暫存器的值就ok
具體實現自己去做吧
用中斷方法來控制流水燈的,,,教教我 是8個led低電平燈亮接p2口,開始時d1到d8迴圈亮
4樓:無畏無知者
1)p2口的8個腳對應8個led;設d1燈對應高位,d8燈對應低位;
2)p1口的p1.0腳對應xo按鈕;p1.1腳對應x1按鈕;
3)開始時,顯示第一種方式:向p2口寫入a=01111111,延時0.5s,a 迴圈右移一位,再延時0.5s,如此反覆。
4)當收到xo按鈕訊號後,向p2口寫入a=01111111,延時1.5s,a 迴圈右移二位,再延時1.5s,如此反覆。
5)當收到x1按鈕訊號後,向p2口寫入a=10111111,延時1s,a 帶進位右移二位,再延時1.5s,如此反覆。當cy=0時,執行 3)。
5樓:
簡單吶,先把外部中斷設定好(要兩個都能用的)。然後在主程式裡面寫d8~d1迴圈亮,然後在中斷0的子程式裡面裡面寫 1,3 5 7 亮,中間間隔時間1.5s;在中斷1的子程式裡面寫2 4 6 8迴圈亮4次,中間間隔時間1s,就可以了。
51微控制器按鍵控制按下k1四個led燈迴圈亮,再按一下全滅,c程式怎麼寫 30
6樓:摩又青
、你看看微控制器資料手冊你的微控制器p0口內部上拉沒,一般的微控制器p0口都是沒上拉的,使用p0口一般都需要外部上拉.要麼不使用p0口.2、
7樓:匿名使用者
看到女朋友生病了好難受,真希望生病的是我
那樣我就可以請假不用上班了
8樓:百i度網友
簡單說下程式要點。首先應該對p0和p1埠初始化,p0.0一p0.
3初始化為1,led燈全滅,p1.0一p1.3初始化為1,當外部引腳上對應的按鈕按下時,在相應的i/o位會讀到0。
迴圈點亮led比較簡單,只要逐位寫人0,延時一段時間,再恢復寫1,不斷迴圈就可以實現點亮了。耍全滅時再次寫入全1。
檢查k1按鈕要注意,因手按下時間長短不定,會造程式多次讀到按下狀態,所以最好以檢測按鈕釋放為一次有效按下。另外機械按鈕在按下和釋放時有可能會有抖動造成軟體誤判,在程式中還應加入濾除抖動的判斷。
若想要具體**可網上搜尋。
9樓:
手機丟了先別慌,想想丟在什麼地方了,想起來了就去找找看。如果想不起來,那就趕緊去營業廳把你的手機卡掛失,防止別人撿到你的手機為所欲為,如果想起來是被人偷了,那就趕緊報警,儘管可能跟我的經歷一樣報警沒什麼鳥用,但不排除你會遇到一個好警察。
10樓:楠少爺
v重新小媳婦vvvv擦擦擦噠噠噠溼噠噠放大點
各位微控制器達人幫個忙 用組合語言做一個 發光二極體迴圈點亮的程式 要求 使八隻發光二極體做迴圈點亮一次
11樓:匿名使用者
org 00h
jmp main
org 30h
main: mov a,#0ffh ;設定左移初值clr c ;c=0
mov r2,#08h ;設定左移次數
loop: rlc a ;左移1位
mov p1,a ;輸出到p1
call delay ;延時
djnz r2,loop ;左移7次
mov r2,#07h ;
loop1: rrc a ;右移1位
mov p1,a ;輸出到p1
call delay ;
djnz r2,loop1 ;右移7次
jmp main
delay: mov r3,#20 ;延時0.2sd1: mov r4,#20
d2: mov r5,#248
djnz r5,$
djnz r4,d2
djnz r3,d1
retend
12樓:匿名使用者
;;; led單燈跑動
org 0000h
ajmp main
org 0030h
main:
mov a,#0feh
mov r0,#9 ;迴圈九次,8個燈亮及1次燈全滅start:
mov p0,a ;輸出到p0口連線的 led燈上setb c ;置進位c
rlc a ;帶進位左移
call delay ;延時一段時間djnz r0,start ;反覆迴圈
ajmp main ;重新開始
;延時子程式
delay:
mov r1,#15
d1: mov r2,#100
d2: mov r3,#100
djnz r3,$
djnz r2,d2
djnz r1,d1
retend
自己改改吧,不會的話,再說。
在51微控制器中,用組合語言,rlc a,為什麼左移兩位以後,不是兩個燈點亮?
13樓:匿名使用者
51微控制器中,rlc a是帶進位的迴圈左移,所以執行的結果不是將低位清0,要想將低位清零,實現點亮兩個燈可以採取的方法:
1、直接賦值實現:
a: mov p1,#0fch
b: mov a,p1
anl a,#0fch
mov p1,a
2、用迴圈命令,但每迴圈一次,需要將c清0mov a,p1
clr c
rlc a
clr c
rlc a
mov p1,a
14樓:
a=0ffh的話,應該是用低電平點亮的吧,本來用rlc帶c暫存器位迴圈左移就是1位,因為你應該有位移入c暫存器了
15樓:匿名使用者
用rlc a左移,其中包括了進位位cy了,a左移兩位以後不一定變成11111100,因為原來cy的狀態未知,所以,不是亮兩個led,當然需要是led的負極接在i/o腳上,是0有效才能是輸出0使led亮。
要保證變成11111100,需要這麼寫:
clr c
rlc a
clr c
rlc a
如果是迴圈左移的話,就寫一對;
mov r7,#8 ;迴圈8次lop:clr c
rlc a
mov p0,a
djnz r7,lop
..................
16樓:匿名使用者
硬體,保證led是好的。2.用萬用表測一下微控制器對應的io口是否是輸出低了 3.軟體檢查下對應io口是否設為輸出狀態,如果是輸入的話,高阻,是導通不了的。
利用組合語言,設計一個控制程式,能夠實現從led0至led7迴圈點亮,逆時針每兩盞燈依次點亮2秒
17樓:匿名使用者
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 a,#0fch
mov p0,a
mov r2,#40
mov r3,#6
clr 00h
sjmp $
t0isr:
clr tr0
mov th0,#high(65536-50000)mov tl0,#low(65536-50000)setb tr0
djnz r2,t0e
mov r2,#40
jb 00h,t001
rl a
mov p0,a
sjmp t002
t001:
rr a
mov p0,a
t002:
djnz r3,t0e
mov r3,#6
cpl 00h
t0e:
reti
微控制器用匯編做一個控制8個led燈泡從左到右依次點亮,最後全部亮,再全部熄滅後重復前面的過程
18樓:做而論道
樓主要的是彙編程源序。
是 51 微控制器嗎?
彙編程式如下:
;--------------------org 0000h
mov a, #7fh
lop:
mov p0, a
call delay
clr c
rrc a
cjne a, #0, lop
mov p0, a ;全亮call delay
mov p0, #255 ;全滅
call delay
sjmp 0000h ;重複前面的過程;--------------------delay:
;延時子程式,請樓主自己編寫。
;因為,晶振頻率和延時時間,樓主都沒有給出。
ret;--------------------end
19樓:匿名使用者
#include
#include
#define uchar unsigned char#define uint unsigned int//延時
void delayms(uint x)
}//主程式
void main()
p0=0x00;
delayms(150);
p0=0xff;
delayms(150);}}
微控制器組合語言裡 db,微控制器組合語言裡 DB
微控制器匯bai 編語言中的db是以位元組du為單位定zhi義一個資料段,一dao般用於查表程式中,舉例回 說明 display mov dptr,tab mov a,r2 movc a,a dptr mov p0,a rettab 共陰極答數碼管顯示 表db 3fh,06h,5bh,4fh,66h...
微控制器中斷返回指令,微控制器組合語言指令中中斷返回指令RET和RETI有什麼不同?
程式結構錯誤。mov th0,65536 50000 256 定時50毫秒 mov tl0,65536 50000 256mov ie,82h setb tr0 主程式,到這,就沒有了,這那行?timer 下面就是 定時器中斷服務程式mov th0,65536 50000 256 初脈衝50ms m...
如何在51微控制器使用c語言跟組合語言
如何用keil在 baic中嵌入彙編 要在duc檔案zhi中要嵌入彙編dao的地方用 pragma a 和 pragma enda 分隔開來內 具體請查容看 keil c 手冊裡有介紹 在c檔案中要嵌入彙編的地方用 pragma a 和 pragma enda 分隔開來 要問什麼啊,是程式呢,還是哪...