STC8增强型单片机开发day01
C51版本Keil环境搭建
搭建流程
环境搭建的基本流程:
- 从官方网站下载并安装Keil软件。
- 选择安装的软件中的C51工具集并运行。
- 通过从“文件”菜单中选择“项目”来创建新项目。
- 输入项目名称并选择您正在使用的设备。
- 通过从“项目”菜单中选择“添加文件到组”来添加源文件。
- 通过从“项目”菜单中选择“目标选项”来配置项目。
- 设置目标选项,例如振荡器频率、内存模型和启动代码。
- 通过从“项目”菜单中选择“生成目标”来构建项目。
- 使用适当的编程器/调试器将生成的代码下载到目标设备。
- 运行程序并在必要时调试。
下载与安装
下载地址是 https://www.keil.com/download/product/
选择C51进行下载:
安装步骤如下:
安装完成即可
激活
以管理员身份打开下载好的 keil软件。<
重要的事情说三遍:
一定要用管理员身份打开Keil!
一定要用管理员身份打开Keil!
一定要用管理员身份打开Keil!
打开 File 下的 证书管理
查看CID,用于生成证书
将生成的证书输入,点击添加
STC环境添加
STC-ISP下载
进入stc官网 https://www.stcai.com/gjrj
CTRL + F搜索关键字 STC-ISP下载
下载最新版本。
将STC添加到Keil中
- 打开stc-isp工具
- 按照图例点击按钮
3.选择keil的安装目录,以实际安装目录为准
成功后会弹出提示框
添加完成后,要关闭当前Keil并重新打开,才能正常加载STC工程开发环境!!!
校验是否导入STC环境
1.打开keil软件,新建一个keil项目,选择合适的目录
2.点击下拉框中,如果出现STC MCU Database,说明环境导入成功
3.可通过搜索框搜索到stc相关芯片信息
4. 取消汇编配置,新建完成项目
我们来进行第一个项目,点亮第一盏灯
- 项目我们新建完成后,目录结构如下:
● Target 1为项目根节点
● Source Group1为源码目录
● 可根据个人喜好来修改他们的名称
编码实现
结构准备
新建main.c文件。根据面板提示,选择C File,确定好文件名称,当前的文件名称为main
。
Add完成后,在源码目录中会多一个 main.c文件
代码实现
在 main.c中编写代码,实现main函数
编译烧录运行
- 如果没有配置编译输出,需要进行输出配置
- 在Output中 勾选 Create HEX File
- 保存与编译代码
编译完成后,来到项目创建的目录下的Objects目录中,会有一个以.hex结尾的二进制文件,这个文件就是编译的结果,也是需要进行烧录的二进制文件
芯片型号:根据当前开发板STC8型号进行确定
串口:开发板和PC电脑通过USB进行连接后,会显示串口信息,选择对应的串口
此时需要点击开发板中的蓝色按钮,进行烧录。
不同的开发板的重启按钮不一样,根据自己的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对应的头文件。
引脚工作模式
- STC8H文档下载。通过STC-ISP软件进行资料下载。
- 打开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这个引脚。理论上只需要设置这个引脚的工作模式即可。
引脚编号和值的对应关系
编号 | 值 |
---|---|
0 | 0x01 |
1 | 0x02 |
2 | 0x04 |
3 | 0x08 |
4 | 0x10 |
5 | 0x20 |
6 | 0x40 |
7 | 0x80 |
如果想配置任意端口的任意引脚的工作模式,可以通过上面的方式类比出来。
软延时操作
软延时指的是通过代码来进行延时睡眠操作。我们可以借助工具来提供软延时的代码。
打开STC-ISP工具,进行如下操作:
如图所示我们关注几个点:
● 系统频率
● 睡眠时长
●指令集
指令集主要针对的是芯片型号,选择不同型号,旁边会提示是否包含你所开发的芯片,我们在此使用STC-Y6,因为我们使用的是STC8H的系列。
睡眠时长,是你希望提供的睡眠时间长度,根据实际情况而定。
系统频率,需要注意的是需要和烧录频率一致,否则会出现时间不匹配问题。
根据以上操作我们可以实现,LED每隔一秒钟闪烁的逻辑。
如果感兴趣,可以为P53引脚设置不同工作模式,来观察效果。
库函数
使用库函数点灯
- 导入库函数。
下载STC8H的库函数:
来到库函数的目录下,拷贝以下文件:
● Config.h
● Type_def.h
● GPIO.h
● GPIO.c - 新建项目,将拷贝的4个文件放到项目目录中。
● 新建main.c
● 将库函数加入到项目中
添加完成后,我们可以看到,GPIO.c在目录中
- 在main.c进行LED的开关控制
#include "Config.h"
#include "GPIO.h"void Delay500ms() //@11.0592MHz
{unsigned char data i, j, k;i = 29;j = 14;k = 54;do{do{while (--k);} while (--j);} while (--i);
}void GPIO_config(){GPIO_InitTypeDef gpioInit;gpioInit.Mode = GPIO_OUT_PP;// 推挽gpioInit.Pin = GPIO_Pin_3; // P53GPIO_Inilize(GPIO_P5, &gpioInit);
}void main(){// 配置IO模式// P53 配置准双向 (使用宏函数)
// P5_MODE_IO_PU(GPIO_Pin_3);// P53 配置推挽输出模式(使用初始化函数)GPIO_config();while(1){P53 = 1;Delay500ms();P53 = 0;Delay500ms();}
}
使用delay模块延时
- 拷贝库函数中Delay.c和Delay.h到工程
- 引用头文件Delay.h
#include "Delay.h"
- 进行延时操作
delay_ms(250); // 延时250毫秒, 这里只支持1~255ms
#include "STC8G_H_GPIO.h"
#include "STC8G_H_Delay.h"void GPIO_config(void) {GPIO_InitTypeDef GPIO_InitStructure; //结构定义GPIO_InitStructure.Pin = GPIO_Pin_3; //指定要初始化的IO,GPIO_InitStructure.Mode = GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_Inilize(GPIO_P5, &GPIO_InitStructure);//初始化
}int main() {GPIO_config();while(1) {// 2、点灯、熄灯P53 = 1;delay_1s(250);P53 = 0;delay_1s(250);}
}
相关文章:
STC8增强型单片机开发day01
C51版本Keil环境搭建 搭建流程 环境搭建的基本流程: 从官方网站下载并安装Keil软件。选择安装的软件中的C51工具集并运行。通过从“文件”菜单中选择“项目”来创建新项目。输入项目名称并选择您正在使用的设备。通过从“项目”菜单中选择“添加文件到组”来添加…...
记录: Python解析yml文件,顺序解析,带所有文件等号
记录: Python解析yml文件,顺序解析,带所有文件等号from yaml.composer import Composer from yaml.constructor import Constructor import yamlclass ParseYml:def __init__(self):passstaticmethoddef parse(yml_pathNone):try:loader yaml.Loader(op…...
Npm Install Docusaurus Demo【npm 安装 docusaurus 实践 】
文章目录 1. 简介2. 前提2.1 安装 git2.2 安装 node 3. 安装4. 项目结构5. 访问5.1 localhost 访问5.2 ip 访问 1. 简介 Docusaurus 是一个facebook的开源项目,旨在帮助开发者构建易于维护和部署的文档网站。它提供了一个简单的方法来创建专业的文档网站࿰…...
【工具推荐定制开发】一款轻量的批量web请求命令行工具支持全平台:hey,基本安装、配置、使用
背景 在开发 Web 应用的过程中,作为开发人员,为了确认接口的性能能够达到要求,我们往往需要一个接口压测工具,帮助我们快速地对我们所提供的 Web 服务发起批量请求。在接口联调的过程中,我们通常会用 Postman 等图形化…...
Linux进程——进程的创建(fork的原理)
前言:在上一篇文章中,我们已经会使用getpid/getppid函数来查看pid和ppid,本篇文章会介绍第二种查看进程的方法,以及如何创建子进程! 本篇主要内容: 查看进程的第二种方法创建子进程系统调用函数fork 在开始前ÿ…...
ICode国际青少年编程竞赛- Python-1级训练场-路线规划
ICode国际青少年编程竞赛- Python-1级训练场-路线规划 1、 Dev.step(3) Dev.turnLeft() Dev.step(4)2、 Dev.step(3) Dev.turnLeft() Dev.step(3) Dev.step(-6)3、 Dev.step(-2) Dev.step(4) Dev.turnLeft() Dev.step(3)4、 Dev.step(2) Spaceship.step(2) Dev.step(3)5、…...
uniapp微信小程序1rpx border在某些手机机型上边框显示不出来解决方案
小程序在ios系统中,如果border小于1px的情况下,border就可能显示不全(可能少了上下左右任意一边) 只需要加一个::after或::before伪类,使用绝对定位定在原来元素上边就不会产生问题了! .d_card_line1_tag { padding: 1rpx 14r…...
Linux mkfs.ext2命令教程:如何创建ext2文件系统(附实例详解和注意事项)
Linux mkfs.ext2命令介绍 mkfs.ext2是Linux系统中用于创建ext2文件系统的命令。它的作用是在指定的设备上创建一个ext2文件系统,使该设备能够存储文件和目录。创建ext2文件系统的过程包括以下几个步骤。 Linux mkfs.ext2命令适用的Linux版本 mkfs.ext2命令在大多…...
基于Springboot的校园招聘系统(有报告)。Javaee项目,springboot项目。
演示视频: 基于Springboot的校园招聘系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…...
将 Vue、React、Angular、HTML 等一键打包成 macOS 和 Windows 平台客户端应用
应用简介 PPX 基于 pywebview 和 PyInstaller 框架,构建 macOS 和 Windows 平台的客户端。本应用的视图层支持 Vue、React、Angular、HTML 中的任意一种,业务层支持 Python 脚本。考虑到某些生物计算场景数据量大,数据私密,因此将…...
使用 MobaXterm 链接 Ubuntu(Windows子系统)
MobaXterm_Personal_22.1 Ubuntu(Windows子系统)...
QT设计模式:代理模式
基本概念 代理模式(Proxy Pattern)是一种结构型设计模式,它允许你提供一个代理对象,以控制对其他对象的访问。 代理通常在客户端和实际对象之间充当中介,用于控制对实际对象的访问(如登录控制)…...
独热编码One-Hot是什么?在实际应用中具体是如何存储的?
One Hot编码是一种常用的文本或类别数据编码方式,尤其在自然语言处理和机器学习中。在One Hot编码中,每个词(或类别)会被表示为一个二进制的向量,这个向量的长度等于词汇表(或类别总数)的大小&a…...
计算机视觉与深度学习实战之以Python为工具:基于GUI搭建通用视频处理工具
注意:本文的下载教程,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程:计算机视觉与深度学习实战-以MATLAB和Python为工具_基于GUI搭建通用视频处理工具_项目开发案例教程.pdf 一、引言 随着计算机视觉和深度学习技术的飞速…...
18.Docker学习
1.Docker应用场景 Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker(模板)将软件运往各个环境(测试环境和生产环境拉取镜像(实例)),相当于是一个模子刻出来的 …...
树莓派4b红外检测
1.红外检测连接图 2.红外检测工作原理 红外传感器的工作原理类似于物体检测传感器。该传感器包括一个红外LED和一个红外光电二极管,因此通过将这两者结合起来,可以形成一个光耦合器。 红外LED是一种发射红外辐射的发射器。该LED看起来与标准LED相似&a…...
大模型的不足与解决方案
文章目录 ⭐ 不具备记忆能力 上下文窗口受限⭐ 实时信息更新慢 新旧知识难区分⭐ 内部操作很灵活 外部系统难操作⭐ 无法为专业问题 提供靠谱的答案⭐ 解决方案的结果 各有不同的侧重 在前面三个章节呢,为大家从技术的角度介绍了大模型的历程与发展,也为…...
Java中使用FlatBuffers实现序列化
Java 中的 FlatBuffers有助于高速数据序列化/反序列化,消除解析开销。它由 Google 开发,为跨平台数据交换提供无模式、内存高效的解决方案。 Java 开发人员可以利用其直接内存访问来实现最佳性能和最小内存占用,从而提高应用程序速度、可扩展…...
[图解]SysML和EA建模住宅安全系统-02
1 00:00:00,900 --> 00:00:02,690 这个就是一个块定义图了 2 00:00:03,790 --> 00:00:04,780 简称BDD 3 00:00:05,610 --> 00:00:08,070 实际上就是UML里面的类图 4 00:00:08,080 --> 00:00:09,950 和组件图的一个结合体 5 00:00:13,150 --> 00:00:14,690 我…...
2024年北京服贸会媒体邀约资源有哪些?
传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 2024年北京服贸会(中国国际服务贸易交易会,简称CIFTIS)作为中国重要的国际性服务贸易盛会,会吸引众多媒体的关注和参与。媒体邀约资源通常…...
大语言模型LLM入门篇
大模型席卷全球,彷佛得模型者得天下。对于IT行业来说,以后可能没有各种软件了,只有各种各样的智体(Agent)调用各种各样的API。在这种大势下,笔者也阅读了很多大模型相关的资料,和很多新手一样&a…...
Alibaba Cloud Linux 安装mysql及注意事项
1.安装mysql #1.运行以下命令,更新YUM源。 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm#2.(可选)当操作系统为Alibaba Cloud Linux 3时,执行如下命令,安装MySQL所需的库文件…...
设计模式——工厂模式(Factory)
工厂模式(Factory Pattern)是一种常用的设计模式,它提供了一种封装创建对象过程的方法。通过工厂方法或工厂类,你可以将对象的创建与使用分离,使得代码更加灵活和可维护。工厂模式主要分为三种类型:简单工厂…...
NVIDIA Omniverse Cloud API支持数字孪生开发,可解决复杂AI问题 | 最新快讯
在全球范围内,价值超过 50 万亿美元的重工业市场,正在竞相实现数字化。 基于此,为帮助数字孪生技术更好地赋能千行百业,AI 企业 NVIDIA 在架构底层算力的同时,也搭建了 NVIDIA AI Enterprise 和 Omniverse 两大平台。 …...
智慧电力,山海鲸引领
随着科技的不断进步和电力行业的快速发展,智能化管理已成为电力行业的重要趋势。在这一背景下,山海鲸智慧电力管理系统凭借其卓越的性能和创新的功能,为电力行业带来了革命性的改变。 山海鲸智慧电力管理系统是一套集数据采集、分析、展示于…...
【文章转载】ChatGPT 提示词十级技巧: 从新手到专家
学习了微博网友宝玉xp老师《ChatGPT 提示词十级技巧: 从新手到专家》 个人学习要点: 1、关于提示中避免使用否定句,播主说:“没有人能准确解释为什么,但大语言模型在你告诉它去做某事时,表现似乎比你让它不做某事时更…...
类的生命周期
目录 一、概述 二、加载阶段 三、连接阶段 连接阶段之验证 连接阶段之准备 连接阶段之解析 四、初始化阶段 五、总结 一、概述 类的生命周期描述了一个类加载、使用、卸载的整个过程。 也是其他知识的基础: 类的生命周期: 二、加载阶段 加载(Loading…...
AI赋能分层模式,解构未来,智领风潮
🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 🚀 转载自热榜文章🔥:探索设计模式的魅力:AI赋能分…...
Linux平台下muduo网络库源码编译安装与测试,包含boost库的安装与测试!!!!
最近在学习muduo网络库,先来记录一下如何在Linux平台下编译安装以及测试muduo网络库源码。 获取源码 muduo库源码github仓库地址: https://github.com/chenshuo/muduo 在linux系统下,输入 git clone https://github.com/chenshuo/muduo.git…...
MATLAB 函数
MATLAB 函数 函数是一起执行任务的一组语句。在MATLAB中,函数是在单独的文件中定义的。文件名和函数名应该相同。 函数在其自己的工作空间(也称为本地工作空间)中对变量进行操作,与在MATLAB命令提示符下访问的工作空间࿰…...
网站怎么做移动端适配/拼多多运营
我正在尝试在Windows上格式化json值,其中包括:json::value root;root["uid"] "uid";但是,当它试图释放时,应用程序崩溃了。[STACK]0:019:x86> kb# ChildEBP RetAddr Args to ChildWARNING: Stack unwind …...
网站建设服务商 需要什么主机/重庆森林电影
什么是跨域? 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源。 同源策略: 同源是指“协议域名端口”三者相同。 跨域解决方案: 1.通过jsonp跨域; 2.document.domainiframe跨域; 3.location.hashifram…...
wordpress环保公司主题/快速网站推广公司
JUC包学习所得 — 1.LOCK java.util.concurrent.locks.Lock 是一个类似于 synchronized 块的线程同步机制。但是 Lock 比 synchronized 块更加灵活、精细。 Java Lock 例子 Lock lock new ReentrantLock();try{lock.lock();//核心代码编写 }finally{lock.unlock(); } Lock接口…...
用dw个人网站怎么做/惠州疫情最新情况
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案ÿ…...
成都营销网站建设/如何做好网站站内优化
1.整型符号:int用处:用于计算和比较python3:全部都是整型python2:整型,长整型long123--十进制 转二进制方法:十进制数除2,取余数从下往上排;print(bin(十进制数))10101--二进制 转十进制方法&am…...
api网站模板/资源搜索引擎
在网上看了几篇AdaBoost的介绍后,感觉网上介绍的都不好,不能够让人完全理解,因此就下载了一个外国人写的代码,总算透彻的理解了AdaBoost,可以向Transfer开进了,现在分享一下代码:主函数代码[pla…...