51单片机(STC8)-- GPIO输入输出
文章目录
- I/O口相关寄存器
- 端口数据寄存器
- 端口模式配置寄存器(PxM0,PxM1)
- 端口上拉电阻控制寄存器(PxPU)
- 关于I/O的注意事项
- 配置I/O口
- I/O设置demo
- I/O端口模式
- LED控制(I/O输出)
- 按键检测(I/O输入)
STC8H 系列单片机所有的 I/0 口均有 4 种工作模式,可使用软件对 I/O 口的工作模式进行配置:
- 准双向/弱上拉(标准 8051 输出口模式)
- 推挽输出/强上拉
- 高阻输入(电流既不能流入也不能流出)
- 开漏输出。
I/O口相关寄存器
端口数据寄存器
读写端口状态
写 0: 输出低电平到端口缓冲区
写 1: 输出高电平到端口缓冲区
读:直接读端口管脚上的电平
端口模式配置寄存器(PxM0,PxM1)
I/O口工作模式配置相关寄存器为PxM0和PxM1,即需要配置两个寄存器才能设置某个I/O的工作模式
I/O口的4种工作模式配置如下
端口上拉电阻控制寄存器(PxPU)
端口内部4.1K上拉电阻控制位(注: P3.0和P3.1口上的上拉电阻可能会略小一些)
0:禁止端口内部的 4.1K 上拉电阻
1:使能端口内部的 4.1K 上拉电阻
I/O寄存器除上述常用的寄存器外,还有端口施密特触发控制寄存器、端口电平转换速度控制寄存器、端口驱动电流控制寄存器和端口数字信号输入使能控制寄存器等可简单了解
关于I/O的注意事项
配置I/O口
每个I/O 的配置都需要使用两个寄存器进行设置
以 P0口为例,配置P0口需要使用 P0M0和 P0M1 两个寄存器进行配置,如下图所示
注意
虽然每 I/O 口在弱上拉(准双向口)/强推挽输出/开漏模式时都能承受 20mA 的灌电流(还是要加限流电阻,如1K、5600、4720等),在强推挽输出时能输出 20mA 的拉电流(也要加限流电阻),但整个芯片的工作电流推荐不要超过70mA,即从 Vcc流入的电流建议不要超过70mA,从Gnd流出电流建议不要超过70mA,整体流入/流出电流建议都不要超过 70mA
I/O设置demo
I/O端口模式
#include "stc8h.h"
#include "intrins. h "void main()
{P_SW2 |= 0x80; //使能访问XFRP0M0 = 0x00; //设置P0.0~P0.7 为双向口模式P0M1 = 0x00P1M0 = 0xff; //设置P1.0~P1.7 为推输出模式P1M1 = 0x00P2M0 = 0x00; //设置P2.0~P2.7为高阻输入模式P2M1 = 0xff;P3M0 = 0xff; //设置P3.0~P37 为开模式P3M1 = 0xff;while(1);
}
LED控制(I/O输出)
#include<stc8hxx.h>
#include<intrins.h>sbit LED1 = P4^6;
sbit LED2 = P4^7;void Delay_ms(u16 times) //@24.000MHz
{unsigned char i, j;while(times--){_nop_();i = 32;j = 40;do{while (--j);} while (--i);}
}void main()
{P4M0 |= 0xC0;P4M1 &= 0x00;LED1 = 1;LED2 = 1;while(1){LED1 = 0;LED2 = 1;Delay_ms(200);LED1 = 1;LED2 = 0;Delay_ms(200);}
}
按键检测(I/O输入)
#include<stc8hxx.h>
#include<intrins.h>sbit LED1 = P4^6;
sbit LED2 = P4^7;sbit KEY1 = P3^5;void Delay_ms(u16 times) //@24.000MHz
{unsigned char i, j;while(times--){_nop_();i = 32;j = 40;do{while (--j);} while (--i);}
}void LED_Init()
{P4M0 |= 0xC0;P4M1 &= 0x00;LED1 = 1;LED2 = 1;
}void KEY_init()
{P3M0 &= ~(0x01<<5);P3M1 &= ~(0x01<<5);P3PU = 0x01<<5;
}void main()
{LED_Init();KEY_init();while(1){if(KEY1 == 0){Delay_ms(20);if(KEY1 == 0){LED1 = ~LED1;LED2 = ~LED2;}while(!KEY1);}}
}
相关文章:

51单片机(STC8)-- GPIO输入输出
文章目录 I/O口相关寄存器端口数据寄存器端口模式配置寄存器(PxM0,PxM1)端口上拉电阻控制寄存器(PxPU)关于I/O的注意事项 配置I/O口I/O设置demoI/O端口模式LED控制(I/O输出)按键检测(I/O输入) S…...

【实用安装教程】在win系统下制作Mac OS镜像启动U盘
第一步:制作Mac OS系统引导镜像启动U盘 准备一个8G(或以上)的U盘插入到win系统的电脑上 去下载TransMac(Mac启动盘制作工具)v10.4按照说明安装好 插入准备好的U盘,U盘数据要转移,打开TransMac,右键U盘选…...
职场唠嗑-国家教学
文章目录 职场晋升潜规则:让上司看到自己工作能力职场生存指南:脆弱无罪,眼泪如何变利器关于具备谋取好职位的资格实习生在职场的基本“规矩”比能力更能决定人生的,是你对工作的态度跳槽:看别人家的“饭”端自家的碗职…...
【温故而知新】JavaScript数据结构详解
一、概念 JavaScript是一种弱类型的编程语言,它提供了一些内置的数据结构来存储和组织数据。 在计算机科学中,数据结构是一种特定的方式来组织和存储数据,以便于有效地访问和修改数据。在JavaScript中,数据结构是指相互之间存在…...

matlab如何标定相机内外参和畸变参数
关于内外参矩阵和畸变矩阵可以学习 https://blog.csdn.net/qq_30815237/article/details/87530011?spm1001.2014.3001.5506 在APP中找到 camera Calibrator 点击 Add Images,导入拍照图片。标定20张左右就够了,然后角度变一下,但不需要变太…...

【卫星科普】什么是农业一号卫星和农业二号卫星?
农业一号卫星和农业二号卫星是中国自主研发的两颗重要卫星,主要用于农业领域的监测和研究。 农业一号卫星是中国第一颗具备红边波段传感器的卫星,也是世界上第一颗具备红边波段的宽视场多光谱中高分辨率卫星。这对农业农村遥感监测非常重要,…...

imgaug库指南(一):从入门到精通的【图像增强】之旅
文章目录 引言imgaug简介安装和导入imgaug代码示例imgaug的强大之处和用途小结结尾 引言 在深度学习和计算机视觉的世界里,数据是模型训练的基石,其质量与数量直接影响着模型的性能。然而,获取大量高质量的标注数据往往需要耗费大量的时间和…...

vue封装基础input组件(添加防抖功能)
先看一下效果: // 调用页面 <template><div><!-- v-model:伪双向绑定 --><my-input v-model"inputVal" label"姓名" type"textarea" /></div> </template><script> import…...

小程序一次性订阅消息(消息通知):java服务端实现
文章目录 引言一、消息订阅1.1 小程序订阅消息功能介绍1.2 消息分类1.2.1 新版一次性订阅消息Beta1.2.2 一次性订阅消息(用户通过弹窗订阅)1.2.3 长期订阅消息(用户通过弹窗订阅)1.2.4 设备订阅消息 二、获取模板ID1.登录[微信公众…...

百度自由DIY小程序源码:PHP+MySQL组合开发 带完整的搭建教程
随着移动互联网的快速发展,小程序已成为企业与用户互动的重要平台。然而,对于许多中小企业和开发者来说,从零开始开发一款小程序需要投入大量的时间和资源。 以下是部分代码示例: 系统特色功能一览: 1.高度自定义&…...

Vue中的选项式 API 和组合式 API,两者有什么区别
Vue中的选项式 API(Option API)和组合式 API(Composition API)是两种不同的组件编写方式,它们各有特点和适用场景: 选项式 API(Option API): 传统方法:Vue最初的编程范式…...

Linux下误删除后的恢复操作测试之extundelete工具使用
一、工具介绍 extundelete命令的功能可用于系统删除文件的恢复。在使用前,需要先将要恢复的分区卸载,以防数据被意外覆盖。 语法格式:extundelete [参数] 文件或目录名 常用参数: --after 只恢复指定时间后被删除的文件 --bef…...

table表格中使用el-popover 无效问题解决
实例只针对单个的按钮管用在表格里每一列都有el-popover相当于是v-for遍历了 所以我们在触发按钮的时候并不是单个的触发某一个 主要执行 代码 <el-popover placement"left" :ref"popover-${scope.$index}"> 动态绑定了ref 关闭弹窗 执行deltask…...
c++类全面讲解
文章目录 前言类的基本概念基本结构类与结构体的区别示例代码 类的属性和方法属性(成员变量)方法(成员函数)访问修饰符示例代码 类的构造函数和析构函数构造函数析构函数示例代码 类的构造函数重载重载构造函数示例代码 类中的拷贝…...

使用Python和Pygame库创建简单的的彩球效果
简介 Pygame是一款强大的游戏开发库,可以用于创建各种有趣的图形效果。为了更好地了解Pygame的功能,今天我们将要做的是在屏幕上随机生成一些彩色的小球,并使它们以不同的速度和方向移动。当小球碰到屏幕边缘时,它们将反弹。 功能…...

第2课 使用FFmpeg读取rtmp流并用openCV显示视频
本课对应源文件下载链接: https://download.csdn.net/download/XiBuQiuChong/88680079 这节课我们开始利用ffmpeg和opencv来实现一个rtmp播放器。播放器的最基本功能其实就两个:显示画面和播放声音。在实现这两个功能前,我们需要先用ffmpeg连接到rtmp服…...

【中小型企业网络实战案例 七】配置限速
相关学习文章: 【中小型企业网络实战案例 一】规划、需求和基本配置 【中小型企业网络实战案例 二】配置网络互连互通【中小型企业网络实战案例 三】配置DHCP动态分配地址 【中小型企业网络实战案例 四】配置OSPF动态路由协议【中小型企业网络实战案例 五】配置可…...
Hive实战:实现数据去重
文章目录 一、实战概述二、提出任务三、完成任务(一)准备数据1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 (二)实现步骤1、启动Hive Metastore服务2、启动Hive客户端3、基于HDFS数据文件创建Hive外部表4、利用Hive SQL实…...
客户满意度调查常用的ChatGPT通用提示词模板
调查目的与范围:如何明确调查的目的和范围,确保调查的针对性? 调查方法选择:如何选择合适的调查方法,如问卷调查、访谈等? 问卷设计:如何设计问卷,确保问题的针对性和客观性&#…...

Android--Jetpack--Paging详解
不尝世间醋与墨,怎知人间酸与苦。 择一业谋食养命,等一运扭转乾坤。 你见过哪些令你膛目结舌的代码技巧? 文章目录 不尝世间醋与墨,怎知人间酸与苦。择一业谋食养命,等一运扭转乾坤。你见过哪些令你膛目结舌的代码技…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...