子程序

这个程序的功能是循环导通P1输出引脚。

子函数

ORG 0000H

SJMP START

 
 

ORG 0030H

START:

    MOV SP,#60H

    MOV P1,#0FFH

 
 

MAIN:

    MOV P1,#00H

    CALL DELAY

    MOV P1,#0FFH

    CALL DELAY

    JMP MAIN

 
 

DELAY:

    MOV R0,#0FFH

    D2:

        MOV R1,#0FFH

        D1:

            DJNZ R1,D1

        DJNZ R0,D2

    RET

 
 

END

 
 

带参数的子函数

ORG 0000H

SJMP START

 
 

ORG 0030H

START:

    MOV SP,#60H

    MOV P1,#0FFH

 
 

MAIN:

    MOV P1,#00H

    MOV 40H,#0FFH

    CALL DELAY

    MOV P1,#0FFH

    MOV 40H,#0FFH

    CALL DELAY

    JMP MAIN

 
 

DELAY:

    MOV R0,40H

    D2:

        MOV R1,#0FFH

        D1:

            DJNZ R1,D1

        DJNZ R0,D2

    RET

 
 

END

循环指令RL实现跑马灯

ORG 0000H

SJMP START

ORG 0030H

START:

    MOV SP,#60H

    MOV P0,#0FFH

    MOV R3,#07H

    MOV A,#0FEH

MAIN:

    MOV P0,A

    RL A

    CALL DELAY

    DJNZ R3,MAIN

    MOV R3,#07H

    SJMP MAIN

 
 

DELAY:

    MOV R0,#0FFH

    D2:

        MOV R1,#255

        D1:

            DJNZ R1,D1

        DJNZ R0,D2

    RET

 
 

END

三重循环延时程序

ORG 0000H

SJMP START

ORG 0030H

START:

    MOV SP,#60H

    MOV P0,#0FFH

    MOV R2,#00H

MAIN:

    MOV A,R2

    MOV DPTR,#TAB

    MOVC A,@A+DPTR

    MOV P0,A

    INC R2

    CALL DELAY

    CJNE R2,#08H,MAIN ;R2不等于#08H,跳转至MAIN

    MOV R2,#00H

    SJMP MAIN

 
 

DELAY:

    MOV R0,#0FFH

    D2:

        MOV R1,#0FFH

        D1:

            MOV R3,#0FFH

            D0:

            DJNZ R3,D0

        DJNZ R1,D1

    DJNZ R0,D2

RET

 
 

TAB:

DB    00H,01H,02H,03H,04H,05H,06H,07H

 
 

END

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注