51单片机结构与汇编指令

一、 在Proteus8软件设计出电路。

本次实验涉及电路图如下:

(1) 设计点亮一个LED灯

在这里插入图片描述
电路图设计原理:该点亮一个LED灯的电路设计原理是使用一个AT89C51芯片,后将LED灯接入芯片一端口,再增加一电阻限流,最后将生成的可执行hex文件导入芯片即可点亮LED。

(2) 设计一个流水灯(8个LED)

在这里插入图片描述

电路设计原理:

设计点亮含8LED灯的流水灯的电路设计原理是先放置一个AT89C51芯片,然后放置8个灯泡同时将他们分别与8个限流电阻串联,再将AT89C51芯片个端口以及小灯泡连于总线上,再使用线命名使端口和小灯泡一一对应,最后导入可执行文件hex即可完成流水灯。

二、 在Keil uVision5中相关程序。

本次实验涉及相关程序如下

(1) 设计点亮一个LED灯

在这里插入图片描述
程序中第一句ORG 0100H中ORG是伪指令相当于告诉编译器程序是从那个地址开始的。
第二句中的SETB指令是用于将一个位设置为1,即将灯泡对应端口P2.0设置为1,即点亮灯泡。后面的SJMP指令即为无条件跳转指令。

(2) 设计一个流水灯(8个LED)

51:
在这里插入图片描述

上述汇编程序就是将灯点亮然后将地址不断循环左移以达到点亮的流水灯效果。其中第一句和前面点亮一个LED相同即告诉编译器程序起始地址,然后LJMP无条件跳转到MAIN主函数去,主函数中首先将地址赋给A然后把A赋给P0然后左移A以此类推左移依次点亮灯泡达到流水灯效果。DELAY是定义一个延时函数后将255传给R7然后将250传给R6然后对R7减一然后判断是否为0不为零则转到后面对应操作,即进行循环以达到延时。

C:
在这里插入图片描述
在上述C语言程序中主要就是先写了一个延时函数delay-ms然后在主函数中写了一个while循环语句在语句中分别编写点亮LED函数,同时在每个LED点亮之间使用delay-my函数以达到延时效果,即形成流水灯。

三、 在Keil uVision5中用程序生成可执行hex文件。
程序编写结束后进行以下操作最后可以得到可执行hex文件如下:
首先点击下图箭头所指图标
在这里插入图片描述
再点Output中create hex.
在这里插入图片描述

四、 在Proteus8中使用hex文件完成电路操作。

在Proteus8中分别将hex文件加载到电路中最后效果如下:

(1) 设计点亮一个LED灯

在这里插入图片描述

(2) 设计一个流水灯(8个LED)

在这里插入图片描述

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值