用匯編語言實現單片機的循環燈控制
作者:huqin 來源:本站原創 點擊數:
… 更新時間:2014年04月21日 【字體:
大 中 小】
Protues模擬圖:

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