2019-09-24动手写代码之前必须的准备工作

1.keil软件的介绍和安装

1.1、IDE概念

(1)IDE就是集成开发环境,就是一套用来开发的完整软件系统
(2)keil是美国keil Software出的51系列兼容单片机C语言软件开发系统。包括C编译器、宏汇编、链接器、库管理、仿真测试

1.2、keil uvision

(1)发展
(2)版本:1.2、1.3、1.4√(keil 4)、1.5
(3)安装包:https://pan.baidu.com/s/1shbyJBNnclmNoV3d-p0xNw 提取码:aosw

1.3、安装和破解

win7版本以上的系统要用管理员身份运行keil软件和注册机
破解:把注册机打开,在keil软件的文件,license management赋值CID到注册机上生成序列码在复制到keil软件。这种有注册机的破解方式是公司为了更多人使用这个软件而采取的一种方式。

1.4、keil和MDK

(1)本来只能用来开发51单片机,叫keil
(2)后来ARM公司受够了keil软件,基于keil扩展了ARM的开发,主要用来开发ARM Cortex-M系列的单片机的程序(STM32),软件名改成了MDK。
(3)上面keil 4的C51,只能用来开发51单片机程序。如果要开发ARM Cortex-M系列的单片机还要扩展安装MDK安装包。

2.keil的基本使用演示

2.1、使用keil打开已有工程项目

(1)IDE(keil)来开发软件,需要首先创建一个工程项目(project),keil软件需要一些工程项目文件来管理项目中的代码。
(2)别人事先创建好的工程项目,我们可以使用直接打开。打开的方式有2个:
①进入项目中双击(项目名.uvproj)项目文件打开
②keil软件→project→open project→找到要打开的uvproj。(后缀名uv开头的文件都是工程文件,软件自动生成)

2.2、编译工程

(1)工程项目中有很多文件,分3类:工程文件、源文件、目标文件
①工程文件:就是keil软件工作需要的文件,后缀名由uv开头,和我们写程序无关;
②源文件:我们写的源代码,就是我们变成编出来的;
③目标文件:就是keil中的编译器等工具把我们源文件编译后生成的文件,最终向单片机烧录时需要目标文件来烧录进去。
(2)我们工程刚创建好(空工程)时只有工程文件,此时我们要去编写添加源代码,代码写好后就有了工程文件和源文件,此时编译操作就可以得到目标文件。
(3)编译的时候可能会报错(errors)和报警告(warmings),报错则排除错误重新编译,警告则可以适当忽略。
(4)建议编译时按rebuild按钮。

2.3、keil中建立新工程

(1)建立新工程前建议先关闭之前的工程
(2)菜单栏:Project→new uVision Project,选择一个合适的目录用来保存将来的工程项目,并输入一个项目名。
(3)选CPU,选Atmel→AT89C51(无STC89C51)但兼容。点击OK,弹出来选择“是否添加标准的8051的起始代码”,选择是,确定。
(4)现在可以自己写代码,或者直接复制一个已经写好的代码文件进来,并且添加到我们的工程项目中(右键项目工程,add Source file),编译。
(5)编译完成后,发现一个问题:没有可以用来烧录的.hex文件。编译时生成的文件有很多,但是只有.hex文件是我们需要的,其他很多是中间文件。
(6)解决方案是再多配置一项配置,打开快速菜单栏中的“Target Options”,在弹出的多选框里,点击output菜单,点选下面的create HEX file,然后关闭菜单,重新rebuild。

3.C语言基本介绍

3.1、汇编语言与C语言

(1)汇编语言编程比C语言难
(2)用汇编或者C语言都能完成任务,写出程序
(3)推荐路线:先用C语言入门学会单片机,然后去扩展学习汇编。

3.2、标准C语言和keil C51的C语言

(1)C语言并不是专门为51单片机发明的,C语言的用途是很广的。
(2)标准C语言就是独立于各种应用领域称为标准C语言,和各种平台的具体的C语言有微小差异。

4.C语言基本概念

关键字、函数、变量、头文件、源文件、可执行程序、注释

5.整体流程梳理

5.1、程序开发过程

(1)源代码编写
(2)编译生成可执行程序
(3)烧录

5.2、单片机工作流程

(1)单片机上电
(2)时钟模块起振,CPu有了时钟节拍,单片机内部各模块开始工作
(3)CPU从ROM中逐条读取可执行程序指令来执行,RAM存储变量(对应C语言程序中定义的变量),配合程序执行。直到关机。

5.3、程序是调出来的(逻辑思维很重要)

(1)程序不可能一次写好达到要求
(2)先解决编译时错误
(3)在解决运行时问题

6.跟着数据手册学单片机

6.1、STC90C51介绍

(1)12T、6T和1T的问题:典型的51单片机都是12T的,12T的意思就是51单片机加内部会对外部时钟频率进行12分频后再给CPU(如果外部晶振是12MHZ,则外部时钟频率就是112MHZ,内部CPU主频就是12MHZ/12=1MHZ),6T的含义就是CPU时钟频率=外部时钟频率/6,1T的含义就是CPU时钟频率=外部时钟频率/1,。所以1T单片机是最快的。

6.2、STC90C51内部结构框图

(1)总线,单片机内部模块与模块之间的通信线
(2)模块,单片机内部各自独立具有一定功能的单元
(3)要求:能看到懂图例,知道图中分别表示的是什么。当我们对CPU内部元件模块理解很少的时候,其实从框图看不出什么。框图中实际上传达了很多信息,将来回顾的时候能看懂就行。

6.3、单片机管脚图

(1)DIP封装和SMD封装
(2)引脚编号和名字
每一个引脚都有个编号,这个编号主要看文档时文档里用来描述这个引脚的作用时做标记用的,跟编程是无关的。所以一般引脚编号并不重要。每一个引脚除了编号外还有名字,这个引脚的名字比较重要。(如p01、p02这些就是CPU延伸出来的引脚)因为这些引脚名字和我们将来在编程中控制这个引脚时的名字是一样的,所以引脚名字和编程有关。

6.4、关于仿真器和ISP

(1)仿真器。早期开发单片机软件时的辅助设备。早期的单片机很多只能烧录一次,或者不提供调试功能,软件开发难度很大。后来单片机厂商就专门发明了一个设备叫仿真器,仿真器能够仿真出单片机的效果,可以用来调试程序。所以那时候买了单片机之后还要买仿真器,用仿真器来开发,好了后烧录到单片机中运行。
(2)缺陷:
①一个仿真器对应1个单片机型号
②仿真器很贵
(3)因为仿真器很贵,所以有些公司开发出了软件仿真器,叫做软仿真。比如keil中就自带了软件仿真功能。
(4)后来仿真器被放弃了,升级成了调试器。调试器的思路是:程序开发还是在单片机中,只不过我们用一个专用的调试器可以在单片机中直接完成仿真。典型的调试器如Jlink调试器比仿真器来说更加便宜,所以是更好的解决办法。现在的单片机都支持调试器方案。
(5)有时候开发程序并不使用调试器进行单步调试,而是直接开发了程序后通过串口将程序下载到单片机中去运行,然后根据运行现象来直接判断定位问题,然后解决问题,最后完成程序软件开发。这种方式下不需要专用的硬件仿真器和调试器,有时候会配合使用软件仿真功能。还可以配合使用串口打印或者LED灯的指示等方式来进行调试。
(6)总结:3和4是我们现在开发软件的主流方法。相对来说,没经验的人更喜欢3(有经验的喜欢4);越往后(单片机到嵌入式到物联网)3用的越少,4用的越多。51单片机阶段软件仿真结合ISP下载方式来调试程序,STM32学习阶段是调试器和ISP下载两种方式结合,到了嵌入式阶段就又返回到4的方式,以后都不会再用Jlink等调试器了。

6.4、选型表浏览

6.5、单片机最小系统介绍

(1)单片机最小系统,就是指的单片机加上最少的外围电路,然后还可以工作。
(2)最小系统中有3部分电路:供电电路、上电复位电路、晶振电路。

6.6、管脚定义

(1)电源等管脚、单片机上面有一些管脚是用来支持单片机工作的,比如VCC和GND、RST等,这些引脚和编程无关,程序也无法操控这些引脚。这些引脚软件工程师不用管,硬件工程师很在意。
(2)IO端口。IO端口是单片机和外部电路进行交互的窗口,外部电路通过IO向单片机内部输入(input)信息,单片机通过IO端口向外部输出(output)信息。单片机中大部分的引脚都是IO(p开头的引脚都是IO),将来单片机内部的程序运行就会通过操作这些IO来和外部电路交互,从而实现程序目的。
(3)管脚复用。普通引脚时一个引脚只有一个名字,一种作用;有些引脚有2个名字(比如P3.0/RxD),这种引脚就有2中作用(意思不是说这个引脚同时做2件事情,而是说这个引脚在不同的时候可以工作在不同的2中模式下),可以通过软件编程让这个引脚在某个时候工作在某种模式下。一个引脚的2种模式之间没有关联,配置在A模式下则和B模式下一点关系都没有。为什么要管脚复用?纯粹是为了省引脚。

7.二进制和IO端口

7.1、二进制和bit位

7.2、位(bit,b)和字节(byte,B)

1字节 = 8位

7.3、初始IO

(1)什么是IO,单片机的IO物理上表现为单片机的引脚。
(2)IO对单片机的重要意义。
(3)单片机有多少IO。
(4)IO的组织形式。首先一个单片机的众多IO分为多个端口(port),一个端口由若干个IO引脚(很多时候都是8个)组成。可以理解为一个端口就是一组IO引脚。
(5)如何编程控制IO。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,192评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,186评论 1 303
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,844评论 0 252
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,471评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,876评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,891评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,068评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,791评论 0 205
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,539评论 1 249
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,772评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,250评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,577评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,244评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,146评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,949评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,995评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,812评论 2 276

推荐阅读更多精彩内容

  • 生活的选择多种多样,在我看来,开心就好。可以在闲余时间里,烹一份美味,享受自己的劳动果实,养一条可爱的大狗,像照顾...
    你喜欢Eric吗阅读 252评论 0 1
  • 文/鱼儿君 01 这是一趟开往海城的动车。 陈诺坐在靠窗的位置,看窗外飞过的风景,思绪缥缈。 她打开自己的博客,更...
    鱼儿君阅读 653评论 4 24
  • 有些书是子子孙孙要读的,有些书是百年前出版,百年后还要出版。 反复读,就象老牛反刍一样。读了之后,践行它。读了之后...
    兜兜娘lwj阅读 468评论 1 2
  • 桃色凋零春梦浅,箫风空谷散枝遥。 青烟吹皱一池暖,戏雨闲鸥绕涧桥。 ——雨霖磐石
    雨霖磐石阅读 366评论 18 10