STC單片機(jī)I/O口控制程序(兩個(gè)不同的跑馬燈效果)
ORG 000H ;起始地址
START: ;開始
MOV R2,#10;設(shè)置循環(huán)次數(shù)
D0:
MOV R0,#8 ;設(shè)置左移次數(shù)
MOV A,#07FH;向A寄存器輸入初始值
D2: RL A;將A中數(shù)據(jù)向左移一位
CALL DL;調(diào)入延時(shí)
MOV P1,A;輸出到P1口
DJNZ R0,D2;檢測是否左移八次,否則繼續(xù)執(zhí)行左移命令
MOV R1,#7;設(shè)置右移次數(shù)
D3: RR A;將A中數(shù)據(jù)向右移一位
CALL DL;調(diào)入延時(shí)
MOV P1,A;將A中數(shù)據(jù)輸出到P1口
MOV P0,A;并聯(lián)輸出至P0口
DJNZ R1,D3;檢測是否右移了七次,否則繼續(xù)執(zhí)行右移命令
DJNZ R2,D0;檢測是否循環(huán)了十次,否則繼續(xù)循環(huán)
MOV A,#0FFH;向A中載入新數(shù)據(jù)
D4:SUBB A,#01;執(zhí)行減法運(yùn)算
CALL DL1;調(diào)入延時(shí)程序1
MOV R3,A;將A中數(shù)據(jù)傳送給R3
MOV P1,R3;將R3(寄存器)中數(shù)據(jù)輸出至P1口
DJNZ R3,D4;檢測R3是否為零,否則繼續(xù)執(zhí)行減法運(yùn)算
JMP START;跳到開始執(zhí)行
DL1: MOV R7,#90;延時(shí)程序1
L4: MOV R6,#20
L3: MOV R5,#50
DJNZ R5,$
DJNZ R6,L3
DJNZ R7,L4
RET ;子程序返回
DL: ;延時(shí)程序
MOV R3,#20
L1:MOV R4,#15
L2:MOV R5,#50
DJNZ R5,$
DJNZ R4,L2
DJNZ R3,L1
RET ;子程序返回
END ;結(jié)束
評論