当前位置: 首页 > news >正文

51单片机学习日志-2

在上一文中,介绍了使用I/O端口需要进行的一些准备,首先就是要对相应的寄存器进行配置,从而能够将I/O端口设置为相应的工作模式,通过前面的介绍我们知道一共有三种工作模式,需要通过对寄存器PxM0和PxM1两个寄存器进行配置,而配置的过程就是通过想寄存器赋值的方法,而由于芯片并不认识到底是哪个寄存器,所以就需要对相应的寄存器进行定义,以便后续的操作,同样也可以对输入输出端口寄存器进行定义,这样就可以通过对寄存器的赋值来改变端口的输出,这样就可以进行后续的实验了。
截屏2026-03-25 21.29.22
这幅图是最简单的实验电路图,通过这幅图可以演示I/O端口使用的方法,可以看到除了最简单的系统线路之外,只是增加了一条线路,就是将一颗发光二极管的阴极连接在P1.0上,而发光二极管的阳极通过串联一颗电阻连接在电源正极上,这个电阻的作用就是限流,这样就形成了一条完整的通路,只要当P1.0 端口产生低电平后,这条极简的电路就能导通,发光二极管就能点亮,这就是经典的“点亮二极管”的实验。虽然说起来简单,但是也是需要先了解相关的知识,才能更好地读懂代码,以及为后续的学习积累经验。这是我们所想要达到的现象,下面看一下如何通过代码实现这种现象。
截屏2026-03-25 21.37.00
截屏2026-03-25 21.37.19
截屏2026-03-25 21.37.32
首先我们要明白的一点是,烧录进单片机的是一个完整的程序,所以有一些关键要素是不能缺少的,这些要素也是构成完整C语言程序的要素,例如主函数是如何构成的,同时对于单片机来说,也需要导入一些重要的预编译文件,其中包含了一些封装好的函数以及一些定义或者声明,并且以头文件的形式出现在预编译的部分,这就是图中所给出的第一行代码,有了这一部分的加入,可以方便后续更好地操作。除此之外,还可以自己进行一些关键要素的定义,例如因为我们需要对I/O端口进行模式的配置,就需要用到配置寄存器,所以需要在这里就开始定义对应的寄存器,而定义的方法一般是通过寄存器对应的地址进行匹配,这里需要用到sfr这个关键字,同样也可以对寄存器的某一位进行定义,此时有两种方法进行定义,一种方法是使用地址匹配,还有一种方法是采用已经定义过的寄存器,再搭配寄存器的具体位进行定义,这里需要用到sbit这个关键字,此时可以比较方便地对寄存器的某一位进行修改,所以说这就是进行定义的步骤。当对寄存器进行定义之后,就可以在主函数中对寄存器进行赋值了,当然需要在主函数中进行赋值,而不能在主函数外面进行赋值,在主函数外只能进行定义或者声明,不允许有其他类型的代码,所以只能在主函数内进行赋值。
首先是对配置寄存器的赋值,这一步是为了对相应的端口配置合适的工作模式,因为需要使得端口P1.0端口输出低电平,所以需要将该端口配置位输出模式,然后配置好之后,就可以通过对端口寄存器进行赋值来修改端口的输出了,因为需要输出低电平所以直接将寄存器对应的位设置位0即可,这样就能够实现将发光二极管点亮的现象。

http://www.jsqmd.com/news/535660/

相关文章:

  • Phi-4-Reasoning-Vision商业应用:跨境电商产品图→合规标签→营销文案生成
  • 团结引擎发布小游戏与js版本SDK的互相调用
  • 亿坊|外卖点餐系统1000+案例|一键部署、提供源码、多端支持!
  • 分布式AI编排引擎:重新定义多模型协同开发
  • Linux中Docker介绍与使用小白篇
  • 基于WVP-Pro与ZLMediaKit的国标GB28181视频平台:从零部署到云端录像实战
  • 【数据库】Navicat Premium 15 离线激活全攻略:从安装到破解
  • GCP 运维实战指南:从 CLI 基础到 Vertex AI 项目管理
  • 2023年图像裁剪算法最新进展:从传统方法到深度学习
  • 3D高斯溅射实战:手把手教你用Python实现实时辐射场渲染(附代码)
  • 智能客服对话大模型实战:从架构设计到生产环境部署
  • 3步突破Switch联机限制:ldn_mitm跨网络联机完全指南
  • Armbian系统版本管理实战指南:从问题诊断到最佳实践
  • 乌班图常用命令
  • YOLOv8巅峰之作:CA(Coordinate Attention)坐标注意力机制全方位解析与实战改进
  • Lightpanda:解决现代Web自动化性能瓶颈的创新方案
  • Mirage Flow在Linux环境下的部署与优化:常用命令实战指南
  • COMSOL相场法模拟水力压裂案例研究:从单一裂缝到复杂多簇裂缝的扩展与交互
  • 3大突破!ValveResourceFormat如何重构游戏资源解析工作流?
  • 智能多模态内容分析平台:从数据采集到深度理解的全流程解析
  • Java全栈工程师面试实录:从基础到实战的深度探索
  • SpringBoot项目启动报错:Hikari连接池找不到MySQL驱动?5分钟快速修复指南
  • 5个维度定制Windows界面:让ExplorerPatcher为你打造高效工作环境
  • Joy-Con Toolkit 终极指南:释放Switch手柄的完整潜力
  • WrenAI智能查询工具完全指南:从环境配置到业务应用
  • 百奥赛图与Moonlight Bio达成战略合作协议,开发新一代细胞疗法
  • 告别模组管理烦恼:Scarab让空洞骑士模组体验升级
  • 轻量编辑器的效率革命:Notepad Next如何重塑跨平台文本处理体验
  • 地缘冲突背景下社会工程学攻击的演化机理与防御范式
  • 基于蜣螂优化算法的无线传感器网络(WSN)覆盖优化研究——Matlab实现与0/1模型寻优