这个程序的功能是循环导通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 |