
ORG 0H
CLR P1.0 ;P1.0设为输出,初始为低电平
CLR P1.1 ;P1.1设为输出,初始为低电平
CLR P1.2 ;P1.2设为输出,初始为低电平
SETB P3.5 ;P3.5设为输出,用来控制蜂鸣器
MOV R0,#0FH ;R0初始值为00001111B,控制流水灯流动的方向
AGAIN:
MOV P1,R0 ;把R0的值赋给P1口,控制流水灯亮的位置
CALL DELAY ;调用延时函数
CPL P3.5 ;蜂鸣器引脚取反,让蜂鸣器发出声音
CALL DELAY ;调用延时函数
CPL P3.5 ;蜂鸣器引脚再次取反,让蜂鸣器停止发出声音
DJNZ R0,AGAIN ;循环控制流水灯流动的方向
DELAY:
MOV R1,#250 ;R1初值为250
L2:
DJNZ R1,L2 ;R1自减,直到为0退出
RET
END
在上述代码中,DELAY函数是一个简单的延时函数,用于控制流水灯的速度和蜂鸣器声音的频率。实现方法是通过循环次数来控制延时时间。在主程序中,先将三个灯引脚和蜂鸣器引脚设为输出,并且初始化状态。然后进入一个死循环,循环中先将三个灯引脚按照指定方向亮起来,并且调用延时函数实现时间间隔。接着让蜂鸣器发出声音,再次调用延时函数实现时间间隔后停止发声。最后通过循环控制流水灯流动的方向。