单片机实现1s闪烁:汇编

1711259732207

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, #20         ; 设置循环计数为20次,因为1秒需要调用C50MS 20次
DELAY_LOOP:
    ACALL C50MS         ; 调用延时子程序,每次延时50ms
    DJNZ R0, DELAY_LOOP ; 

    CPL P1.0            ; 每当完成1秒的延时,反转P1.0的状态
    SJMP MAIN_LOOP      ; 跳回主循环,重复过程
		
C50MS:                   ; 50ms延时子程序
    MOV TL0, #0B0H
    MOV TH0, #3CH
    MOV TMOD, #01H      ; 设置定时器0为模式1(16位计数器)
    SETB TR0            ; 启动定时器0
WAIT_TIMER:
    JNB TF0, WAIT_TIMER ; 等待定时器溢出
    CLR TR0             ; 
    CLR TF0            
    RET                 ; 

ITOP:                
    RETI

END

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值