typora和C51开发环境

经过查阅,可以用wiz和typora联动的方式记录笔记,这样一个文件夹里既可以用typora也可以用内置编辑器(一种富文本编辑器),注意同一个文件不能用不同的编辑器,否则会错乱。以下,我列举了用typora的几点原因:

  • 我经常用typora记一些需要给别人看的,也就是说在别人电脑上显示时排版和自己编辑时一样的文档,他里面的大纲能自动生成,方便别人阅读,排版看着确实比较舒服。比如我经常用来用typora来记录一些论文文献信息(大纲比较多,用typora比较方便)。

  • 同时,我也经常用typora记一些需要用到latex公式的地方,否则用wiz的内置编辑器时,只能保存公式的图片,不方便下次拷贝公式,用这种方式排版也比较好看,比如:

    • 行公式:eiπ+1=0e^{i\pi}+1=0e+1=0

    • 行间公式(可以设置自动编号):

    • eiπ+1=0e^{i\pi}+1=0 e+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
语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

  1. 打开KEIL_C51_952文件夹
  2. 双击运行c51v952.exe,进入安装
  3. 安装在D:/Program Files(x86)/keil文件夹中
  4. 完成安装后去掉勾选,桌面上生成Keil 4

Keil 破解

  1. 以管理员身份运行Keil 4
  2. 点击进入:File / License Mangement
  3. 拷贝CID
  4. 打开注册机文件 / 以管理员身份运行KEIL_Lic.exe,粘贴CID,点击Generate,复制License
  5. 回到第2步界面,粘贴,点击Add LIC

建立第一个C51 project

我的项目管理思路

  1. 将所有51项目按照习惯放在固定的代码位置,比如说我将未来所有新建的项目文件夹,放在了F:/51project/ 文件夹中。今后,每做一个项目,我们都在上述文件夹中新建对应的项目文件夹。
  2. 为了方便管理项目和梳理头绪,每建立一个项目文件夹后,我们对应的就在wiz中建立一个与之对应的文件夹。
  3. 有时候,每个项目文件夹下面可能还有子项目文件夹,类似于程序中的子函数(子功能),我们在wiz中新建与之对应的文档(.md文件或者.ziw文件),方便管理。其中包括的内容不限于:项目建立的流程、项目代码详解、项目文件夹的路径,方便后期查看和修改。

第一个Keil项目工程(项目地址)

  1. 创建项目工程文件夹,就叫做Template:按照习惯放在固定的磁盘位置,比如说我放在了F:/51project/Template 文件夹中。

  2. 在文件夹Template 中创建文件(可以使用Vscode或者手动在文件夹中创建),取名main.c (要打开拓展名,在文件夹窗口上找 “查看”,勾选“文件拓展名”)

  3. 用Keil在项目文件夹中新建工程:进入keil主页面,工具栏 / project / new uVision project / 进入第1步的工程文件夹位置(Template) / 输入工程名字(英文,不加扩展名,比如moban) / 点击保存

  4. 选择适合的目标芯片创建工程目录:第3步结束后,Keil会弹出芯片选择的页面(Keil能开发各种系列的芯片,比如C51、C52、32等等)。对于STC公司的51单片机来说,我们在该页面选择:Atmel / 选择硬件架构:AT89c52或者AT89c51。点击OK后会提示是否拷贝"STARTUP.A51"(启动代码的意思)到项目文件夹中,我们选择是,随后就生成了工程目录

    1. 启动代码的含义:单片机上电后会执行一段汇编语言,我们可以不用自己写

  5. 给工程目录添加第2步新建的main.c文件:在工程目录Source Group1上右键鼠标 / add Exiting file to Source Group1… / 选择第2步建立的代码文件main.c / Add

  6. 工程创建完毕,开始写代码:在Keil界面双击main.c,可以直接在Keil中写或者在其他代码编辑器中编写代码。

编辑和编译

  1. 编程,举例:(如果是在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);
    }
    
  2. 编译:如下图,Keil中点击Target Options / Output / 选择输出文件有hex,即勾选Create HEX File。布置完成后,点击Build,但是最好点击Rebuild

    1. 原因:C语言属于高级语言,而单片机只认识序列化的2进制,它只认识HEX文件。这与我们在电脑上写代码编辑后需要编译生成二进制文件是一个道理。

    2. image-20230412234401938
    3. image-20230412234908414<

  3. 编译结束后会生成各种文件:

    1. main.c:程序编辑位置
    2. moban.hex:将来烧录到单片机中的可执行的二进制文件
    3. moban.uvproj:工程文件,双击它后,能够自动在Keil中打开并加载整个工程(即工程文件夹Template中的所有文件)
      4. image-20230412235534476

总结(建立Keil工程的要点)

  • Keil前完成:
    • 项目文件夹:Template
    • main.c:先在项目文件夹中新建,再添加到工程目录中
  • Keil中完成:
    • 工程文件moban.uvproj:在项目文件夹中
    • 建立工程目录:新建工程后自动提示你去选芯片
    • moban.hex:在项目文件夹中,编译Rebuld后生成,最后我们要用烧录工具给这个hex文件下载到单片机中

用Vscode开发的方法(推荐用VScode编辑后拷贝到Keil中)

原因:在我们用vscode写51代码时,发现51单片机的头文件无法被vscode识别

引用自CSDN的YY博客这位博主

  1. 为Vscode安装Embedded IDE扩展
  2. 点击进入EIDE扩展,点击设置工具链
  3. 点击Keil C51(cx51)(ide path)
  4. 接下来选择自己当初Keil安装目录下的UV4文件夹中的UV4.exe文件
  5. 点击进入EIDE扩展,点击新建项目 / 空项目 / 8位MCU项目 按下回车键,跟着提示走,会要求你建立一个项目文件夹,然后就会在资源管理器中生成一个工作区
  6. 再次点击进入EIDE扩展,会发现多了一个EIDE项目,点击构建配置: SDCC右侧的转换按钮(切换编译器) / 选择Keil C51 Compiler Keil_C51,完成编译器的修改
  7. 在项目资源下新建一个名为src的普通文件夹
  8. 在项目属性下,将src文件夹添加到包含目录里面
  9. 最后,在src文件夹中新建一个main.c文件,开始代码编写,此时就不会出现无法识别51单片机头文件的问题。
  10. 右上角的构建按钮就是Keil中的Rebuild按钮,用来将C程序编译成HEX文件(用不到)

存在的问题:不会报错了???

查看全文

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章:

image-20230412235534476

typora和C51开发环境

经过查阅,可以用wiz和typora联动的方式记录笔记,这样一个文件夹里既可以用typora也可以用内置编辑器(一种富文本编辑器),注意同一个文件不能用不同的编辑器,否则会错乱。以下,我列举了用typora的……

/usr/bin/env: ‘node\r’: No such file or directory解决办法

CRLF / LF 分别是 Window 和 Unix 系统采用的 End Of Line(EOF) 换行符。 Linux文件下载到Windows后,又上传到Linux服务器运行很容易报这个错,整了俩小时没找到到底哪个node包出错了。
解决办法:直接从git仓库down到Linux服务器上。…

vim 一键配置

PS:本文是为了以后为了方便,做备忘的,今天用的时候找了半天很麻烦。 vim编辑器一键配置 在非root用户下执行上面的语句即可,不要在root用户下直接安装! 安装的时候需要输入root用户的密码,请找您的服主要一……

LeetCode 189.轮转数组

文章目录💡题目分析💡解题思路🚩思路1:暴力求解 — 旋转k次🔔接口源码:🚩思路2:额外开数组🔔接口源码:🚩思路3:三段逆置📍算法设计🔔接口源码&am……

《Web前端应用开发》考试试卷(模拟题)

一、产品搜索页面 打开“考试文件夹”中的input.html,完成以下步骤: 注意:本题仅能在input.html的(1)为产品名称所在的div添加样式属性,使得产品名称保持在文本框的左边; (2&#xf……

Qt第六十二章:图标库QtAwesome的使用

目录
一、安装依赖
二、主页
三、文档
四、案例
1、图标
2、样式
3、alpha 通道
4、 多图标堆叠
5、动画
6、字体
五、系列
1、msc系列
2、fa5系列(选择free栏)
3、fa5s系列(选择free栏)
4、fa5b系列(选……

【eMMC学习记录】emmc相关名词解释和基础概念

名词解释
NAND Flash:半导体闪存
HDD:机械硬盘
FW:固件
Peak Power:峰值功率
Active Power:读写功耗
Idle Power:空闲功耗
standby/sleep Power Dev Sleep Power:SSD内部休眠功耗
RAM:掉电丢失数据
FGT:浮栅晶体管
FormFactor:尺寸标准件
AFA:全闪存整列……

构造器设计模式

在类中定义一个静态内部类,在这个静态内部类中定义和外部类一样的属性并提供返回内部类的一些列方法,通过这些方法给属性赋值,在内部类的构造函数中还可以同时赋属性的默认值,最后通过内部类的 build 方法将内部对象传递给外部类的……

Unix、UTC、GPS时间戳及转换

UTC时间 UTC时间的英文全称:Universal Time Coordinated,中文名称:协调世界时。俗的理解为,这个时间是全世界通用的,即全世界都公用的一个时间。可以认为格林威治时间就是时间协调时间(GMTUTC)&……

如何在 DevOps 中进行 API 全生命周期管理?

随着 DevOps 理念在中国企业当中的普及和发展,中国企业 DevOps 落地成熟度不断提升,根据中国信通院的数据已有近 6 成企业向全生命周期管理迈进。
而在研发全生命周期管理之中,API 管理的地位愈发显得重要。随着 API 数量的大幅增长&#xf……

Pandas入门实践2 -数据处理

为了准备数据进行分析,我们需要执行数据处理。在本节中,我们将学习如何清理和重新格式化数据(例如,重命名列和修复数据类型不匹配)、对其进行重构/整形,以及对其进行丰富(例如,离散化……

一、lua基础知识1

一、lua 的数据类型
–类型 a1; –number print(type(a)) –number b"HelloWorld"; print(type(b)) –string 两种数据类型 ctrue; print(type(c)) –boolean true 或者 false d print; d("HelloWorld"); print(type(d)); –function类型 ……

二、lua语言基础2

1.lua的类型有哪些?答:lua的数据类型有:number,string,nil function,table,thread,userdata(用户自定义的类型),boolean(布尔类型) 2.什么是尾调用,尾调用有什么优点尾调用:在一个函数的最后一步开始调用另……

quick-cocos2dx-luaUI控件讲解

–MyApp部分 require("config") require("cocos.init") require("framework.init") local MyApp class("MyApp", cc.mvc.AppBase) function MyApp:ctor() MyApp.super.ctor(self) end function MyApp:run() cc.FileUti……

quick-cocos2dx lua语言讲解 (动作,定时器,触摸事件,工程的类的讲解)

–MainScene部分
— display.newScene 创建一个场景 — 在quick里面我们的控件、精灵 一般是加载到场景上的 local MainScene class("MainScene", function() return display.newScene("MainScene") end) function MainScene:ctor() –创……

使用quick-cocos2dx-lua 实现的小游戏(包含碰撞检测,触屏发子弹)

–主界面local MainScene class("MainScene", function()return display.newScene("MainScene")end)ON true;function MainScene:ctor()local bg cc.Sprite:create("main_background.png");bg:setScale(2);bg:setPosition(display.cx,display……

cocos2d-js 中scrollview详解

/****
开头的一些废话:
1、多思考,善于思考
2、懂得变通
3、多多查询API首先复制一段 API中的源码:(UIScrollView.js)这段代码可以看出 scrollview
中的容器是一个node,并且他的位置是:代码最后……

cocos2d-js中的回调函数中世界坐标系和节点坐标系的相互转换

世界坐标系和节点坐标系都是OPENGL 坐标系 1、世界坐标系原点就是屏幕的左下角; 2、节点坐标系的原点就是一个节点的左下角; 3、两个坐标系可以通过已经写好的cocosAPI进行想换转换; 4、所有的节点需要转为一个节点上或者是统一的世界坐标系……

通过JavaScript实现漂浮

<html>
<head><meta http-equiv"Content-Type" content"text/html"; charset"gb2312" /><title>漂浮广告</title><style type"text/css">div{position:absolute;}</style>
</head>
&……

序列动画和图片内存问题

一、帧动画问题 /*** 帧动画总结:* 1、如果精灵进行新建时,加载了纹理,那么setRestoreOriginalFrame可以设置为false或者true* 2、如果精灵新建时,没有加载纹理的话,那么setRestoreOriginalFrame需要设置为false&#……

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注