標題: STC89C51單片機實驗記錄心得 小小記錄,點滴進步 [打印本頁]

作者: link666666    時間: 2021-2-6 11:12
標題: STC89C51單片機實驗記錄心得 小小記錄,點滴進步
匯編學習單片機,小小記錄,點滴進步
實驗目的:一個LED閃爍的簡單實驗
實驗代碼:
    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后面跟一個地址,是指該語句后的指令會放到這個地址里,一直順序存放,直到END
ORG 0000H:程序從此地址開始運行
ORG 030H :在0000H到0030H之間,很多地址都是留給中斷或者DOS保留的使用的,所以一般是從
0030H以后的地址開始,加一條跳轉(zhuǎn)指令,跳轉(zhuǎn)到 MAIN 程序處
LED原理圖


現(xiàn)在要D8燈亮,則P1.0需要是低電平,CLR p1.0這條語句是將P1.0中的內(nèi)容清零,高電平取反為低電平,這時候LED就亮,接著調(diào)用延時子程序,即將立即數(shù)傳給寄存器R5,實現(xiàn)延時SETB p1.0是用來把其后面的寄存器的位置1,即將其變?yōu)楦唠娖剑@時候LED就不亮,緊接著繼續(xù)調(diào)用延時程序
DJNZ指令的具體功能是使操作數(shù)的內(nèi)容減1,并判斷操作數(shù)是否等于0,如果不等于0,則跳轉(zhuǎn)至標號處,如果等于0,則順序往下執(zhí)行。
#0FFH是單片機匯編語bai言程序中一個8位二進du制數(shù)的16進制表示方法,#表示這是一zhi個數(shù)字,0是匯編語言的規(guī)定,即當16進制數(shù)dao的高位數(shù)大于9時,前面要加0,F(xiàn)F是這個16進制數(shù)的數(shù)值,即255,H是16進制數(shù)的尾綴。

子程序F3來實現(xiàn)某個燈的熄滅和點亮,0FFH即11111111B,最后一個等D8點亮






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1