51微控制器,用定時器中斷,在P1口實現1S移動一次的流水燈,用組合語言編寫的程式

時間 2022-03-23 16:51:56

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 ...