STC8增强型单片机开发——GPIO

一、理解电灯案例的代码

#include "STC8H.H"int main() {P5M0 = 0x00;P5M1 = 0x00;P53 = 1;while(1) {}
}
  • #include "STC8H.H" 引入头文件
  • P5M0 = 0x00;P5M1 = 0x00;配置引脚模式
  • P53=1;配置IO引脚的电平

二、头文件STC8H.H

针对 STC8H 系列芯片的头文件,如果Keil软件没有配置STC8环境,此处是无法导入的。

STC8H.H文件的存储目录,在Keil安装目录下的 C51\INC\STC文件夹下。内部有其他STC芯片的头文件,如果你用的是其他芯片,则include对应的头文件。

三、引脚工作模式

  1. STC8H文档下载。通过STC-ISP软件进行资料下载。

  1. 打开STC8H用户手册。跳转到`I/O`口

其中我们可以通过手册获得一些信息:

  • 1个端口对应8个引脚
  • 每个端口都由一个寄存器控制
  • 系列不同,端口数量不同
  • 每个引脚可配置4种不同的工作模式

四、IO口的工作模式

工作模式

PnM1

PnM0

说明

准双向口

0

0

弱上拉,即可输入也可输出
灌电流可达20mA,拉电流为270~150uA

推挽输出

0

1

强上拉输出。可达20mA,要加限流电阻

高阻输入

1

0

电流既不能流入也不能流出,但可用于测电平

开漏输出

1

1

内部上拉电阻断开。开漏模式既可读外部状态也可对外输出(高电平或低电平)。如要正确读外部状态或需要对外输出高电平,需外加上拉电阻,否则读不到外部状态,也对外输不出高电平。

代码中:

P5M0 = 0x00;
P5M1 = 0x00;

指的是P5端口所有的引脚为准双向口输出,如果想设置为其他模式,可以根据实际需求进行配置。

当前我们电灯是要控制P5端口的3号引脚,也就是P53这个引脚。理论上只需要设置这个引脚的工作模式即可。

P5M1 &= ~0x08,	P5M0 &= ~0x08; //准双向口
P5M1 &= ~0x08,	P5M0 |=  0x08; //推挽输出
P5M1 |=  0x08,	P5M0 &= ~0x08; //高阻输入
P5M1 |=  0x08,	P5M0 |=  0x08; //开漏输出
  • P5表示的是5号端口
  • 0x08表示的是3号引脚,对应二进制 0000 1000

引脚编号和值的对应关系:

编号

0

0x01

1

0x02

2

0x04

3

0x08

4

0x10

5

0x20

6

0x40

7

0x80

如果想配置任意端口的任意引脚的工作模式,可以通过上面的方式类比出来。

五、软延时操作

软延时指的是通过代码来进行延时睡眠操作。我们可以借助工具来提供软延时的代码。

打开STC-ISP工具,进行如下操作:

如图所示我们关注几个点:

  • 系统频率
  • 睡眠时长
  • 指令集

指令集主要针对的是芯片型号,选择不同型号,旁边会提示是否包含你所开发的芯片,我们在此使用STC-Y6,因为我吗使用的是STC8H的系列。

睡眠时长:是你希望提供的睡眠时间长度,根据实际情况而定。

系统频率:需要注意的是需要和烧录频率一致,否则会出现时间不匹配问题。

根据以上操作我们可以实现,LED每隔一秒钟闪烁的逻辑。

#include "STC8H.H"void Delay1000ms()		//@11.0592MHz
{unsigned char i, j, k;i = 57;j = 27;k = 112;do{do{while (--k);} while (--j);} while (--i);
}int main() {P5M1 &= ~0x08,	P5M0 &= ~0x08; //准双向口//P5M1 &= ~0x08,	P5M0 |=  0x08; //推挽输出//P5M1 |=  0x08,	P5M0 &= ~0x08; //高阻输入//P5M1 |=  0x08,	P5M0 |=  0x08; //开漏输出while(1) {P53 = 1;//开Delay1000ms();P53 = 0;//关Delay1000ms();}
}

可以为P53引脚设置不同工作模式,来观察效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/679350.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VALSE 2024 Workshop报告分享┆ 大规模自动驾驶仿真系统研究

视觉与学习青年学者研讨会(VALSE)旨在为从事计算机视觉、图像处理、模式识别与机器学习研究的中国青年学者提供一个广泛而深入的学术交流平台。该平台旨在促进国内青年学者的思想交流和学术合作,以期在相关领域做出显著的学术贡献&#xff0c…

【汇总】虚拟机网络不通(Xshell无法连接虚拟机)排查方法

搜索关键字关键字关键字:虚拟机虚拟机虚拟机连接失败、虚拟机无法连接、Xshell连接失败、ping baidu.com失败、静态IP设置 Kali、CentOS、远程连接 描述:物理机无法连接虚拟机;虚拟机无法访问百度,虚拟机无法访问baidu.com 虚拟机…

OpenCV|简单绘制一个矩形

OpenCV中的rectangle() 为绘制矩形命令,形式如下: # (img: cv2.typing.MatLike, pt1: cv2.typing.Point, pt2: cv2.typing.Point, color: cv2.typing.Scalar, thickness: int ..., lineType: int ..., shift: int ...)cv2.rectangle(img, pt1, pt2, …

Android getevent命令详细分析

在调试Android 的输入事件时,经常使用 “getevent -lrt” 命令,来确认驱动上报数据是否正常。从源码的角度来详细的分析一下getevent 这个程序。 首先用ls命令来看一下getevent lrwxr-xr-x 1 root shell 7 2023-11-20 10:08 system/bin/getevent -> …

基于Springboot的校园健康驿站管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园健康驿站管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

【数据可视化-01】Matplotlib图形实战宝典

在数据分析领域,图形化展示数据是非常重要的环节。Python中的matplotlib库是绘制各类图形的强大工具。本文将介绍如何使用matplotlib绘制折线图、直方图、饼图、散点图和柱状图等数据分析中常见的图形,并附上相应的代码示例,可以当初matplotl…

力扣41. 缺失的第一个正数

Problem: 41. 缺失的第一个正数 文章目录 题目描述思路复杂度Code 题目描述 思路 1.将nums看作为一个哈希表,每次我们将数字n移动到nums[n - 1]的位置(例如数字1应该存在nums[0]处…),则在实际的代码操作中应该判断nums[i]与nums[nums[i] - 1]是否相等,若…

ssm+vue的私人健身和教练预约管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的私人健身和教练预约管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通…

解放双手,利用自动点赞软件提高曝光度

在数字时代,社交媒体如同一片繁茂的森林,每一条动态、每一张照片都是树上挂着的果实,而点赞则仿佛是那些吸引眼球的色彩。在这个以流量为王的网络世界里,点赞数往往与内容的可见度直接相关,它不仅能够增加帖子的权重&a…

Coze扣子开发指南:怎样建立一个工作流?

Coze扣子的工作流支持通过可视化的方式,对插件、大语言模型、代码块等功能进行组合,从而实现复杂、稳定的业务流程编排。​ 简单的说,目前阶段,单独靠大语言模型能完成的任务还是有限的,那怎么办呢?解决方案…

如何vscode中刷力扣

推荐你阅读 互联网大厂万字专题总结 Redis总结 JUC总结 操作系统总结 JVM总结 Mysql总结 微服务总结 互联网大厂常考知识点 什么是系统调用 CPU底层锁指令有哪些 AQS与ReentrantLock原理 旁路策略缓存一致性 Java通配符看这一篇就够 Java自限定泛型 技术分享 如何vscode中刷力扣…

杰发科技AC7840——软件Sent_HAL39X

0. 序 截止2024.5.8,杰发的MCU没有硬件Sent功能,因此使用PWM模拟Sent来试试。 测试下7840的软件sent功能。 参考链接:SENT协议应用笔记 - TechPlus汽车工坊的文章 - 知乎 SENT协议 1. Sent功能测试 使用提供的软件Sent代码在7840上测试&a…