STC单片机I/O口控制程序(两个不同的跑马灯效果)
ORG 000H ;起始地址
START: ;开始
MOV R2,#10;设置循环次数
D0:
MOV R0,#8 ;设置左移次数
MOV A,#07FH;向A寄存器输入初始值
D2: RL A;将A中数据向左移一位
CALL DL;调入延时
MOV P1,A;输出到P1口
DJNZ R0,D2;检测是否左移八次,否则继续执行左移命令
MOV R1,#7;设置右移次数
D3: RR A;将A中数据向右移一位
CALL DL;调入延时
MOV P1,A;将A中数据输出到P1口
MOV P0,A;并联输出至P0口
DJNZ R1,D3;检测是否右移了七次,否则继续执行右移命令
DJNZ R2,D0;检测是否循环了十次,否则继续循环
MOV A,#0FFH;向A中载入新数据
D4:SUBB A,#01;执行减法运算
CALL DL1;调入延时程序1
MOV R3,A;将A中数据传送给R3
MOV P1,R3;将R3(寄存器)中数据输出至P1口
DJNZ R3,D4;检测R3是否为零,否则继续执行减法运算
JMP START;跳到开始执行
DL1: MOV R7,#90;延时程序1
L4: MOV R6,#20
L3: MOV R5,#50
DJNZ R5,$
DJNZ R6,L3
DJNZ R7,L4
RET ;子程序返回
DL: ;延时程序
MOV R3,#20
L1:MOV R4,#15
L2:MOV R5,#50
DJNZ R5,$
DJNZ R4,L2
DJNZ R3,L1
RET ;子程序返回
END ;结束
评论