51单片机第1讲:点亮LED

我的单片机LED灯的端口为P20-P27

1 点亮LED

复制代码
;MOV A,#0FEH ;1111 1110
;MOV P2,A

;CLR P2.0 ;把P2.0清零,相当于输出低电平
;CLR P2.6

ORG 0000H ; 程序开始的起始位置
MOV P2,#0AAH
JMP $  ;跳到当前位置
END

ORG 0000H 
MAIN:
	MOV P2,#0AAH
	RET
JMP MAIN
END

2 LED灯闪烁

复制代码
ORG 0000H 
MAIN:
	MOV P2,#0AAH
	CALL DALAY
	MOV P2,#0FFH
	CALL DALAY
	JMP MAIN

;DALAY是延迟函数,会延迟一定的时间
DALAY: MOV R5,#25
D1: MOV R6,#100
D2: MOV R7,#100
	DJNZ R7,$
	DJNZ R6,D2
	DJNZ R5,D1
	RET
	END

3 流水灯

复制代码
ORG 0000H
MAIN:
	MOV R0,#8
	MOV A,#0FEH
LOOP:
	MOV P2,A
	CALL DALAY
	RL A
	DJNZ R0,LOOP
	JMP MAIN
	
DALAY: MOV R5,#25
D1: MOV R6,#100
D2: MOV R7,#100
	DJNZ R7,$
	DJNZ R6,D2
	DJNZ R5,D1
	RET
	END

初始A = 1111 1110

执行 RL A 后,A = 1111 1101

RL指令

RL​ = Rotate Left(循环左移)

移动方式:最高位→最低位,其他位向左移动一位

4 流水灯2

流水灯执行后,所有LED闪烁两次

复制代码
ORG 0000H
MAIN:
	MOV R0,#8
	MOV A,#0FEH
LOOP:
	MOV P2,A
	CALL DALAY
	RL A
	DJNZ R0,LOOP
	MOV R1,#3
	MOV A,#00H
LOOP1:
	MOV P2,A
	CALL DALAY
	CPL A
	DJNZ R1,LOOP1
	JMP MAIN
	
DALAY: MOV R5,#25
D1: MOV R6,#100
D2: MOV R7,#100
	DJNZ R7,$
	DJNZ R6,D2
	DJNZ R5,D1
	RET
	END

CPL指令

CPL A 的作用是:对累加器A按位取反(逻辑非)

指令名称:Complement Accumulator

操作:A ← NOT A(A的每一位取反)

二进制效果:0→1,1→0

相关推荐
蹊黎1 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
无敌贵点大王5 小时前
从寄存器层面重学STM32(6)——串口USART实战部分
stm32·单片机·嵌入式硬件
庙堂龙吟奈我何5 小时前
二进制和十六进制
stm32·单片机
国科安芯7 小时前
长期在轨的计算底座:商业空间站与在轨服务飞行器健康管理中的抗辐射MCU—— 面向可维护空间平台的分层容错与安全通信综述
人工智能·单片机·嵌入式硬件·安全·低轨卫星·抗辐射
不昀9 小时前
RMII切到10Mbps,50MHz参考时钟也要降到5MHz吗?
单片机·嵌入式硬件·硬件设计·以太网接口
路上有只喵10 小时前
认识元器件 · 单片机(MCU/MPU/SOC) · 实战篇6
单片机·嵌入式硬件
国科安芯10 小时前
核电站蒸汽发生器传热管在役无损检测模拟前端的低噪声供电研究
嵌入式硬件·ldo·低压差线性稳压器·无损检测·核电站·蒸汽发生器·传热管
集芯微电科技有限公司11 小时前
40V/24A高频率增强型GaN HEMT功率开关管/高频DC转换/电动工具/GaN充电器 方案首选
人工智能·科技·单片机·嵌入式硬件·深度学习·神经网络·生成对抗网络
十八岁牛爷爷11 小时前
STM32H7 长时间运行后 HTTP 断连:从“串口还活着”到 TX 描述符错账
stm32·单片机·嵌入式硬件
Lxx_Zw11 小时前
串口命令如何从字符串长成协议:帧头、长度、校验和与状态机
c语言·stm32·单片机·嵌入式硬件