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 ;结束
STC单片机IO口控制跑马 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)