51单片机汇编。让蜂鸣器20ms响一次20ms停一次,周而复始
时间: 2023-08-07 13:20:31 浏览: 153
下面是一段让蜂鸣器20ms响一次20ms停一次的51单片机汇编代码,循环执行:
```
ORG 0H
MOV P1,#00H ; 将P1口置为输出状态,初值为0
LOOP:
SETB P1.7 ; P1.7置1,蜂鸣器响
ACALL DELAY ; 延时20ms
CLR P1.7 ; P1.7清0,蜂鸣器停
ACALL DELAY ; 延时20ms
SJMP LOOP ; 无限循环
DELAY: ; 延时函数,延时20ms
MOV R7, #30 ; 重置计数器
MOV R6, #235 ; 重置计数器
DELAY_LOOP:
DJNZ R6, DELAY_LOOP ; 计数器R6减1
DJNZ R7, DELAY_LOOP ; 计数器R7减1
RET ; 返回主程序
```
这段代码中,使用了一个DELAY函数用于实现20ms的延时。在主程序LOOP中,先将P1.7置1,让蜂鸣器响起来,然后调用DELAY函数进行20ms的延时;接着清除P1.7,让蜂鸣器停止响声,再次调用DELAY函数进行20ms的延时。最后使用SJMP指令实现无限循环,让蜂鸣器持续的响和停。
阅读全文