51单片机汇编-点亮一个led

文章目录

前言


51单片机基础
51汇编实战

本章主要介绍打开一个led,具体采用51汇编


1.打开IDE

选择STC89C52RC

后缀是.asm


2.设置编辑器

3.设置输出

4. 原理图


5.编写代码

cpp 复制代码
ORG 00H;伪代码,程序起始位置
MOV A,#11111110B ;存入显示灯的位置数据为累加器A
MOV P1,A
JMP $ ;程序在这里停止
END

其中#11111110可以写为0FEH,不要忘了前面的0

上面可以不用A,直接可以负值,因为P1是片内ram,所以不需要A,如果是片外ram,就需要A

c 复制代码
ORG 00H
MOV P1,#11111110B ;存入显示灯的位置数据为累加器A
JMP $ ;程序在这里停止
END
c 复制代码
ORG 
CLR P1.7 ;清除1bit
JMP $ ;程序在这里停止
END

6 编译

7.下载

8.其它代码

1.LED闪烁

c 复制代码
ORG 00H
START:
	CLR P1.0
	CALL DELAY
	SETB  P1.0
	CALL DELAY
	JMP START
	
DELAY:MOV R5, #25
D1:MOV R6,#100
D2:MOV R7,#100
	DJNZ R7, $ ;$表示继续执行这一句
	DJNZ R6,D2
	DJNZ R5,D1
	RET

	
END


延时1s

`

2.跑马灯

从P1.0开始,循环依次点亮

c 复制代码
ORG 00H
START:
	MOV R0,#7
	MOV A, #0FEH
	
LOOP:MOV P1,A
	CALL DELAY
	RL A ;左移一位
	DJNZ R0, LOOP
	
	
DELAY:
	MOV R5, #50
D1:
	MOV R6, #100
D2:
	MOV R7, #100
	DJNZ R7,$
	DJNZ R6,D2
	DJNZ R5,D1
	RET
	
	
END

加强版

c 复制代码
ORG 00H
START:
	MOV R0,#7
	MOV A, #0FEH
	
LOOP:MOV P1,A
	CALL DELAY
	RL A ;左移一位
	DJNZ R0, LOOP
	MOV R1 , #3
	MOV A,#00H
	
LOOP1:
	MOV P1, A
	CALL DELAY
	CPL A;
	DJNZ R1,LOOP1
	JMP START
	
DELAY:
	MOV R5, #50
D1:
	MOV R6, #100
D2:
	MOV R7, #100
	DJNZ R7,$
	DJNZ R6,D2
	DJNZ R5,D1
	RET
	
	

	
END
相关推荐
C语言不精19 小时前
一种在 ESP32-S3 上取巧的清晰度检测方案
c语言·stm32·嵌入式硬件·学习
云雾J视界19 小时前
51单片机信号处理实战:C语言A/D与D/A转换应用,从传感器采集到PWM控制全解析
c语言·51单片机·信号处理·pwm·模拟信号·数字信号·a/d
DIY机器人工房19 小时前
简单理解:电源转换四大类型(AC/DC、DC/AC、DC/DC、boost、buck、LDO、AC/AC之间分别是什么关系?)
嵌入式硬件·boost·bms·buck·ldo·diy机器人工房·电源转换
就是蠢啊20 小时前
51单片机——串口通信(二)
嵌入式硬件·mongodb·51单片机
DIY机器人工房20 小时前
(十二)嵌入式面试题收集:15道
单片机·嵌入式硬件·diy机器人工房
缘友一世20 小时前
计算系统安全速成之汇编基础【1】
汇编
LS_learner20 小时前
PCB更新原理图变更出现大量Remove问题
嵌入式硬件
仰望星空的凡人20 小时前
基于RH850-F1x系列的瑞萨MCU选型指南
单片机·嵌入式硬件·rh850·renesas
卡提西亚20 小时前
(10)普中A2 51单片机DS1302实时时钟
单片机·嵌入式硬件·51单片机
TeleostNaCl20 小时前
Docker | 如何限制容器的 CPU/内存/磁盘IO 的资源利用以降低性能消耗
运维·经验分享·嵌入式硬件·docker·容器·智能路由器