用匯編語(yǔ)言實(shí)現(xiàn)單片機(jī)的循環(huán)燈控制
作者:huqin 來(lái)源:本站原創(chuàng) 點(diǎn)擊數(shù):
… 更新時(shí)間:2014年04月21日 【字體:
大 中 小】
Protues模擬圖:

程序:
ORG
0000H
LJMP
MAIN
ORG
0100H
MAIN: MOV
SP,#60H
MOV
A,#01H
;先讓第一個(gè)發(fā)光二極管亮
LOOP: MOV
P2,A
;從P2口輸出到發(fā)光二極管
LCALL
DELAY
;延時(shí)1秒
RL
A
;左移一位,下一個(gè)發(fā)光二極管亮
SJMP
LOOP
;循環(huán)
DELAY: MOV
R0,#10
;延時(shí)0.5秒子程序,使用參數(shù)R0、R7、R6。
DELY0: MOV
R7,#100
DELY1: MOV
R6,#250
DJNZ
R6,$
DJNZ
R7,DELY1
DJNZ
R0,DELY0
RET
END
補(bǔ)充
CPU的時(shí)序及有關(guān)概念
時(shí)序是表達(dá)指令執(zhí)行各控制信號(hào)在時(shí)間上的相互關(guān)系。時(shí)序是用定時(shí)單位來(lái)說(shuō)明的,89C51單片機(jī)的時(shí)序定
時(shí)單位共有4個(gè),從大到小依次是:拍、狀態(tài)、機(jī)器周期、指令周期,下面依次說(shuō)明:
1.拍(P):把振蕩脈沖的周期稱為拍,用P表示。它就是晶體的振蕩周期,或是外部振蕩脈沖的周期,拍是89C51單片機(jī)中最小的時(shí)序單位。
2.狀態(tài)或時(shí)鐘周期(S):振蕩脈沖經(jīng)過(guò)二分頻后,就得到單片機(jī)的時(shí)鐘信號(hào),把時(shí)鐘信號(hào)的周期稱為狀態(tài),用S表示。一個(gè)狀態(tài)包含兩個(gè)拍,分別稱為P1和P2,或者前拍和后拍。時(shí)鐘周期是單片機(jī)最基本的時(shí)間單位,在一個(gè)時(shí)鐘周期內(nèi),CPU僅完成一個(gè)最基本的動(dòng)作。
3.機(jī)器周期:通常把CPU完成一個(gè)基本操作所需要的時(shí)間稱為機(jī)器周期。一個(gè)機(jī)器周期由6個(gè)狀態(tài)(或12拍)組成,可依次表示為S1P1,S1P2,S2P1,S2P2,…,S6P1,S6P2。
當(dāng)振蕩頻率為12MHz時(shí),一個(gè)機(jī)器周期為1us;當(dāng)振蕩脈沖頻率為6MHz時(shí),一個(gè)機(jī)器周期為2us。
4.指令周期:指令周期就是一條指令所需要的時(shí)間。指令周期是89C51單片機(jī)中最大的時(shí)序單位,一般由若干個(gè)機(jī)器周期組成。指令不同,所需要的機(jī)器周期數(shù)也不同,但一條指令的周期應(yīng)在1~4個(gè)機(jī)器周期范圍內(nèi)。
延時(shí)時(shí)間為250*10*100*2*1us=0.5s