|
匯編學(xué)習(xí)單片機(jī),小小記錄,點(diǎn)滴進(jìn)步
實(shí)驗(yàn)?zāi)康模阂粋(gè)LED閃爍的簡(jiǎn)單實(shí)驗(yàn)
實(shí)驗(yàn)代碼:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
CLR P1.0
LCALL DELAY
SETB P1.0
LCALL DELAY
LJMP MAIN
DELAY: MOV R5,#04H
F3: MOV R6,#0FFH
F2: MOV R7,#0FFH
F1: DJNZ R7,F1 ;若為0程序向下執(zhí)行,若不為0程序跳轉(zhuǎn)到
DJNZ R6,F2
DJNZ R5,F3
RET
END
代碼解析:
ORG后面跟一個(gè)地址,是指該語(yǔ)句后的指令會(huì)放到這個(gè)地址里,一直順序存放,直到END
ORG 0000H:程序從此地址開始運(yùn)行
ORG 030H :在0000H到0030H之間,很多地址都是留給中斷或者DOS保留的使用的,所以一般是從
0030H以后的地址開始,加一條跳轉(zhuǎn)指令,跳轉(zhuǎn)到 MAIN 程序處
LED原理圖
51hei.png (67.23 KB, 下載次數(shù): 49)
下載附件
2021-2-6 15:14 上傳
現(xiàn)在要D8燈亮,則P1.0需要是低電平,CLR p1.0這條語(yǔ)句是將P1.0中的內(nèi)容清零,高電平取反為低電平,這時(shí)候LED就亮,接著調(diào)用延時(shí)子程序,即將立即數(shù)傳給寄存器R5,實(shí)現(xiàn)延時(shí)SETB p1.0是用來(lái)把其后面的寄存器的位置1,即將其變?yōu)楦唠娖,這時(shí)候LED就不亮,緊接著繼續(xù)調(diào)用延時(shí)程序
DJNZ指令的具體功能是使操作數(shù)的內(nèi)容減1,并判斷操作數(shù)是否等于0,如果不等于0,則跳轉(zhuǎn)至標(biāo)號(hào)處,如果等于0,則順序往下執(zhí)行。
#0FFH是單片機(jī)匯編語(yǔ)bai言程序中一個(gè)8位二進(jìn)du制數(shù)的16進(jìn)制表示方法,#表示這是一zhi個(gè)數(shù)字,0是匯編語(yǔ)言的規(guī)定,即當(dāng)16進(jìn)制數(shù)dao的高位數(shù)大于9時(shí),前面要加0,F(xiàn)F是這個(gè)16進(jìn)制數(shù)的數(shù)值,即255,H是16進(jìn)制數(shù)的尾綴。
子程序F3來(lái)實(shí)現(xiàn)某個(gè)燈的熄滅和點(diǎn)亮,0FFH即11111111B,最后一個(gè)等D8點(diǎn)亮
|
評(píng)分
-
查看全部評(píng)分
|