c51按键控制流水灯亮灭汇编语言代码
时间: 2023-10-18 11:31:06 浏览: 131
c51-led.rar_C51汇编 流水灯_c51开发板 led灯_汇编 51简单
下面是基于C51单片机的按键控制流水灯亮灭的汇编语言代码:
```
; 定义端口
LED EQU P1
; 定义变量
delayCnt DB 0
ledStatus DB 01H
; 初始化程序
ORG 0000H
LJMP MAIN
; 中断服务程序
ORG 0030H
RETI
; 主程序
MAIN:
MOV LED, #00H ; 初始化LED灯状态
MOV TMOD, #01H ; 设置计时器0为模式1
MOV TH0, #3CH ; 设置计时器0的初值
MOV TL0, #0FFH
SETB TR0 ; 启动计时器0
SETB EA ; 开启总中断
LOOP:
JNB P3.4, LOOP ; 如果按键未按下,则一直循环
CLR P3.4 ; 按键按下后,清除标志位
MOV delayCnt, #15 ; 延时计数器设置为15
CJNE ledStatus, #01H, TURN_OFF ; 如果LED为亮,则跳转到TURN_OFF
TURN_ON:
MOV LED, #01H ; LED灯亮
MOV ledStatus, #01H ; 更新LED状态
SJMP WAIT ; 等待
TURN_OFF:
MOV LED, #00H ; LED灯灭
MOV ledStatus, #00H ; 更新LED状态
WAIT:
JNB TF0, WAIT ; 等待计时器0溢出
CLR TF0 ; 清除计时器0溢出标志
DJNZ delayCnt, LOOP ; 延时计数器减1,如果不为0,则跳转到LOOP
JMP LOOP ; 延时结束后,跳转到LOOP循环
```
该代码中使用了计时器来实现延时,按下按键后会改变LED灯的状态。若LED灯为亮,则跳转到TURN_OFF关掉灯;若LED灯为灭,则跳转到TURN_ON点亮灯。
阅读全文