typora和C51开发环境
经过查阅,可以用wiz和typora联动的方式记录笔记,这样一个文件夹里既可以用typora也可以用内置编辑器(一种富文本编辑器),注意同一个文件不能用不同的编辑器,否则会错乱。以下,我列举了用typora的几点原因:
-
我经常用typora记一些需要给别人看的,也就是说在别人电脑上显示时排版和自己编辑时一样的文档,他里面的大纲能自动生成,方便别人阅读,排版看着确实比较舒服。比如我经常用来用typora来记录一些论文文献信息(大纲比较多,用typora比较方便)。
-
同时,我也经常用typora记一些需要用到latex公式的地方,否则用wiz的内置编辑器时,只能保存公式的图片,不方便下次拷贝公式,用这种方式排版也比较好看,比如:
-
行公式:eiπ+1=0e^{i\pi}+1=0eiπ+1=0
-
行间公式(可以设置自动编号):
-
eiπ+1=0e^{i\pi}+1=0 eiπ+1=0
-
-
另外,我可以用typora实现类上面这种引用功能,这会让文档看上去的渲染效果更好一点。
-
其余的功能,比如加粗、斜体、高亮、下标H2O、上标28、
删除线,他们的用处相对于wiz的内置编辑器没有突出优点。
当然,typora很大程度上也比不上wiz的内置编辑器,我列举了几种不得不使用wiz内置编辑器的情况:
- 我不知道typora如何让文本居中显示,所以有时候插入图片就很鸡肋,而且不能随意拖动鼠标修改图片大小。typora中单张图片独居一行时是可以自动居中的,多张图片并列一行时,默认是居左显示的。如果希望多张图片并列居中,那么就需要给它们俩打上css标签,如下:
<center class="half"> //居中时,你要添加的条件<img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1ggnfolw5kxj30u00u0qe5.jpg" width="300"/><img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1ggnfolw5kxj30u00u0qe5.jpg" width="300"/>
</center> //居中时,你要添加的条件
- typora的代码块功能背景色不能调节,白花花的一片,高亮显示少得可怜(只有行代码可以用
这种方式
来显示),但是轻量级的使用还是可以的。此外,typora渲染实际上就是用css来实现的,所以你不嫌麻烦的话可以去网上下载css文件,然后在typora的偏好设置中添加主题(打开主题文件夹),来渲染代码高亮。
#include "reg52.h"
sbit led1 = P3^7;
sbit led2 = P3^6;
void main()
{led1 = 0;led2 = 0;while(1);
}
- typora的表格功能也十分鸡肋,完全比不上word或者wiz内置编辑器,而且表格中不能插入图片。不能设置单元格单独的对齐方式,只能将其整列用一个对齐方式。但是我们用来记一些不复杂的内容也足够用了。
表头 | 表头 | 表头 |
---|---|---|
单元格左对齐 | 单元格右对齐 | 单元格居中对齐 |
对齐 | 对齐 | 对齐 |
- typora没法调整字体大小,没法调整字体颜色,没法调整字体背景色。
关于链接和书签(很有用):超链接可以链接到本文档中的书签、标题、本地的文件夹、本地的其他文件、本地的软件、互联网上的网址等等,建立完毕后,在指定位置只要按住ctrl并点击这个链接,就能自动跳转到本地书签所在位置、标题所在位置、打开本地文件夹窗口、打开本地其他文件、打开本地软件、通过浏览器打开互联网网页等等。
-
对于word来说,建立超链接和书签十分简单:
- 新建超链接:选中word中某段话,然后只需要ctrl + K即可,接着按照提示建立超链接,即可
- 给本地文档的某段话打上书签也十分简单,只需要选择这段话后,在工具栏 / 插入 / 点击链接一栏中的书签,即可
- 超链接是绝对地址的好处:word建立超链接后,假设你不考虑把这个word文档打包到新的电脑,那么你在这台电脑上随意怎么移动文档的位置,由于超链接是绝对地址,那么这个超链接是一直有效的(前提是你不把被链接的文件移到别的路径中去)。
- 超链接是绝对地址存在的问题:
- 问题1:word建立超链接后,如果你被链接的文件夹的位置需要改变,也就是将其移动到别的路径中去,那么很显然,你在word中的链接肯定会失效,会显示“无法打开指定的文件”。
- 问题2:word建立超链接后,如果你需要考虑这篇文档是否要在别的电脑上使用,以超链接打开本地文件夹窗口为例,如果你的文档需要在别的电脑上使用,那么你极有可能是无法通过超链接打开这个文件夹的,原因有两点:1、你的文件夹并没有和word文档一起被打包到新的电脑,2、你的文件夹即使和文档一同打包到新的电脑,但是文档中那个超链接的地址(绝对地址)在新电脑中没法识别。
- 上述问题的解决方法:
- 问题1的解决方法:将被链接文件夹和word文档一同放在同一个目录(这个目录只要求包括这两个文件),然后将这个目录一起移动到别的路径,也就是说保证被链接文件夹和word的相对路径没有改变。
- 问题2的解决方法:将被链接文件夹和word文档一同放在同一个目录(这个目录只要求包括这两个文件),然后将这个目录一起打包到新的电脑中去,也就是说保证被链接文件夹和word的相对路径没有改变。
- 上述问题解决方法背后的原理(适用于所有东西,word、wiz、typora):有些人在插入完毕超链接后,鼠标悬停在上面查看路径,肯定有疑问:怎么都是绝对路径的,我该怎么设置相对路径呢?答案是:不需要你设置相对路径,你只要按照上面的方法移动被链接文件和word文档,那么它们的相对路径总是不变的,反应出来就是当你移动这个目录后,重新打开word文档,word中超链接的绝对地址会被自动修改。当然前提是你移动文件时保证两者相对路径不变,如果改变,移动后重新打开word文档,里面的超链接地址不会被改变的,也就是超链接失效了。
-
对于wiz来说,我们在编辑富文本文档时,因为我们在wiz中出现的所有文档都在同一个文件夹中,于是我们只要下载了云笔记,原先所有的文件都会被下载下来,所以我们不管是在自己的电脑上还是其他电脑上,只要我们在给一片文档中给某块内容打上书签,其他文档都可以通过这个超链接直接定位到指定文档,或指定文档中的书签。
-
对于typora来说:
-
超链接的建立比较简单,我们通常用
[自定义链接介绍](链接的绝对路径)
来实现跳转(实际上用到了css的a标签的href属性)。注意事项1:绝对路径中的盘符必须是大写字母,否则识别出错 注意事项2: typora中对本地文件夹的超链接的绝对路径与word不太相同,对于本地文件: F:\51priject\Template 来说,word中的超链接绝对路径是: file:///f:\51project\Template 但是在typora中你必须写成:F:\51project\Template 注意事项3: typora中其实是可以设置相对路径的,比如.\或者..\ 但是推荐用绝对路径 注意事项4: 斜杠/和反斜杠\可以通用,不会出错 举例: [项目位置](F:\51project\Template)
-
书签的建立比较麻烦,需要用css的a标签中的id属性来完成,首先设置跳转位置的书签
<a id="idName">被打书签的一段文字</a>
,完事之后,在文档别的位置对其进行引用,引用的方式其实就是超链接:[引用书签的一段文字](#idName)
举例:### 定性实验 <a id="label1">实验结果表1</a> 假设此处有个表格 ### 定量实验 在[实验结果表1](#label1)中,我们发现...
-
针对typora中插入的图片是绝对路径,不方便在别的地方展示的问题:我引用了CSDN博主丶Done的博客
- 思路是将图片文件转化为网页照片即可,那么它的链接就不是本地的了
- 方法是使用码云(gitee),将本地的图片上传到码云仓库里的Issue中,插入图片后,复制后面的图片的网页链接,最后将这个网页链接复制回到typora替换掉原先的图片的src属性即可。
- 其实这种方法对于typora和wiz联动使用的情况比较友好,因为wiz好像没法显示本地图片(不知道为什么)
开发环境安装
Keil安装
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C
语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
- 打开KEIL_C51_952文件夹
- 双击运行c51v952.exe,进入安装
- 安装在D:/Program Files(x86)/keil文件夹中
- 完成安装后去掉勾选,桌面上生成Keil 4
Keil 破解
- 以管理员身份运行Keil 4
- 点击进入:File / License Mangement
- 拷贝CID
- 打开注册机文件 / 以管理员身份运行KEIL_Lic.exe,粘贴CID,点击Generate,复制License
- 回到第2步界面,粘贴,点击Add LIC
建立第一个C51 project
我的项目管理思路
- 将所有51项目按照习惯放在固定的代码位置,比如说我将未来所有新建的项目文件夹,放在了F:/51project/ 文件夹中。今后,每做一个项目,我们都在上述文件夹中新建对应的项目文件夹。
- 为了方便管理项目和梳理头绪,每建立一个项目文件夹后,我们对应的就在wiz中建立一个与之对应的文件夹。
- 有时候,每个项目文件夹下面可能还有子项目文件夹,类似于程序中的子函数(子功能),我们在wiz中新建与之对应的文档(.md文件或者.ziw文件),方便管理。其中包括的内容不限于:项目建立的流程、项目代码详解、项目文件夹的路径,方便后期查看和修改。

第一个Keil项目工程(项目地址)
-
创建项目工程文件夹,就叫做Template:按照习惯放在固定的磁盘位置,比如说我放在了F:/51project/Template 文件夹中。
-
在文件夹Template 中创建文件(可以使用Vscode或者手动在文件夹中创建),取名main.c (要打开拓展名,在文件夹窗口上找 “查看”,勾选“文件拓展名”)
-
用Keil在项目文件夹中新建工程:进入keil主页面,工具栏 / project / new uVision project / 进入第1步的工程文件夹位置(Template) / 输入工程名字(英文,不加扩展名,比如moban) / 点击保存
-
选择适合的目标芯片创建工程目录:第3步结束后,Keil会弹出芯片选择的页面(Keil能开发各种系列的芯片,比如C51、C52、32等等)。对于STC公司的51单片机来说,我们在该页面选择:Atmel / 选择硬件架构:AT89c52或者AT89c51。点击OK后会提示是否拷贝"STARTUP.A51"(启动代码的意思)到项目文件夹中,我们选择是,随后就生成了工程目录
-
启动代码的含义:单片机上电后会执行一段汇编语言,我们可以不用自己写
-
-
-
给工程目录添加第2步新建的main.c文件:在工程目录Source Group1上右键鼠标 / add Exiting file to Source Group1… / 选择第2步建立的代码文件main.c / Add
-
-
工程创建完毕,开始写代码:在Keil界面双击main.c,可以直接在Keil中写或者在其他代码编辑器中编写代码。
编辑和编译
-
编程,举例:(如果是在Vscode中编写,不需要重新选择编码模式,二者通用是UTF-8)
#include "reg52.h" sbit led1 = P3^7;//根据原理图(电路图),设备变量led1指向P3组IO口的第7口 sbit led2 = P3^6;//根据原理图(电路图),设备变量led2指向P3组IO口的第6口 void main() {led1 = 0;//根据电路图,低电平点亮ledled2 = 0;while(1); }
-
编译:如下图,Keil中点击Target Options / Output / 选择输出文件有hex,即勾选Create HEX File。布置完成后,点击Build,但是最好点击Rebuild。
-
原因:C语言属于高级语言,而单片机只认识序列化的2进制,它只认识HEX文件。这与我们在电脑上写代码编辑后需要编译生成二进制文件是一个道理。
-
-
<
-
-
编译结束后会生成各种文件:
- main.c:程序编辑位置
- moban.hex:将来烧录到单片机中的可执行的二进制文件
- moban.uvproj:工程文件,双击它后,能够自动在Keil中打开并加载整个工程(即工程文件夹Template中的所有文件)
4.
总结(建立Keil工程的要点)
- Keil前完成:
- 项目文件夹:Template
- main.c:先在项目文件夹中新建,再添加到工程目录中
- Keil中完成:
- 工程文件moban.uvproj:在项目文件夹中
- 建立工程目录:新建工程后自动提示你去选芯片
- moban.hex:在项目文件夹中,编译Rebuld后生成,最后我们要用烧录工具给这个hex文件下载到单片机中
用Vscode开发的方法(推荐用VScode编辑后拷贝到Keil中)
原因:在我们用vscode写51代码时,发现51单片机的头文件无法被vscode识别
引用自CSDN的YY博客这位博主
- 为Vscode安装Embedded IDE扩展
- 点击进入EIDE扩展,点击设置工具链
- 点击Keil C51(cx51)(ide path)
- 接下来选择自己当初Keil安装目录下的UV4文件夹中的UV4.exe文件
- 点击进入EIDE扩展,点击新建项目 / 空项目 / 8位MCU项目 按下回车键,跟着提示走,会要求你建立一个项目文件夹,然后就会在资源管理器中生成一个工作区
- 再次点击进入EIDE扩展,会发现多了一个EIDE项目,点击构建配置: SDCC右侧的转换按钮(切换编译器) / 选择Keil C51 Compiler Keil_C51,完成编译器的修改
- 在项目资源下新建一个名为src的普通文件夹
- 在项目属性下,将src文件夹添加到包含目录里面
- 最后,在src文件夹中新建一个main.c文件,开始代码编写,此时就不会出现无法识别51单片机头文件的问题。
- 右上角的构建按钮就是Keil中的Rebuild按钮,用来将C程序编译成HEX文件(用不到)
存在的问题:不会报错了???
相关文章:

typora和C51开发环境
经过查阅,可以用wiz和typora联动的方式记录笔记,这样一个文件夹里既可以用typora也可以用内置编辑器(一种富文本编辑器),注意同一个文件不能用不同的编辑器,否则会错乱。以下,我列举了用typora的…...
linux echo彩色打印
定义了三个颜色 把打印的内容加载头和尾巴之间即可 pt_head_green"\033[32;1m" pt_head_red"\033[31;1m" pt_head_yellow"\033[33;1m" pt_tail"\033[0m"echo "$pt_head_yellow | make clean |$pt_tail"...

2023年4月PMP®项目管理专业人士认证招生简章
PMP认证是Project Management Institute在全球范围内推出的针对评价个人项目管理知识能力的资格认证体系。国内众多企业已把PMP认证定为项目经理人必须取得的重要资质。 【PMP认证收益】 1、能力的提升(领导力,执行力,创新能力,竞…...

Java每日一练(20230410)
目录 1. 二叉树的锯齿形层序遍历 🌟🌟 2. 从中序与后序遍历序列构造二叉树 🌟🌟 3. 平衡二叉树 🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专…...

主动配电网故障恢复的重构与孤岛划分统一模型研究【升级版本】(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
TS2023年面试题汇总~~~~持续更新中!!!!
文章目录一、typescript 的数据类型有哪些二、TypeScript 中枚举类型的理解三、TypeScript 中接口的理解四, TypeScript 中类的理解五,TypeScript 中泛型的理解?六,TypeScript 中高级类型的理解?六,TypeScr…...

CSS模块的书写以及删除线的作用和来历什么是删除线
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>/*关羽这一行代码变为绿色*/#gy_li{color: green}/*张飞,苹果这一行代码变为黄色*/#zf_li,#pg_ul{color: yellow}/*i…...
Libhevc介绍
随着高清电视的普及和4K、8K超高清电视的出现,视频编解码技术也得到了广泛应用和发展。H.265/HEVC (High Efficiency Video Coding) 编解码标准作为一种新一代的视频编码技术,具有更高的压缩率和更好的画面质量,已经被成为未来视频编码的趋势…...
基于Tensorflow的最基本GAN网络模型
import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers import matplotlib.pyplot as plt %matplotlib inline import numpy as np import glob import os #(1)创建输入管道 # 导入原始数据 (train_images, train…...
数据质量管理概述
1、数据质量的概念 指的是在组织业务,管理要求下,符合数据使用者满足业务,管理需求的评价方式 2、数据质量管理的概念 3、4种常见低质量数据情况 1)重要数据缺失 有些信息暂时无法获取或者获取代价太大信息在采集输入中遗漏属…...
C++ const、volatile和mutable关键字详解
对于cv(const 与 volatile)类型限定符和关键字mutable在《cppreference》中的定义为: cv可出现于任何类型说明符中,以指定被声明对象或被命名类型的常量性(constness)或易变性(volatility&#…...

MySQL实验四:数据更新
MySQL实验四:数据更新 目录MySQL实验四:数据更新导读表结构sql建表语句模型图1、 SQL更新:将所有学生的年龄增加1岁代码2、SQL更新:修改“高等数学”课程倒数三名成绩,在原来分数上减5分代码解析3、SQl更新:…...

商汤科技推出“日日新SenseNova”,大模型体系赋能人工智能新未来
2023年4月10日,商汤科技SenseTime技术交流日活动在上海举行,分享了以“大模型大算力”推进AGI(通用人工智能)发展的战略布局,并公布了商汤在该战略下的“日日新SenseNova”大模型体系。 公开信息显示,商汤科…...

【中创AI】斯坦福人工智能年度报告:AI论文发表量中国世界第一!
斯坦福以人为本人工智能研究所 (HAI) 发布了最新一期的 2023 AI 指数 (2023 AI Index) 报告,探讨了过去一年机器学习的发展。 (斯坦福HAI于2019年初成立,致力于研究新的AI方法,并研究该技术对社会的影响。其每年发布一份AI指数报…...

Java基础(五)面向对象编程(基础)
学习面向对象内容的三条主线 Java类及类的成员:(重点)属性、方法、构造器;(熟悉)代码块、内部类面向对象的特征:封装、继承、多态、(抽象)其他关键字的使用:…...

寻找CSDN平行世界的另一个你
本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 寻找CSDN平行世界的另一个你摘要前言列表测试目的摘要 本文作了一个测试,看看在 CSDN 的博文中,艾特()某个好友,TA是否能够…...

ChatGPT的发展对客户支持能提供什么帮助?
多数组织认为客户服务是一种开销,实际上还可以将客户服务看成是一种机会。它可以让你在销售后继续推动客户的价值。成功的企业深知,客户服务不仅可以留住客户,还可以增加企业收入。客户服务是被低估的手段,它可以通过推荐、见证和…...

数据安全评估体系建设
数据安全评估是指对重要数据、个人信息等数据资产的价值与权益、合规性、威胁、脆弱性、防护等进行分析和判断,以评估数据安全事件发生的概率和可能造成的损失,并采取相应的措施和建议。 数据安全评估的重要性和背景 1.国家法律法规下的合规需要 目前数…...

论文阅读 - ANEMONE: Graph Anomaly Detection with Multi-Scale Contrastive Learning
目录 摘要 1 简介 2 问题陈述 3 PROPOSED ANEMONE FRAMEWORK 3.1 多尺度对比学习模型 3.1.1 增强的自我网络生成 3.1.2 补丁级对比网络 3.1.3 上下文级对比网络 3.1.4 联合训练 3.2 统计异常估计器 4 EXPERIMENTS 4.1 Experimental Setup 4.1.1 Datasets 4.1.2 …...

数据密集型应用存储与检索设计
本文内容翻译自《数据密集型应用系统设计》,豆瓣评分高达 9.7 分。 什么是「数据密集型应用系统」? 当数据(数据量、数据复杂度、数据变化速度)是一个应用的主要挑战,那么可以把这个应用称为数据密集型的。与之相对的是…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...