ORG 0000H
LJMP MAIN ; 跳转到主程序
ORG 000BH
LJMP ITOP ;
ORG 0100H
MAIN:
MOV SP, #60H ; 设置堆栈指针
; 初始化P1.0为低电平(或根据需要设为高电平)
CLR P1.0 ; 例如,这里清零P1.0表示开始时它是关闭的
MAIN_LOOP:
MOV R0, #2 ; 设置循环计数为20次,因为1秒需要调用C50MS 20次
;亮R02次,R1 18次
MOV R1,#18
DELAY_LOOP1:
ACALL C50MS ; 调用延时子程序,每次延时50ms
DJNZ R0, DELAY_LOOP1 ; 计数器递减直到0,总共延时1秒
CPL P1.0 ; 每当完成0.1秒的延时,反转P1.0的状态
DELAY_LOOP2:
ACALL C50MS
DJNZ R1,DELAY_LOOP2
CPL P1.0
SJMP MAIN_LOOP ; 跳回主循环,重复过程
C50MS: ; 50ms延时子程序
MOV TL0, #0B0H
MOV TH0, #3CH
MOV TMOD, #01H ;
SETB TR0 ;
WAIT_TIMER:
JNB TF0, WAIT_TIMER ;
CLR TR0 ;
CLR TF0 ;
RET ;
ITOP:
RETI
END
亮1灭9