单片机LED闪烁(2):亮01灭09


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值