STC8增强型单片机开发 【GPIO的理解⭐⭐】

目录

一、引言

二、GPIO概述

三、GPIO的功能

1. 输入功能:

2. 输出功能

四、GPIO的配置方法

1. 选择GPIO端口和引脚:

2. 设置GPIO模式:

3. 配置GPIO参数:

五、GPIO应用实例

1. 硬件连接:

2. 编程实现:

头文件STC8H.H

引脚工作模式

软延时操作

六、总结


一、引言

在嵌入式系统设计和开发中,GPIO(General Purpose Input/Output,通用输入/输出)接口是单片机与外部世界交互的关键接口之一。STC8增强型单片机作为一款功能丰富、性能强大的微控制器,其GPIO接口的设计和配置对于开发者来说具有重要意义。本文将深入探讨STC8增强型单片机GPIO的概念、功能、配置方法以及应用实例,帮助读者深入理解GPIO在单片机开发中的作用。

二、GPIO概述

GPIO,即通用输入/输出端口,是单片机上的一种基本接口。这些端口可以配置为输入或输出模式,从而实现与外部设备的交互。在STC8增强型单片机中,GPIO端口通常具有多个引脚,每个引脚都可以独立配置为输入或输出模式。GPIO端口的灵活性使其在单片机开发中具有广泛的应用场景。

三、GPIO的功能

1. 输入功能:

当GPIO配置为输入模式时,它可以用于读取外部设备的信号状态。例如,我们可以将GPIO引脚连接到按键或传感器等外部设备,通过读取GPIO引脚的状态来获取按键的按下或传感器的输出值。

2. 输出功能

当GPIO配置为输出模式时,它可以用于控制外部设备的状态。通过向GPIO引脚写入高低电平信号,我们可以控制外部设备的运行、停止或切换状态。例如,我们可以使用GPIO引脚来控制LED灯的亮灭或电机的正反转。

四、GPIO的配置方法

在STC8增强型单片机中,GPIO的配置通常是通过编程来实现的。具体配置方法包括以下几个步骤:

1. 选择GPIO端口和引脚:

首先,我们需要确定要使用哪个GPIO端口和引脚。STC8增强型单片机通常具有多个GPIO端口,每个端口包含多个引脚。我们可以根据实际需求选择适合的端口和引脚。

2. 设置GPIO模式:

接下来,我们需要将选定的GPIO引脚配置为输入或输出模式。这通常是通过修改相应的寄存器来实现的。在STC8增强型单片机中,通常有一个或多个控制GPIO模式的寄存器,我们可以通过编程来设置这些寄存器的值以改变GPIO引脚的模式。

3. 配置GPIO参数:

除了设置GPIO模式外,我们还需要配置一些其他参数,如输出电平、输入触发方式等。这些参数的具体配置方法取决于具体的单片机型号和应用场景。

五、GPIO应用实例

下面是一个简单的GPIO应用实例,用于演示如何使用STC8增强型单片机的GPIO接口来控制LED灯的亮灭:

1. 硬件连接:

将STC8增强型单片机的某个GPIO引脚连接到LED灯的正极,LED灯的负极连接到电源的负极。同时,在单片机和LED灯之间连接一个适当的限流电阻以防止LED灯过流损坏。

2. 编程实现:

在单片机程序中,首先配置选定的GPIO引脚为输出模式。然后,通过向该引脚写入高低电平信号来控制LED灯的亮灭。具体实现可以参考以下伪代码:

#include "STC8G_H_GPIO.h"

void Delay1000ms()		//@24.000MHz
{
    unsigned char i, j, k;

    _nop_();
    i = 16;
    j = 51;
    k = 249;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}

// 函数配置IO口
void GPIO_config(void) {
    GPIO_InitTypeDef	GPIO_InitStructure;		//结构定义
    GPIO_InitStructure.Pin  = GPIO_Pin_3;		//指定要初始化的IO, 引脚
    GPIO_InitStructure.Mode = GPIO_PullUp;	//指定IO的输入或输出方式,GPIO_PullUp 准双向口模式
    GPIO_Inilize(GPIO_P5, &GPIO_InitStructure);//初始化  GPIO_P5 端口  参数一:端口,参数二:结构体名称
}

int main() {

    GPIO_config();

    // 2. 点灯、熄灯
    while(1) {
        P53 = 1;    // 点灯
        Delay1000ms();  //  延时一段时间
        P53 = 0;   // 熄灯
        Delay1000ms();  // 延时一段时间
    }
}

头文件STC8H.H

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

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

引脚工作模式

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

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

根据手册我们可以得到一些信息:

1个端口对应8个引脚

每个端口都由一个寄存器控制

系列不同,端口数量不同

每个引脚可配置4种不同的工作模式

IO口的工作模式:

工作模式

PnM1

PnM0

说明

准双向口

0

0

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

推挽输出

0

1

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

高阻输入

1

0

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

开漏输出

1

1

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

软延时操作

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

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

为了更清晰地描述如何在STC8H系列单片机上实现LED每隔一秒钟闪烁的逻辑,并考虑到系统频率、睡眠时长和指令集的选择,我们可以对提供的描述进行优化:

首先,我们要明确几个关键点:

  1. 系统频率:这是单片机运行的基础频率,对于时间精确控制(如LED闪烁间隔)至关重要。确保在编程时设置正确的系统频率,以保证定时器或延时函数的准确性。对于STC8H系列单片机,通常会有相应的系统时钟配置选项。

  2. 睡眠时长:在您的情况下,我们不需要使用睡眠模式来实现LED闪烁,因为闪烁是周期性的活动。然而,如果您在程序中需要等待一段时间,如使用延时函数,那么您需要确保延时的时间与您的系统频率相匹配,以实现准确的延时。

  3. 指令集:对于STC8H系列单片机,您选择了与STC-Y6芯片兼容的指令集。确保您使用的开发环境(如Keil、IAR等)支持STC8H系列的指令集,并且能够正确识别您所使用的芯片型号。

接下来,实现LED每隔一秒钟闪烁的逻辑可以如下进行:

  1. 初始化LED引脚:将连接LED的GPIO引脚配置为输出模式。

  2. 配置系统时钟:根据STC8H系列单片机的数据手册,配置系统时钟以确保定时器或延时函数的准确性。

  3. 编写主循环:在主循环中,交替设置LED引脚为高电平和低电平,以控制LED的亮灭。在每个状态之间,使用延时函数来确保LED保持当前状态的时间大约为一秒。

六、总结

通过本文的介绍,我们深入了解了STC8增强型单片机中GPIO的概念、功能、配置方法以及应用实例。GPIO作为单片机与外部世界交互的重要接口,在嵌入式系统开发中扮演着至关重要的角色。掌握GPIO的使用方法和技巧,对于提升单片机开发能力具有重要意义。希望本文能够对读者在STC8增强型单片机开发中理解和应用GPIO有所帮助。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探索精酿啤酒:从经典到创新

Fendi club啤酒一直以来都以其卓着的品质和与众不同的口感深受消费者喜爱。而随着时代的变迁和消费者口味的不断变化,Fendi club啤酒也在不断地探索和创新,以满足市场的多样化需求。 在经典的口感和风味基础上,Fendi club啤酒不断地尝试新的原…

sql Server2015安装——参考的教程

1.sql Server安装包来自:https://mp.weixin.qq.com/s/Pe_YbWw_MgwjzzZhQWIYfA 2.需要的替换文件和补丁:https://blog.csdn.net/Auspicious_air/article/details/108315154 https://blog.csdn.net/m0_60477996/article/details/126748477 3.安装manger…

MybatisPlus 构造器wrapper的使用与原理

系列文章目录 MyBatis缓存原理 Mybatis plugin 的使用及原理 MyBatisSpringboot 启动到SQL执行全流程 数据库操作不再困难,MyBatis动态Sql标签解析 Mybatis的CachingExecutor与二级缓存 使用MybatisPlus还是MyBaits ,开发者应该如何选择? My…

极简—springMVC工作流程

1、流程图 2、流程 发起请求:客户端通过 HTTP 协议向服务器发起请求。前端控制器:这个请求会先到前端控制器 DispatcherServlet,它是整个流程的入口点,负责接收请求并将其分发给相应的处理器。处理器映射:DispatcherS…

SDN和SD-WAN的对比

在数字化浪潮的推动下,SDN(软件定义网络)和SD-WAN(软件定义广域网)作为企业网络技术的两大支柱,正逐步引领网络架构的革新。尽管两者在理念和基础上有所共通,但在实际应用、功能特性和部署策略上…

视频号小店不直播怎么出单?这里面的秘密,一篇文章全曝光!

大家好,我是电商糖果 这两年关于视频号搞电商的话题度非常高,也吸引了很多商家入驻。 视频号因为背后巨大的私域流量池扶持,所以它的转化率非常高。 根据官方发出来的战报,我们也可以看出它的数据是翻倍增长。 在2024微信公开…

52. 【Android教程】网页视图:WebView

在前面的章节我们所围绕的全部都是纯客户端开发,我们叫 Native 开发。这样的好处就是体验和性能会非常好,但是在实际的使用中我们会发现存在大量的 H5 页面。这样就可以结合 Native / H5 双端的优势完成一个混合开发,而在这种开发模式中首当其…

Photoshop 2022 for Mac/win:释放创意,打造专业级的图像编辑体验

在数字图像编辑的世界里,Adobe Photoshop 2022无疑是那颗璀璨的明星。这款专为Mac和Windows用户设计的图像处理软件,以其卓越的性能和丰富的功能,赢得了全球数百万创作者的青睐。 Photoshop 2022在继承前代版本强大功能的基础上,…

QGraphicsView实现简易地图11『指定层级-定位坐标』

前文链接:QGraphicsView实现简易地图10『自适应窗口大小』 提供一个地图初始化函数,指定地图显示的中心点和地图缩放层级 能够让地图显示某一层级的瓦片,并将中心点坐标显示在视图中心。 1、动态演示效果 7级地图-大连-老虎滩 定位到 8级地图…

ChatGLM3大模型本地化部署、应用开发与微调

文章目录 写在前面ChatGLM3推荐图书作者简介推荐理由粉丝福利写在后面 写在前面 本期博主给大家推荐一本初学者学习并部署大模型的入门书籍,一起来看看吧! ChatGLM3 ChatGLM3是继一系列先进语言模型之后的又一力作,专为追求高精度和广泛适…

nature《自然》期刊文献怎么在家查看下载

nature《自然》期刊我们都知道,是世界上历史悠久的、最有名望的科学杂志之一。下载该期刊文献是需要使用权限的,如果你没有nature《自然》期刊的资源,又该如何获取呢?请看本文的经验分享。 一、先百度“文献党下载器” 在文献党下…

力扣HOT100 - 153. 寻找旋转排序数组中的最小值

解题思路&#xff1a; 与33题类似。 class Solution {public int findMin(int[] nums) {int l 0;int r nums.length - 1;if (nums[r] > nums[l]) return nums[0];while (l < r) {int mid l (r - l) / 2;if (nums[0] > nums[mid]) {r mid - 1;} else {l mid 1…

如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问

文章目录 前言1. 安装 Raspberry Pi OS2. 测试 web 站点3. 安装静态样例站点4. 将web站点发布到公网4.1 安装 Cpolar4.2 cpolar进行token认证4.3 生成cpolar随机域名网址4.4 生成cpolar二级子域名4.5 将参数保存到cpolar配置文件中4.6 测试修改后配置文件4.7 配置cpolar服务开机…

100G ZR4 80KM光模块产品亮点有哪些

之前的文章我们介绍了100G ZR4 80KM光模块的产品特征以及技术原理等&#xff0c;那本期文章我们来了解一下易天第二代100G ZR4 80KM光模块的产品亮点。 首先我们通过下面这张表格以最直观的方式来了解第一代和第二代100G ZR4 80KM光模块在工作温度、功耗、FEC纠错等方面有哪些…

Vue CLI配置代理、2.0、3.0

一、vue cli2.0 代理配置 proxy: {/api:{target: "http://localhost:8067",pathRewrite: {/api: }}, } 一、vue cli3.0 代理配置 proxy: {/api: {target: http://localhost:8067,pathRewrite: {/api: }} }

文件快递柜-免费开源-FileCodeBox

像拿快递一样取文件 什么FileCodeBox FileCodeBox 中文名是 文件快递柜&#xff0c;取文件像取快递一样&#xff0c;支持通过匿名口令分享文本&#xff0c;文件。 很多时候&#xff0c;我们都想将一些文件或文本传送给别人&#xff0c;或者跨端传递一些信息&#xff0c;但是我…

商务分析方法与工具(六):Python的趣味快捷-字符串巧妙破解密码本、身份证号码、词云图问题

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

vue路由知识补充(updating···)

1路由守卫中的next() next()方法表示放行&#xff0c;如果不执行此方法路由不会跳转&#xff0c;此方法可以接收一个参数 字符串路径&#xff1a;如果传递一个字符串路径&#xff0c;那么路由会重定向到该路径。 next(/home); 路由对象&#xff1a;如果传递一个路由对象&…

MySQL#MySql数据库的操作

目录 一、创建数据库 二、字符集和校验规则 1.查看系统默认字符集以及校验规则 2.查看数据库支持的字符集 3.查看数据库支持的字符集校验规则 4.校验规则对数据库的影响 1.以UTF-8格式创建数据库 2.不区分大小写 3.区分大小写 4 大小写对数据库的影响 三、操纵数据…

C++从入门到入土(二)——初步认识类与对象

目录 前言 类与对象的引入 类的定义 类的访问限定符及封装 访问限定符&#xff1a; 封装&#xff1a; 类的作用域 类的实例化 类的大小 this指针 this指针的特性 前言 各位佬们&#xff0c;在开始本篇文章的内容之前&#xff0c;我想先向大家道个歉&#xff0c;由于…