汇编语言51单片机延时5ms
时间: 2023-07-02 19:20:07 浏览: 122
40个51单片机实验
下面是使用汇编语言实现51单片机延时5ms的程序:
```
ORG 0H ; 程序起始地址
MOV TMOD,#01H ; 设置定时器0为模式1
MOV TH0,#0FEH ; 定时器初值高位
MOV TL0,#0CBH ; 定时器初值低位
SETB ET0 ; 使能定时器0中断
SETB EA ; 使能总中断
SETB TR0 ; 启动定时器0
DELAY_5MS:
MOV R7,#0B4H ; 初始化计数器,5ms = 5000us
MOV R6,#0FDH
DELAY_LOOP:
DJNZ R7,$ ; 递减计数器R7,如果不为0则跳转到DELAY_LOOP
DJNZ R6,DELAY_LOOP ; 递减计数器R6,如果不为0则跳转到DELAY_LOOP
RET
TIMER0_ISR:
RETI ; 定时器0中断服务程序,直接返回即可
END ; 程序结束
```
上述程序中,使用定时器0来产生1ms的中断,中断服务程序直接返回即可。在主程序中,使用DELAY_5MS子程序来实现延时操作,该子程序使用两个8位寄存器R6和R7来实现延时5ms的功能,每次循环递减计数器R7,如果计数器R7不为0,则跳转到DELAY_LOOP标签处继续循环,否则递减计数器R6,直到计数器R6和R7都为0时,程序返回到主程序执行下一条语句。
阅读全文