1樓:
//晶振12m
dseg at 30h
timetemp: ds 1
led: ds 1
cseg at 00h
org 0000h
ljmp start
org 000bh
ljmp timer0interrupt
start:
mov sp,#60h
mov timetemp,#20
mov p1,#0ffh;led低電平點亮lcall inittimer0
mov led,#0feh
loop:
mov p1,led ;add your code here!
ljmp loop
inittimer0:
mov tmod,#01h
mov th0,#high(65536-50000)mov tl0,#low(65536-50000);延時50mssetb ea
setb et0
setb tr0
rettimer0interrupt:
push acc
push psw
clr tr1
mov a,tl1
add a,#low(65536-50000)+7mov tl1,a
clr a
addc a,#high(65536-50000)setb tr1
djnz timetemp,nextt1
mov timetemp,#20
;********************====mov a,led
rl a
mov led,a;add your code here!
;********************====pop psw
pop acc
reti
2樓:匿名使用者
cnt equ 30h
org 0000h
sjmp sta
org 000bh
ljmp t0isr
org 0050h
sta:
mov tmod,#01h
mov th0,#3ch
mov tl0,#0b0h ;50ms
mov p1,#0feh
mov cnt,#20
setb et0
setb tr0
setb ea
sjmp $
t0isr:
clr tr0
mov th0,#3ch
mov tl0,#0b0h ;50ms
setb tr0
dec cnt
mov a,cnt
jnz t0isre
mov cnt,#20
mov a,p1
rl a
mov p1,a
t0isre:
retiend
51微控制器中如何用組合語言編寫流水燈
3樓:匿名使用者
org 0100h
ltor: mov a,#01h
loop: rr a
du ;從左到右亮,每次亮一盞zhi
mov p1,a
acall delay
jnb acc.0,loop
loop1: rl a
mov p1,a ;從右到dao左亮,每次亮一盞acall delay
jnb acc.7,loop1
loop2: rr a
orl a,#80h
mov p1,a ;從左到右依次點亮每一盞燈acall delay
jnb acc.0,loop2
loop3: rl a
anl a,#0feh
mov p1,a ;從右到左依次熄滅每一盞燈acall delay
jb acc.7,loop3
sjmp ltor
delay: mov r6,#01h ;延時子程式l2: mov r7,#01h
l1: nop
djnz r7,l1
djnz r6,l2
retend
4樓:匿名使用者
埠的暫存器,賦予乙個初值。每位對應一路燈。然後做移位命令。左移右移都可以,不就可以流水了。 寫好花樣,查表 ;亮燈控制程式; ;**; org ,
5樓:匿名使用者
org 0000h
ajmp main
org 0100h
main: mov dptr,#tab
mov r7,#4fh
loop: movc a,@a+dptr
inc dptr
mov p1,a
acall delay
clr a
djnz r7, loop
ajmp main
org 0200h
tab: ;從左到右,再從右內到左,一容次亮乙個
db 7fh,0bfh,0dfh,0efh,0f7h,0fbh,0fdh,0feh ;15,0fh
db 0fdh,0fbh,0f7h,0efh,0dfh,0bfh,7fh
;從右到左,再從右到左,依次點亮
db 0ffh,0feh,0fch,0f8h,0f0h,0e0h,0c0h,80h,00h
db 0ffh,7fh,3fh,1fh,0fh,07h,03h,01h,00h
6樓:匿名使用者
org 0000h
mov a, #01h
start: mov p1, a
rl a
lcall delay
ljmp start
delay:
mov r6, #0
mov r7, #0
delayloop:
djnz r6, delayloop
djnz r7, delayloop
retend
7樓:匿名使用者
loop:
mov a, #01h
mov r2, #8
output:
mov p1, a
rl a
call delay
djnz r2, output
ljmp loop
delay:
mov r6, #0
mov r7, #0
delayloop:
djnz r6, delayloop
djnz r7, delayloop
retend
8樓:
來自理科生的浪漫,用51微控制器製作心形流水燈
51微控制器使用定時器實現延時10ms,程式設計實現左右移動的流水燈的程式
c51微控制器中如何用組合語言編寫流水燈
9樓:冷安順樹琪
51微控制器用組合語言編寫流水燈程式,就是控制多個led,使其在特定時間間隔內,只有乙個led
發光,其他熄滅,用這種方式順序移動點亮led的位置,就形成了流水燈的效果。以下是程式:
;假設晶振12mhz,p1控制8個led低電平亮;啟動入口********************====org0000h
;復位啟動
ajmp
start
;org
001bh
;t1中斷
ajmp
t1int
;;定義變數********************====ysjs
equ30h;延時計數器
ledequ
31h;led控制緩衝器
;主程式*************************=start:
movled,#0feh
;初始化資料
movysjs,#0;;
movtmod,#10h
;定時器1工作於方式1,16位定時器
movtl1,#0b0h
;設定定時初值
movth1,#3ch
;定時時間=50ms
setb
et1;使能定時器1中斷
setb
tr1;啟動定時器1
setb
ea;開總中斷
movp1,led
;初始化流水燈
;loop:
jmploop
;迴圈等待中斷;;
t1int:
push
psw;定時器1中斷程式
push
acc;保護現場
;mov
th1,#3ch
;定時時間=50ms
movtl1,#0b0h
;inc
ysjs
;push
acc;保護acc
mova,ysji
;cjne
a,#2,qt1
;50ms*2=100ms
movp1,led
;mov
a,led;rl
a;累加器a的值迴圈左移1位
movled,a
;mov
ysjs,#0;;
qt1:
popacc
;恢復現場
poppsw
;reti
;返回主程式
end;匯程式設計序結束
10樓:量子
微控制器不分是不是c51,只要是51微控制器都支援彙編需要和c語言兩種方式設計程式,實現流水燈功能。
11樓:匿名使用者
埠的暫存器,賦予乙個初值。每位對應一路燈。然後做移位命令。左移右移都可以,不就可以流水了。 寫好花樣,查表 ;亮燈控制程式; ;**; org ,
12樓:匿名使用者
org 0000h
mov a, #01h
start: mov p1, a
rl a
lcall delay
ljmp start
delay:
mov r6, #0
mov r7, #0
delayloop:
djnz r6, delayloop
djnz r7, delayloop
retend
13樓:錦繡江山千萬年
loop:
mov a, #01h
mov r2, #8
output:
mov p1, a
rl a
call delay
djnz r2, output
ljmp loop
delay:
mov r6, #0
mov r7, #0
delayloop:
djnz r6, delayloop
djnz r7, delayloop
retend
51微控制器c語言對流水燈程式設計,用定時中斷做
14樓:安全管理人
#include
#define uchar unsigned charuchar m=0,i=0;
void main()
void timer0() interrupt 1{th0=(65536-50000)/256;
tl0=(65536-50000)%256;
m++ ;
if(m==5) //12m晶振 定時5*50ms=250ms{m=0;
p1=~(0x01<
[補充]
延時函式是一種粗略計算延時時間的函式
是通過讓微控制器執行空指令,達到等待延時的目的。
經常被應用在對延時時間要求不太嚴格的場合。
而定時器中斷,則是通過對晶振時鐘進行計數
由於晶振的頻率一般是很穩定的,所以晶振的脈衝頻率基本穩定從而通過對脈衝進行計數即可得到準確的延時目的。
中斷延時函式和定時器中斷延時沒有明確的對應關係。
主要是根據你的應用場合來確定使用哪種函式。
15樓:
// 寫了個測試程式,希望對你有幫助
#include
#define uchar unsigned charuchar m=0,i=0;
void main()
void timer0() interrupt 1}
16樓:匿名使用者
把具體要求說清楚後,我才好把按照要求寫的程式貼出來
51微控制器如何使用,怎樣用51微控制器做計算器啊?
使用51微控制器需要達到以下基本條件 1 至少要搭建乙個最小系統 2 你需要編制乙個51的控制程式 這樣你就可以使用這款51微控制器了。1微控制器是對所有相容intel 8031指令系統的微控制器的統稱。該系列微控制器的始祖是intel的8031微控制器,後來隨著flash rom技術的發展,803...
51微控制器課程設計,課程設計 用51微控制器設計乙個簡易計算器
org 0000h ljmp start org 0040h start mov sp,60h lcall status0 初始狀態 都是紅燈 circle lcall status1 南北綠燈,東西紅燈 lcall status2 南北綠燈閃轉黃燈,東西紅燈 lcall status3 南北紅燈,...
關於51微控制器中斷程式,51微控制器中斷程式
你好 看你對定時器中斷不是很了解,我可以給你乙個詳細的解釋 首先了解一下51微控制器的週期,51微控制器的機器週期計算方式是12 晶振 hz 也就是說微控制器每隔這麼一段時間會讓定時暫存器加1,如果是12mhz晶振,就是1us定時暫存器會自己加1。然後,當你配置好定時器相關暫存器後,開啟trx 定時...
51系列微控制器有哪些用途,51微控制器 的實際應用有哪些?範圍廣嗎?
微控制器是一種可通過程式設計控制的微處理器,微控制器晶元自身不能單獨應用與某項工程或產品上,它必須要靠外圍數字器件或者是模擬器件的協調才能發揮其自身的強大功能。微控制器屬於控制類數字晶元,目前其應用於領域已非常廣泛。主要如下 1.工業自動化。如資料採集,測控技術等 2.智慧型儀器儀表。如數字示波器,...
51微控制器中if語句的問題,51微控制器中if語句的乙個問題
微控制器程式在執行完main程式後會跳回到住main程式入口再重新執行的。把這個程式反彙編以後可以看到在c 0x0018行跳回主函式入口c0003 c 0x0000 02000f ljmp c 000f 4 void main void 5 c 0x000e 22ret c 0x000f 787f ...