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

相关推荐
余生皆假期-5 小时前
永磁同步电机二次起步处理
单片机·嵌入式硬件
DLGXY6 小时前
STM32——TIM定时器、定时中断、RCC时序(八)
stm32·单片机·嵌入式硬件
CQ_YM7 小时前
ARM之I2C
arm开发·单片机·嵌入式硬件·嵌入式
让世界再也没有bug7 小时前
测试工具之一 ------示波器
单片机·嵌入式硬件·硬件测试·嵌入式软件测试
CircuitWizard7 小时前
STM32 + 淘晶驰T1串口屏波形显示
stm32·单片机·嵌入式硬件
A9better8 小时前
嵌入式开发学习日志53——互斥量
stm32·嵌入式硬件·学习
Q_21932764559 小时前
基于单片机的个性化服装尺寸红外 测量仪的设计
单片机·嵌入式硬件
Polanda。10 小时前
定时器-PWM参数测量实验
stm32·单片机·嵌入式硬件
恶魔泡泡糖11 小时前
51单片机串口通信
c语言·单片机·嵌入式硬件·51单片机
wotaifuzao11 小时前
【Keil 5安装】keil 5最新版本安装+环境配置+下载百度资源分享(安装包,注册机等)
stm32·单片机·嵌入式硬件·mcu·学习·keil5·最新keil