使用MCS-51的P0口控制八个发光二极管LED,相邻四个二极管为一组,使两组每隔1s交替发光一次,周而复始。

硬件电路图

MCS-51 LED交替发光电路图

程序代码

ORG 0H

MAIN:
    MOV P0, #0F0H   ; P0口初始值为0F0H,只有P0.7~P0.4为高电平,控制第一组LED的亮灭
    ACALL DELAY     ; 延时1s

    MOV P0, #0FH    ; P0口初始值为0FH,只有P0.3~P0.0为高电平,控制第二组LED的亮灭
    ACALL DELAY     ; 延时1s

    SJMP MAIN       ; 无限循环

DELAY:
    MOV R0, #250    ; R0寄存器初值为250
DELAY_LOOP:
    DJNZ R0, DELAY_LOOP  ; R0寄存器自减,直到为0时退出
    RET

END

程序说明:

  • 程序首先将P0口设置为0F0H,使P0.7~P0.4为高电平,从而点亮第一组LED。
  • 然后调用DELAY子程序,实现1秒延时。
  • 接着将P0口设置为0FH,使P0.3~P0.0为高电平,点亮第二组LED。
  • 再次调用DELAY子程序,实现1秒延时。
  • 最后使用SJMP指令实现无限循环,使两组LED交替闪烁。

DELAY子程序:

  • 将R0寄存器设置为250。
  • 使用DJNZ指令将R0寄存器自减,直到为0时退出。
  • 由于MCS-51单片机的时钟频率为12MHz,所以该延时子程序实现的延时时间约为1秒。

原文地址: https://www.cveoy.top/t/topic/omZb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录