【51单片机】用汇编语言实现点灯、闪烁

今天刚学了用c语言点灯,那么我就在想可不可试一下用汇编语言来进行点灯(来自点灯攻城狮的手动狗头)

最简单的是点灯,当单片机引脚P2口连接的是LED时

CLR P2.0  ;这里的意思时将P2.0引脚置为低电平(LEDL连接方式为共阳极时点亮P2.0上的LED)

这样就可以点亮 P2.0接口上的LED了~~ (当然 这样一句汇编代码是不完整的,会有警告,但是编译输入后时可以点灯的)

茴香豆的茴 ,有几种写法,那么点灯也是如此,我们都知道在汇编语言中MOV的意思可以理解为赋值,即将源操作数赋值给目标操作数(将后面的东西赋值给前面的寄存器)

MOV P2,#0FH     ;#的作用是将0FH标记为立即数,将0FH 换成 0000 1111B 也没毛病

十六进制的0F 转化成二进制是 0000 1111

这样就可以将P2.4、P2.5、P2.6、P2.7 上的LED进行点亮了~~

如此,通过修改#后面的十六进制数就可以随意的点亮某个灯了~~

细心的朋友可能会发现,不是引脚为低电平的时候亮吗? 那么进制转换后不是第前面四位为0,后面四位为1吗,不应该是前四个灯亮,后四个灯灭吗?这是我的理解是他是从高位开始赋值的,具体怎么解释我也不明白,嘤嘤~

要实现闪烁还得加延时函数空耗CPU的时间实现延时,代码如下

DELAY:	MOV R7,#255		;11.0592MHz晶振   ,让下面的D1执行255次  也就是延时255毫秒
D1:                     ;D1这里到最后可以延时1毫秒,R7最多只能装255,超过就会溢出,多写无用
	NOP                 ;想增加延时的时长,只能多加R6之类的寄存器装数字嵌套在DELAY里面,或者用软   
	PUSH 30H            ;件生成一个新的延时函数  
	PUSH 31H
	MOV 30H,#2
	MOV 31H,#194
NEXT:
	DJNZ 31H,NEXT
	DJNZ 30H,NEXT
	POP 31H
	POP 30H
	DJNZ R7,D1          
	RET

增加延时的时长可以更改R7#后面的数值,但最大仅为255,在想延时更久,可以多加一个寄存器进行循环嵌套或者用软件生成一个新的延时函数,这样就可以自定义延时的时间了。

完整的代码是这样的

MAIN:
MOV P2, #0FFH
LCALL DELAY
MOV P2, #00H
LCALL DELAY
LJMP MAIN

DELAY:	MOV R7,#255		
D1:
	NOP
	PUSH 30H
	PUSH 31H
	MOV 30H,#2
	MOV 31H,#194
NEXT:
	DJNZ 31H,NEXT
	DJNZ 30H,NEXT
	POP 31H
	POP 30H
	DJNZ R7,D1
	RET
END

 代码的功能就是可以将连接在P2口上所有的LED灯同步进行闪烁

本贴仅为记录学习

  • 18
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
t字路交通是一种常见的交通控制设备,能够有效地引导交通流向和保障交通安全。在51单片机上使用汇编语言实现t字路交通的功能可以通过以下步骤实现: 1. 硬件准备:准备好51单片机、交通LED模块及其他必要的电子元件。将LED模块连接到51单片机的合适的IO口。 2. 确定交通信号:根据t字路口的具体情况,确定主路和支路的交通信号。一般来说,主路通行的路口为直行和左转信号,支路通行的路口为右转信号。 3. 编写汇编程序:使用51单片机汇编语言编写程序。根据交通信号的时序要求,编写控制交通的程序。程序需要定时循环,根据设定的时间段控制交通信号的切换。可以使用计时器中断来实现定时功能。 4. 设置IO口输出:根据51单片机的引脚分配,将相应的IO口设置为输出模式,用于控制交通的亮灭。 5. 编译与下载:将编写好的汇编程序进行编译,生成二进制代码。然后将二进制代码下载到51单片机中。 6. 运行测试:将51单片机通电,程序开始运行。此时根据程序中设定的时间段,交通会按照交通信号的切换规律进行亮灭。 7. 不断优化与调试:通过观察交通的运行状态和实际交通情况,不断进行优化和调试,确保交通系统的稳定性和准确性。 通过以上步骤,利用51单片机汇编语言实现t字路交通的功能。居民可以根据交通指示,安全有序地驾驶车辆,减少交通事故的发生概率,提高道路通行效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值