|
;51單片機(jī)入門程序8 ;工程名稱:讓單片機(jī)P0、P1、P2和P3端口所接的燈同時(shí)全亮全滅
;編寫日期:2009.7.4
;編寫者:藍(lán)柳柳
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ORG 0000H MAIN:
MOV P0,#00000000B
MOV P2,#00000000B
MOV P1,#00000000B
MOV P3,#00000000B
LCALL YS ;調(diào)用延時(shí)子程序
MOV P0,#11111111B
MOV P2,#11111111B
MOV P1,#11111111B
MOV P3,#11111111B
LCALL YS ;調(diào)用延時(shí)子程序
LJMP MAIN ;循環(huán)
YS: ;延時(shí)子程序YS,功能是能讓LED亮起來或者滅掉一小段時(shí)間
MOV R1,#200 ;讓燈亮滅時(shí)間的長(zhǎng)短也就是延時(shí)的長(zhǎng)短跟#號(hào)后面的數(shù)據(jù)有關(guān)
D: MOV R2,#200 ;延時(shí)長(zhǎng)點(diǎn)#號(hào)后面的數(shù)據(jù)就大點(diǎn),延時(shí)短點(diǎn)#號(hào)后面的數(shù)據(jù)
T: MOV R3,#200 ;就小點(diǎn),但#號(hào)后面最大的數(shù)據(jù)是255
DJNZ R3,$ DJNZ R2,T DJNZ R1,D RET ;子程序返回指令,子程序的設(shè)計(jì)一般都是因?yàn)橹鞒绦蛞{(diào)用它, ;調(diào)用完是要返回到主程序繼續(xù)運(yùn)行下一個(gè)語(yǔ)句的
END
;補(bǔ)充說明:AJMP、SJMP、LJMP都是控制轉(zhuǎn)移類指令,功能都是一樣的, ; 但是當(dāng)你所編寫的程序比較長(zhǎng)的時(shí)候就要用LJMP。 ; ; ACALL和LCALL都是調(diào)用指令,當(dāng)程序很長(zhǎng)的時(shí)候就用LCALL ; ; 延時(shí)子程序內(nèi)部的運(yùn)作比較復(fù)雜,大家只知道延時(shí)子程序的 ; 功能是能延時(shí)一小段時(shí)間。CUP那些內(nèi)部部件把數(shù)碼送出端口之后 ; 碰到了ACALL和LCALL這些指令后CPU就暫時(shí)不往端口送數(shù)了 ; 而是轉(zhuǎn)來運(yùn)行延時(shí)子程序,子程序運(yùn)行過程大概是這樣: ; 先把一些數(shù)分別送到一些寄存器里面去,然后進(jìn)行減1判斷不為0的工作 ; 就象我們我們把一些水果送到一些房間里面去,然后在里面把這些水果吃 ; 完,再去做正式的工作 ,吃水果的過程是花費(fèi)時(shí)間滴,呵呵! ; 延時(shí)子程序基本上是固定不變的,只要是要延長(zhǎng)時(shí)間都把這段子程序輸進(jìn)去就可以了!
|
|