编程入门基础知识(编程入门必备知识)

本文目录
- 编程入门必备知识
- 学习单片机要有哪些基础知识
- 初学编程怎么开始
- 关于51单片机编程保护现场的基础知识问题
- 谁能教教我怎么学单片机,先学什么,怎么入门
- 单片机学习经验分享
- 单片机是什么有什么用途学习它需要哪些基础知识
- 单片机入门指南
- 编程初学者要学习哪些基本的知识才算入门
- 入门编程学习需要了解什么
编程入门必备知识
编程入门必备知识包括程序设计基础、编程语言、编程实践等。
1、程序设计基础
编程首先需要具备基本的程序设计知识,包括程序的结构、变量、数据类型、算法和程序控制流程等。对于初学者来说,了解基本的程序设计概念和语法是必不可少的。
2、编程语言
学习编程需要选择一种编程语言作为基础,如Python、Java、C++等。选择一种适合自己的编程语言非常重要,可以通过了解各种编程语言的特点、用途和难度来做出决策。学习编程语言需要掌握语言的基础语法、变量、函数、控制结构、数据类型、输入输出等基本知识。
3、编程实践
学习编程需要进行实践,通过编写小程序、小项目来巩固所学知识,提高编程技能。编程实践可以帮助初学者理解程序设计概念,掌握编程语言,积累编程经验,发现和解决实际问题,提高程序的质量和效率。在实践中,需要注重调试和测试程序,发现和修复错误,提高程序的可靠性和稳定性。
学习编程的好处:
1、提高解决问题的能力
编程可以帮助我们提高解决问题的能力,这是因为在编程中,我们需要学会分析问题、设计解决方案和实施解决方案。通过编程,可以学习到如何将一个问题分解为更小的子问题,如何使用算法和逻辑来解决问题,以及如何通过编程实现解决方案。
2、增强逻辑思维能力
编程需要逻辑思维和创造性思维,这可以帮助我们增强这些能力。在编程中,我们需要学习如何将问题抽象化,如何设计和实现算法,以及如何处理数据和信息。这些过程可以帮助我们增强逻辑思维能力,提高创造性和创新能力。
3、提高就业竞争力
学习编程可以帮助我们提高就业竞争力。在当今社会,科技发展日新月异,很多行业都需要掌握编程技能的人才。学会编程可以在找工作时更加有竞争力,因为可以胜任很多需要编程技能的工作。
学习单片机要有哪些基础知识
单片机基础知识
飞翔电子技术 2003-11-04
单片机的组成
单片机要自动完成计算,它应该具有哪些最重要的部分呢?
我们以打算盘为例计算一道算术题。例:36+163×156-166÷34。现在要进行运算,首先需要一把算盘,其次是纸和笔。我们把要计算的问题记录下来,然后第一步先算163×156,把它与36相加的结果记在纸上,然后计算166÷34,再把它从上一次结果中减去,就得到最后的结果。
现在,我们用单片机来完成上述过程,显然,它首先要有代替算盘进行运算的部件,这就是“运算器”;其次,要有能起到纸和笔作用的器件,即能记忆原始题目、原始数据和中间结果,还要记住使单片机能自动进行虚胡袭运算而编制的各种命令。这类器件就称为“存贮器”。此外,还需要有能代替人作用的控制器,它能根据事先给定的命令发出各种控制信号,使整个计算过程能一步步地进行。但是光有这三部分还不够,原始的数据与命令要输入,计算的结果要输出,都需要按先后顺序进行,有时还需等待。
如上例中,当在计算163×156时,数字36就不能同时进入运算器。因此就需要在单片机上设置按控制器的命令进行动作的“门”,当运算器需要时,就让新数据进入。或者,当运算器得到最后结果时,再将此结果输出,而中间结果不能随便“溜出”单片机。这种对输入、输出数据进行一定管理的“门”电路在单片机中称为“口”(Port)。在单片机中,基本上有三类信息在流动,一类是数据,即各种原始数据(如上例中的36、163等)、中间结果(如166÷34所得的商4、余数30等)、程序(命令的集合)等。这样要由外部设备通过“口”进入单片机,再存放在存贮器中,在运算处理过程中,数据从存贮器读入运算器进行运算,运算的中间结果要存入存贮器中,或最后由运算器经“出入口”输出。
用户要单片机执行的各种命令(程序)也以数据的形式由存贮器送入控制器,由控制器解读(译码)后变为各种控制信号,以便执行如加、减、乘、除等功能的各种命令。所以,这一类信息就称为控制命令,即由控制器去控制运算器一步步地进行运算和处理,又控制存贮器的读(取出数据)和写(存入数据)等。第三类信息是地址信息,其作用是告诉运算器和控制器在何处去取命令取数据,将结果存放到什么地方,通过哪个口输入和输出信息等。
存贮器又分为只读存贮器和读写存贮器两种,前者存放调试好的固定程序和常数,后者存放一些随时有可能变动的数据。顾名思义,只读存贮器一旦将数据存入,就只能读出,不能更改(EPROM、E2PROM等类型的ROM可通过一定的方法来更改、写入数据——编者注)。而读写存贮器可随时存入或读出数据。
实际上,人们往往把运算器和控制器合并称为中央处理单元——CPU。单片机除了进行运算外,还要完成控制功能。所以离不开计数和定时。因此,在单片机中就设置有定时器兼计数器,其基本结构与本连载之(二)中的举例类似。到这里为止,我们已经知道了单片机的基本组成,即单片机是由中央处理器(即CPU中的运算器和控制器)、只读存贮器(通常表示为ROM)、读写存贮器(又称随机存贮器通常表示为RAM)、输入/输出口(又分为并行口和串行口,表示为做逗I/O口)等等组成。实际上单片机里面还有一个时钟电路,使单片机在进行运算和控制时差兄,都能有节奏地进行。另外,还有所谓的“中断系统”,这个系统有“传达室”的作用,当单片机控制对象的参数到达某个需要加以干预的状态时,就可经此“传达室”通报给CPU,使CPU根据外部事态的轻重缓急来采取适当的应付措施。
现在,我们已经知道了单片机的组成,余下的问题是如何将它们的各部分连接成相互关联的整体呢?实际上,单片机内部有一条将它们连接起来的“纽带”,即所谓的“内部总线”。此总线有如大城市的“干道”,而CPU、ROM、RAM、I/O口、中断系统等就分布在此“总线”的两旁,并和它连通。从而,一切指令、数据都可经内部总线传送,有如大城市内各种物品的传送都经过干道进行。
单片机指令系统与汇编语言程序
前面已经讲述了单片机的几个主要组成部分,这些部分构成了单片机的硬件。所谓硬件(Hardware),就是看得到,摸得到的实体。但是,光有这样的硬件,还只是有了实现计算和控制功能的可能性。单片机要真正地能进行计算和控制,还必须有软件(Software)的配合。软件主要指的是各种程序。只有将各种正确的程序“灌入”(存入)单片机,它才能有效地工作。单片机所以能自动地进行运算和控制,正是由于人把实现计算和控制的步骤一步步地用命令的形式,即一条条指令(Instruction)预先存入到存贮器中,单片机在CPU的控制下,将指令一条条地取出来,并加以翻译和执行。就以两个数相加这一简单的运算来说,当需要运算的数已存入存贮器后,还需要进行以下几步:
第一步:把第一个数从它的存贮单元(Location)中取出来,送至运算器。 第二步:把第二个数从它所在的存贮单元中取出来,送至运算器; 第三步:相加; 第四步:把相加完的结果,送至存贮器中指定的单元。
所有这些取数、送数、相加、存数等等都是一种操作(Operation),我们把要求计算机执行的各种操作用命令的形式写下来,这就是指令。但是怎样才能辨别和执行这些操作呢?这是在设计单片机时由设计人员赋予它的指令系统所决定的。一条指令,对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统(Iustruction Set),不同种类的单片机,其指令系统亦不同。
使用单片机时,事先应当把要解决的问题编成一系列指令。这些指令必须是选定的单片机能识别和执行的指令。单片机用户为解决自己的问题所编的指令程序,称为源程序(Source Program)。指令通常分为操作码(Opcode)和操作数(Operand)两大部分。操作码表示计算机执行什么操作,即指令的功能;操作数表示参加操作的数或操作数所在的地址(即操作数所存放的地方编号)。因为单片机是一种可编程器件,只“认得”二进码(0、1)。要单片机运作,单片机系统中的所有指令,都必须以二进制编码的形式来表示。例如,在Intel公司的MCS-51系列单片机中,从存贮器中取出一数到CPU中的累加器(在运算器中,参与运算、存放运算结果的专用寄存器)的指令代码为74H,累加器内容加立即数的代码为24H,再加上立即数代码,累加器送数到内部RAM存贮器的代码为F6H~F7H等。这些指令是用十六进制表示二进制的机器码。
MCS-51单片机的字长为8位,有时,要完成某些操作用一个字节尚不能充分表达。所以,在指令系统中有单字节指令,也有多字节指令。机器码是由一连串的0和1组成,没有明显的特征,不好记忆,不易理解,易出错。所以,直接用它来编写程序十分困难。因而,人们就用一些助记符(Mue monic)——通常是指令功能的英文缩写来代替操作码,如MCS-51中数的传送常用MOV(Move的缩写)、加法用Add(Addition的缩写)来作为助记符。这样,每条指令有明显的动作特征,易于记忆和理解,也不容易出错。用助记符来编写的程序称为汇编语言程序。但是,助记符编写的程序便于人理解,可单片机却只认识二进制机器代码,因此,为了让单片机能“读懂”汇编语言程序必须再转换成由二进制机器码构成的程序,这种转换过程,就称为“汇编”。汇编可借助于人工查表法来实现,也可借助PC机通过所谓“交叉汇编程序”来完成。由机器码构成的用户程序一旦“进入”了单片机,再“启动”单片机,就可让它执行输入程序所规定的任务。
MCU--51 CPU和存储器
单片机8051的CPU由运算器和控制器组成。
一、运算器 运算器以完成二进制的算术/逻辑运算部件ALU为核心,再加上暂存器TMP、累加器ACC、寄存器B、程序状态标志寄存器PSW及布尔处理器。累加器ACC是一个八位寄存器,它是CPU中工作最频繁的寄存器。在进行算术、逻辑运算时,累加器ACC往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。寄存器B主要用于乘法和除法操作。标志寄存器PSW也是一个八位寄存器,用来存放运算结果的一些特征,如有无进位、借位等。其每位的具体含意如下所示。PSW CY AC FO RS1 RS0 OV - P对用户来讲,最关心的是以下四位。
1�进位标志CY(PSW�7)。它表示了运算是否有进位(或借位)。如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0。
2�辅助进位标志AC。又称半进位标志,它反映了两个八位数运算低四位是否有半进位,即低四位相加(或减)有否进位(或借位),如有则AC为1状态,否则为0。
3�溢出标志位OV。MCS-51反映带符号数的运算结果是否有溢出,有溢出时,此位为1,否则为0。
4�奇偶标志P。反映累加器ACC内容的奇偶性,如果ACC中的运算结果有偶数个1(如11001100B,其中有4个1),则P为0,否则,P=1。
PSW的其它位,将在以后再介绍。由于PSW存放程序执行中的状态,故又叫程序状态字?运算器中还有一个按位(bit)进行逻辑运算的逻辑处理机(又称布尔处理机)。其功能在介绍位指令时再说明。
二、控制器
控制器是CPU的神经中枢,它包括定时控制逻辑电路、指令寄存器、译码器、地址指针DPTR及程序计数器PC、堆栈指针SP等。这里程序计数器PC是由16位寄存器构成的计数器。要单片机执行一个程序,就必须把该程序按顺序预先装入存储器ROM的某个区域。单片机动作时应按顺序一条条取出指令来加以执行。因此,必须有一个电路能找出指令所在的单元地址,该电路就是程序计数器PC。当单片机开始执行程序时,给PC装入第一条指令所在地址,它每取出一条指令(如为多字节指令,则每取出一个指令字节),PC的内容就自动加1,以指向下一条指令的地址,使指令能顺序执行。只有当程序遇到转移指令、子程序调用指令,或遇到中断时(后面将介绍),PC才转到所需要的地方去。8051 CPU碢C指定的地址,从ROM相应单元中取出指令字节放在指令寄存器中寄存,然后,指令寄存器中的指令代码被译码器译成各种形式的控制信号,这些信号与单片机时钟振荡器产生的时钟脉冲在定时与控制电路中相结合,形成按一定时间节拍变化的电平和时钟,即所谓控制信息,在CPU内部协调寄存器之间的数据传输、运算等操作。
三、存储器
存储器是单片机的又一个重要组成部分,图6给出了一种存储容量为256个单元的存储器结构示意图。其中每个存储单元对应一个地址,256个单元共有256个地址,用两位16进制数表示,即存储器的地址(00H~FFH)。存储器中每个存储单元可存放一个八位二进制信息,通常用两位16进制数来表示,这就是存储器的内容。存储器的存储单元地址和存储单元的内容是不同的两个概念,不能混淆。
一、程序存储器
程序是控制计算机动作的一系列命令,单片机只认识由“0”和“1”代码构成的机器指令。如前述用助记符编写的命令MOV A,#20H,换成机器认识的代码74H、20H:(写成二进制就是01110100B和00100000B)。在单片机处理问题之前必须事先将编好的程序、表格、常数汇编成机器代码后存入单片机的存储器中,该存储器称为程序存储器。程序存储器可以放在片内或片外,亦可片内片外同时设置。由于PC程序计数器为16位,使得程序存储器可用16位二进制地址,因此,内外存储器的地址最大可从0000H到FFFFH。8051内部有4k字节的ROM,就占用了由0000H~0FFFH的最低4k个字节,这时片外扩充的程序存储器地址编号应由1000H开始,如果将8051当做8031使用,不想利用片内4kROM,全用片外存储器,则地址编号仍可由0000H开始。不过,这时应使8051的第{31}脚(即EA脚)保持低电平。当EA为高电平时,用户在0000H至0FFFH范围内使用内部ROM,大于0FFFH后,单片机CPU自动访问外部程序存储器。
二、数据存储器
单片机的数据存储器由读写存储器RAM组成。其最大容量可扩展到64k,用于存储实时输入的数据。8051内部有256个单元的内部数据存储器,其中00H~7FH为内部随机存储器RAM,80H~FFH为专用寄存器区。实际使用时应首先充分利用内部存储器,从使用角度讲,搞清内部数据存储器的结构和地址分配是十分重要的。因为将来在学习指令系统和程序设计时会经常用到它们。8051内部数据存储器地址由00H至FFH共有256个字节的地址空间,该空间被分为两部分,其中内部数据RAM的地址为00H~7FH(即0~127)。而用做特殊功能寄存器的地址为80H~FFH。在此256个字节中,还开辟有一个所谓“位地址”区,该区域内不但可按字节寻址,还可按“位(bit)”寻址。对于那些需要进行位操作的数据,可以存放到这个区域。从00H到1FH安排了四组工作寄存器,每组占用8个RAM字节,记为R0~R7。究竟选用那一组寄存器,由前述标志寄存器中的RS1和RS0来选用。在这两位上放入不同的二进制数,即可选用不同的寄存器组,如附表1所示。
三、特殊功能寄存器
特殊功能寄存器(SFR)的地址范围为80H~FFH。在MCS-51中,除程序计数器PC和四个工作寄存器区外,其余21个特殊功能寄存器都在这SFR块中。其中5个是双字节寄存器,它们共占用了26个字节。各特殊功能寄存器的符号和地址见附表2。其中带*号的可位寻址。特殊功能寄存器反映了8051的状态,实际上是8051的状态字及控制字寄存器。用于CPU PSW便是典型一例。这些特殊功能寄存器大体上分为两类,一类与芯片的引脚有关,另一类作片内功能的控制用。与芯片引脚有关的特殊功能寄存器是P0~P3,它们实际上是4个八位锁存器(每个I/O口一个),每个锁存器附加有相应的输出驱动器和输入缓冲器就构成了一个并行口。MCS-51共有P0~P3四个这样的并行口,可提供32根I/O线,每根线都是双向的,并且大都有第二功能。其余用于芯片控制的寄存器中,累加器A、标志寄存器PSW、数据指针DPTR等的功能前已提及,而另一些寄存器的功能在后面有关部分再作进一步介绍
单片机的指令系统和寻址方式
单片机要正常运作,事先需编制程序,再把程序放入存贮器中,然后由CPU执行该程序。程序是由指令组成的,指令的基本组成是操作码和操作数。单片机的品种很多,设计时怎样表示操作码和操作数,都有各自的规定,再有指令代码也各不相同,因此,必须对所选单片机的全部指令,也就是所谓“指令系统”,有足够的了解。各个系列的单片机虽然有不同的指令系统,但也有其共同性。掌握一种单片机的指令系统,对其它系列单片机可以起到触类旁通的作用。MCS-51单片机应用广泛,派生品种多,具有代表性,所以,这里以MCS-51系列的指令系统为例说明“指令”的组成和应用。
1、MOV A,#20H
这条指令表示把20H这个数送入累加器A中(一个特殊功能寄存器)。
2、ADD A,70H
这条指令表示把累加器A中的内容(在上例中送入的#20H)和存贮器中地址为70H单元中的内容(也是一个数字),通过算术逻辑单元(英文缩写为ALU)相加,并将结果保留在A中。这里MOV、ADD等称为操作码,而A、#20H、70H等均称为操作数。在汇编语言程序中,操作码通常由英文单词缩写而成,这样有助于记忆,所以又称助记符。如MOV就是英文单词MOVE的缩写,含有搬移的意思;而ADD即为英文单词,其意为相加。因此,对于略懂英语的用户,掌握单片机指令的含意是较为方便的。操作数有多种表示法,如以上的#20H称为立即数,即20H就是真正的操作数。而70H是存贮器中某个单元的地址,在该单元中,放着操作数(比如说是3AH),ADD A,70H不是将70H和A中的内容相加,而是从存贮器70H单元中将3AH取出和A中的内容相加。由上可知,要找到实际操作数,有时就要转个弯,甚至转几个弯,这个过程称为寻址,MCS-51共有7种寻址方式,现介绍如下:
一、立即寻址: 操作数就写在指令中,和操作码一起放在程序存贮器中。把“#”号放在立即数前面,以表示该寻址方式为立即寻址,如#20H。
二、寄存器寻址: 操作数放在寄存器中,在指令中直接以寄存器的名字来表示操作数的地址。例如MOV A,R0就属于寄存器寻址,即将R0寄存器的内容送到累加器A中。
三、直接寻址: 操作数放在单片机的内部RAM某单元中,在指令中直接写出该单元的地址。如前例的ADD A,70H中的70H。
四、寄存器间接寻址: 操作数放在RAM某个单元中,该单元的地址又放在寄存器R0或R1中。 如果RAM的地址大于256,则该地址存放在16位寄存器DPTR(数据指针)中,此时在寄存器名前加@符号来表示这种间接寻址。如MOV A,@ R0。其它还有变址寻址、相对寻址、位寻址等,待以后再详细介绍。可能有人会问,在指令中直接给出实际操作数,不是简单、明了吗?为什么还要用其它几种寻址方式呢?这是因为在编制程序时很难一下子就给出操作数。如用单片机控制温度时,时时需要将给定的控制温度(如20℃)减去环境温度,而环境温度时时有变化,显然无法在程序指令中给出,只有通过一定方式,将其送入某个输入/输出口,再存放在某个寄存器中,这就必须用到寄存器寻址。又如要进行算术运算,要计算每班学员各科成绩的平均值,如果把每个学员的各科都编一个程序,在程序中直接给出该学员各科成绩,再求平均值,显然太麻烦。这里可以编一个求平均成绩的通用程序,把每位学员的成绩送入存贮器的各个单元中,这时可采取直接寻址,一个程序可供每个学员用,不是更方便吗?所以,寻址方式越多,编制程序就越方便、灵活,适用范围就越广。
寻址有如找人,如被找的人有手机、BP机、座机电话等多种联系方式则就容易找到他,单片机也是如此,寻址方式越多,找操作数越方便,单片机的功能就越强。前面介绍51系列单片机的寻址方式时,常遇到单片机内部的一些寄存器、累加器A、通用寄存器R0~R7、数据指针DPTR和存贮器等。在以后介绍指令时,数据就要在这些寄存器、存贮器之间传送,或者进行运算。因此,编制程序就需熟悉单片机的内部结构。
8051单片机的内部总体结构其基本特性如下:
8位CPU、片内振荡器
4k字节ROM、128字节RAM
21个特殊功能寄存器
32根I/O线
可寻址的64k字节外部数据、程序存贮空间
2个16位定时器、计数器
中断结构:具有二个优先级、五个中断源
一个全双口串行口
位寻址(即可寻找某位的内容)功能,适于按位进行逻辑运算的位处理器。除128字节RAM、4k字节ROM和中断、串行口及定时器模块外,还有4组I/O口P0~P3,余下的就是CPU的全部组成。把4kROM换为EPROM就是8751的结构,如去掉ROM/EPROM部分即为8031的框图,如果将ROM置换为Flash存贮器或EEPROM,或再省去某些I/O,即可得到51系列的派生品种,如89C51、AT89C2051等单片机的框图。
单片机各部分是通过内部的总线有机地连接起来的
初学编程怎么开始
初学编程可以按照以下步骤开始:
1、选择编程语言:首先需要选择一门编程语言,如Python、Java、C/C++等。初学者可以选择一些易于学习和入门的编程语言,如Python,因为它具有简单易懂、语法简洁、功能强大等特点。
2、学习编程基础知识:掌握编程基础知识是学习编程的基础,包括数据类型、变量、运算符、控制语句、函数等。可以通过在线教程、书籍、视频等途径进行学习。
3、练习编程:学习编程需要不断的练习,可以通过编写小程序、模拟实验、参加编程竞赛等方式进行练习。
4、参加编程社区:参加编程社区可以与其他编程爱好者交流学习经验,获取新的学习资源和灵感。
5、持续学习:编程技能需要不断更新和提升,需要持续学习新的知识和技能,如学习算法、数据结构、框架等。
关于51单片机编程保护现场的基础知识问题
所谓现场保护可以理解为,在进入中断之前,先将可能改变激蚂的寄存器中的值保存下来,等到退出含拆中断之后,再恢复他们的值,以防中断期间改变了原有寄存器的值,使得程序无法继续正常运行。所以:
1、只要有中断的情形,最好都要保护现场
2、状态标志位,可能改变的寄存器都要保护
3、每次保护的寄存器当然不一定相同,这个要视情况而定的。但是记住状态标志位一定要保护!就是在状态寄存器中的标志位!
最后,这些情况指的都是汇编的情形。如果你用的是C语言,那么,这些事情编译器都自动帮明老埋你做好了,无需你操心。
谁能教教我怎么学单片机,先学什么,怎么入门
先学基础课程,从这一方面入门。
嵌入式学习路径是一个漫长而又有趣的过程,有趣是随着知识的积累感受的成就感,漫长是相对于软件来说,入门还是有一定门槛的。
但一定不要一个人学习,因为上述学习路径长,贺茄难度渐渐加深,一个人总有不理解,晦涩难懂的地方,你需要有人来探讨。注意是探讨,不是一味的请教别人,遇到问题自己先通过网络查询资料,先学习和思考,再请教他人。因此强烈建议现实生活中找一两个同样方向的人一起学习,在学校就比较方便了,加个单片机社团就有学习氛围了。
1、基础课程
1.1C语言
具体细节的知识点我这里就不详细的展开描述了,毕竟C语言的书和视频教程网上一大堆,学习资源充分。
但这里建议,C语言的基础还是要打扎实的,最简单的方法就是高中对付高考的方法:题海战术。其实就是将C语言书籍后面的C习题,每一题的做一遍,自己动手敲一遍,想一遍,调试一遍。这样将会极大的锻炼到你的基础编码能力。觉得C语言课本后面的习题太简单没有难度的,可以转战LeetCode。
1.2数字电路
具体的细节说实话我也不记得了,但是最基本你要知道与或非门如何实现组合逻辑;组合逻辑的输出反馈到输入作为下一次逻辑的输入就构成了时序电路,掌握时序逻辑的分析方法;另外还需掌握数据锁存器类的掉电数据不丢失的电路是什么样的原理。
个人觉得,学习数电主要是要理解到下面这几个点:人类文明的进步,探索发现了PN结这种东西具有单向导电性,由此制作做了二极管。
由于二极管的单向导电性,由此又制作出了与或非门电路。(理解二极管如何构成与或非逻辑门)人们做出了与或非逻辑后,发现世界上逻辑就是在此基础上复杂化而已。可用通过与或非门实现加法器,移位器,编码器,译码器等各种想要实现的组合逻辑(掌握通过门电路设计组合逻辑的方法)。
但现实生活中的逻辑往往不像组合禅团察逻辑这么单纯,输入转化为输出就结束了。往往上一次的输出会影响到下一次处理。时序逻辑的出现就这么引入了,同时也带来了时钟的概念。(掌握组合逻辑输出反馈为下一个时钟的输入得到时序电路的分析方法)。
上面这些都是实时输出的,即输入的同时才能得到对应的输出,一旦输入没有,输出也就丢了。数据没有办法保存。于是人们又通过门电路制作出了可以锁存数据的RS触发器,PROM存储器。(掌握存储器的电路原理,如何通过总线时序访问)。
准确理解了上述内容后,在后续学习微机原理的课程中,你会发现CPU的核心单元就是一个复杂点的时序逻辑,而外设资源的话,都或巧是些组合逻辑或时序逻辑包起来的黑盒子。
1.3代码托管
Git工具和GitHub使用。将代码保留一份到Github上,方便以后复用。慢慢你会发现,自己整理的代码就是最好的笔记。git教程推荐廖雪峰的git教程,简单易懂。国内的话,可以考虑gitee。
给点小建议,对于复杂的逻辑,代码笔记中要有必要的注释。代码风格最好做到统一规范,写代码要像雷军一样自信,"我写的代码像诗一样优雅"。代码风格格式化工具,很多器自带代码格式化功能,如VSCode。也可以使用CoolFormat手动进行格式化。
2、入门课程
2.1单片机
讲道理,目前Proteus仿真软件确实很强大,使用它学习51的书籍,教程,示例十分的多,非常适合学习。但我还是建议真心学习的话,去淘宝上淘个实物开发板和模块,学生党经济能力一般的就上闲鱼,买个二手板子,包邮不超过50。
为什么建议买实物呢?因为Proteus仿真毕竟是仿真,对于很多硬件上的电压、信号时序等要求不像实际电路严谨,或者说不够严苛。就好比i2c时序不是很符合从机的要求也能正常通信,但同样的程序放到实物单片机上就很有可能i2c通信不上。
这里再顺带手的介绍下51主要学习些什么?以及简单的学习步骤:
创建工程,学会如何编译,如何下载,理解sbit,sfr等51单片机特有的寄存器数据结构。
学习51单片机的IO模块,使用IO点灯(流水灯)、控制数码管、控制8*8点阵模块、按键输入。
学习51单片机的中断模块,先从最简单的外部中断,使用中断的方式识别按键事件。
学习51单片机的定时器模块,实现1s定时,实现简单的数字秒表,实现IO口输出PWM波。
学习51单片机的串口模块,掌握串口电平标准,TTL、RS232、USB电平标准,掌握串口波形组成,掌握波特率,多主机通信等概念。
51基础模块学习完了后,就可以学习扩展模块了。可以使用IO口模拟各种各样的低速总线协议,如i2c协议、spi协议还有一些特定模块自定义的协议,如DS18B20温度传感器的单总线协议,加深对协议的理解。学习的过程可以通过买该协议对应的模块进行学习,尽量挑网上教程多的模块买,如i2c就买eeprom和mpu6050,spi就买flash。
学到这里,就可以做点小东西了,比如说旋转LED,循迹小车,遥控小车。最开始就跟着网上的教程学习,学习的第一步总是从模仿开始的。先模仿,再理解,再改进,最后吸收转化为自己的能力。
建议上述过程多花点时间,做到绝大部分地方都能搞懂,都能够理解。毕竟是基础,后面的学习是在其上进行扩展,基础学的好,后面有着触类旁通的功效。
2.2微机原理(可选)
一般的小伙伴这个时候就会开始上手STM32了,但是我建议在上手STM32之前,先看看8086处理器的设计,即学习下《微机原理》这门课,我觉得还是很有必要的。微机原理,可以大概的了解的,CPU如何执行指令,如何通过地址总线、数据总线、控制总线访问内部寄存器,外部存储器,中断如何被响应,以及中断的具体内部处理过程。
2.3STM32
接下来可以安安心心的学习STM32了,这个就比51要复杂了。但是不慌,本质和51是一样的东西,只是功能模块变复杂了,模块数量变多了。但是万变不离其宗,本质上模块无非就是组合逻辑或者是时序逻辑电路,而模块寄存器就是该逻辑电路的输入。
2.4数据结构&RTOS
裸机程序做完了就可以学学rtos小型的嵌入式操作系统了,野火和正点原子都有出书籍和视频教程的。学习RTOS之前,有需要的同学可以自行考虑下要不要学一下数据结构,不一定要学的很深,最起码队列和栈结构要了解,最好的话自己用c实现一遍。
2.5PCB绘制&DIY小作品
单片机这种简单的小板子推荐使用国产的LCEDA。AltiumDesigner更专业,但是是收费软件,替代方案为KiCAD。
STM32功能模块比较多,如果全部都学的话自然是最好的,但是怕单单是学习慢慢的会觉得无趣(看视频教程、分析源码、自己实现一遍、接着开始下一个知识点也是上述三个步骤),久了怕人会坚持不下来,渐渐的消磨了学习的激情。因此,学习STM32我建议以项目为导向,当然一些基本的GPIO、中断、i2c、LCD、Touch、ADC、TIMER等外设还是要先熟悉的。
既然以作品为导向,那自然也就需要自己打板了。打板子的,最近嘉立创在搞活动,真的好便宜呀,5元5片,全国包邮。打板的话,需要学习下AltiumDesigner软件,从此开始制作属于自己的小玩意。AD的资料网上也很多。我是看的郭天祥的AD6.9视频入门的。目前国产的立创EDA出了专业版,画画简单的电路板还是没有什么问题的。
3、提高课程(Linux)
单片机学的差不多,就可以开始嵌入式Linux学习了,仔细细分的话可以细分为嵌入式Liunx驱动开发和嵌入式Linux应用开发。
3.1Ubuntu入门
安装Ubuntu,学习Linux基础使用,我是看慕课网的Linux达人养成计划系列视频入门的,重点学习下以下内容:
Linux基本操作,常用命令。
LinuxC编程,能够使用gcc进行编译。
Makefile,推荐陈浩《跟我一起写Makefile》。
Shell脚本。
感兴趣入门下Python脚本。
3.2Linux驱动
有了Linux使用基础,开始学习处理器,s3c2440处理器,购买开发板学习,推荐韦东山视频,跟着韦东山走,一期,二期,三期,毕业班视频。
主要的学习内容有:
裸机驱动,就理解为单片机就好了,性质是一样的,只不过这里不像51和STM32使用IDE进行编译和链接,而是自己使用交叉编译工具配合Makefile手动的编译链接。uboot入门,学习通用的引导流程,熟悉ubootcmd,bootcmd,环境变量,flash烧写等。
kernel驱动,这里的kernel驱动和裸机驱动还是很大区别的,单片机驱动相对来说说仅仅只是看懂SOC手册,配置寄存器,但是内核驱动往往为了兼容大量的SOC主控,大量的外设厂商,存在一层软件抽象。在内核中,我们称之为子系统。子系统有很多内容,选自己工作相关的仔细研究即可,切勿贪多嚼不烂。
3.3Linux驱动移植
rootfs制作,基于busybox制作内核文件系统。
uboot移植,kernel移植。
4、提高课程(软件)
有了一定的嵌入式基础后,后面在实际工作中,你会发现,很多硬件强相关的驱动代码都是由物料供应商提供。举个例子,我之前在上海做手机开发,高通SOC方案驱动子系统非常的完整,有高通的一套标准在里面,而对应的手机物料供应商,比如LCD(屏幕)、TP(触摸)、Sensor(摄像头)、指纹、各类传感器。
4.1数据结构
基本的队列、链表、环形缓冲区这些是基本功了,建议自己实现一遍。不要忘了我之前提到的,自己曾今写过的代码就是最好的笔记。gitee和github记得保留起来。这些代码会经常使用到,在不断的使用中,慢慢的修复缺陷,完善代码的鲁棒性。
4.2设计模式
推荐《HeadFirst》,我看的是Java语言的版本。可以初步学习下Java语法再看。代码设计思想不受语言限制的,好书值得一看。
5、积累与思考
5.1知识体系库
慢慢的,当我进入一个细分的领域,音视频开发领域,就会发现,很多时候,不仅仅是熟练通用开发能力,即我上面提到的驱动开发、软件业务开发这些技能。很多业务依赖于你要懂专业知识可能得心应手,不然连代码中的数据结构为什么要如此设计都搞不明白。
因此但进入专业领域,可以尝试慢慢的将平时积累的知识组织起来,慢慢的积累,最开始可能自己也是一知半解,博客抄一抄,官方协议文档翻译翻译。但是知识就是这样的,最开始没有成体系之前,一知半解很正常,一旦到了一定的量,熟悉后,一旦知识串起来后,那种的融汇贯通的感觉是极其美妙的。
因此,建议平时学习的过程中,养成做笔记的好习惯。想要深入研究那一方面后,可以不断的积累学习,进行系统的整理,慢慢的等待融会贯通的那一日到来就可。我目前使用的语雀知识库,私人服务器搭建的是showdoc文档库。
5.2文档规范&代码模块化(组件化)
不难发现,很多开源软件都配有详细的文档,从最简单的介绍这个软件是什么,有什么用,该怎么用,到注意事项,都写得一清二楚。甚至有的开源软件还会介绍内部的实现细节。
再参考我之前提到的,自己曾今写过的代码就是最好的笔记,我们可以不断的完善自己曾今写过的代码,慢慢的将独立功能的代码模块单独出来。方便自己以后在不同的项目复用。
复用的话,毕竟好记性不如烂笔头,代码核心思想,一个月两个月还能记得,时间久点别说核心思想了,可能连使用都不太记得怎么用了。这个时候就意识到了,代码配套文档介绍的重要性。毕竟在代码刚开发完成的时候,趁着思路清晰的时候,把文档写掉,注意事项记录的清清楚楚,明明白白后,后面复用将会方便很多。
单片机学习经验分享
我也是一个新手,我的经验仅供参考,别见笑。单片机其实并不难学,你已经有了基础,应该学习起来很快的。
:books:学习资料
数字电路不用专门学,尤其是初接触单片机,用不了太多数字电路知识,当然你要深入学习,那少不了。你只要知道基本的寄存器、存储器的原理就行。像74LS373之类的器件。
:man_technologist:汇编语言
单片机里用的汇编语言比微机原理用的汇编简单,一共111条指令,背一背也就会了。虽然说是C语言也可以编程,但我感觉一开始还是要用汇编,因为C语言编程有时不涉及内部寄存器存改冲取的问题,如果你对这些不是很了解,可能会感到迷茫。如果你对汇编很熟了,再转到C语言更好一些。
:memo:基础原理
单片机的基本原理很简单,5、6页内容搞定。像51单片机,40个引脚功能要记熟。片内存储器的分布、指令的操作时序这些都要弄明白。寻址方式等等都要弄懂记熟的。
:alarm_clock:定时器、串行口、中断
以后涉及到定时器、串行口、中断可能要复杂一些,多冲歼粗分析一些源代码,熟悉了就行。
:electric_plug:扩展器件
8155 8253之类的器件扩展是在掌握了基础知识后才用得到的。这些扩展器件的工作方式都是先寻址,再传递数据,所以要有选通信号,像单片机引脚的ALE、PSEN、WR、DR之类都是选通器件用的。一般找这个思路,这些知识都能很快搞定。散镇
单片机是什么有什么用途学习它需要哪些基础知识
单片机是一类内部集成了计算机核心技术的智能芯片,就是把中央处理器CPU,随机存取存储器RAM,只读存储器ROM,输入/输出端口等主要的计算机功能稿链部件,都集成在一块集成电脑芯片上,从而形成一部概念上完整的微型键扰孙计算机。
凡是能想到的地方,单片机都可以用得上,例如家用电器,公交IC卡,工业控制,汽车电子,电子玩具等等
学习它要知道李绝以下知识:
1、单片机硬件系统
2、单片机指令系统
3,汇编程序设计基础以及汇编器的应用
4、硬件仿真器及其应用
5、程序烧录器及其应用
单片机入门指南
单片机是MCU(MICRO CTROL UNIT)翻咐悉誉译成中文就是微型控制单元。它一般是集成度比较高的片状CPU。用处自然是控制了。本文将为初学者介绍单片机的基础知识和入门方法。
:pushpin:单片机种类
单片机种类很多MCS-51,PIC,AVR(主频高,处理数据和指令效率高),凌阳(处理语音信号)等,建议你先从51入手。
:wrench:开发板
操作主要有2重方法了,要么你去城隍庙买电子器件自己焊接数字电路(你是新手,先从数字电路入手吧,因为后期调试很麻烦);更建议你用开发板先学习简单的试验,不过开发板价格稍微昂贵了点。要不最小系统板也行,呵呵。
:laptop:汇编和C语言
建议你先从51入手,熟悉汇编和C语言,最好会汇编,因为有的系统设计对时序的要求非常严格,利用汇编可以严格的控制时序。C语言编写维护方便,毕竟它容易看懂呵呵。51单片机的程序调试编译下载一般使用KEIL,不同单片机可以用专门的软件。
:musical_note:数字信号处理
MP3 MP4可以算是DSP方面的内容,因为它主要针对数字图像和声音信号的处理衡段。MP3和MP4主要就陆游一个解码芯片和RAM。
:memo:程序结构
那个开发单片机的C语言和TC上的C语言是不太一样的,他们包含的指令不一样,但是一个程序的结构是不会变的,无非是主子程序,各种变量的定义。
编程初学者要学习哪些基本的知识才算入门
编程,其实就是利用特定的语言控制计算机,或者说和计算机进行交流。
作为初学者,要掌握以下基础知识就算入门了。
1、编程环境的安装与使用。比如Python的学习一般推荐软件自带的IDLE,简单好用。
2、掌握输入、输入语句的使用。输入语句可以让计算机知道你通过键盘输入了什么,输出语句可以让你知道计算机执行的结果。以输出语句为例:
其中“”里面的内容是原样输出,多个输出项之间用,隔开。
3、掌握运算(包含计算、逻辑)表达式使用。这个主要是用+、-、*、/、()、》、《、》=、《=等符号连接起来的表示计算或者比较的式子,让计算机能做计算机或者判断。
一个是计算表达式,一个是所谓的逻辑表达式。
4、特别要掌握赋值表达式的使用,这个主要是等于号的理解。在计算机编程语言里,等于号一般不表示相等,而是表示赋值。也就是将等号右边的内容记入左边的名字里。
5、理解并熟练使用变量,变量的字面意思就是会变化的量。其实质的作用记忆信息。通过给要记忆的内容取个名字,然后通过这个名字就可以找到记忆的内容。有点类似于数学中的字母表示数。
6、选择结构,这是让计算机具有一定的选择、判断能力的基础。比如我们常见的登录,VIP就要用到选择结构。因为我们把各种情况都列举在程序里了,程序才会有各种变化。
没选择,没变化!变化的根本在于条件。
7、循环结构,这是让计算机具有重复的能力。前提是事件要具有一定的规律性,比如1,3,5,7,9……
如果没有规律,也可能通过数组等方法构造规律。
其实的range()代表范围,三个参数分别表示开始,结束,间隔。不能超过结束,间隔可正可负。
8、文件的读取和写入,这个主要是针对大量的数据处理而言的。
一般来说,掌握这些基本知识就算入门了。不足之处敬请指正。
入门编程学习需要了解什么
对于学习编程,每个人都有不同的看法,这不仅是因为与软件开发公司公开应聘的职业种类相比,相当于招聘的人远远不能满足差距,而且编程也是工资最高,对工作满足感最强的职业之一。越来越多的人想进入这个行业也是理所当然的。
很多人在学习过程中选择放弃,重要的不是因为知识太难,而是因为掌握的技巧和方法不正确。如果没有掌握知识,想要获得困难是不可能的,那么想要进行编程学习需要提前了解什么呢?下面北大青鸟为大家具体介绍。
1、编程入门首先需要学习什么
为了成为优秀的程序员,发现编程思想,掌握编程感觉是非常重要的,而不是死记硬背语言本身。学习编程有很多异曲同工之处,如果掌握了C,JAVA就能马上着手。面对新的编程语言时,北京计算机学习建议只需简单了解该语言的语法特征,即可轻松地对其进行应用。
很多大学生在学校学习过C语言,但他们中真正精通C语言的程序员很少,只是简单地了解语法,并不清楚许多重要的知识点。关于英语,现阶段只要知道相关的代码语言就可以了。
2、零基础如何学编程
自己学习的话,可以买到在线教程和书籍,但是不要太依赖网络教程。因为声音太小,错误太多,听不懂地方太多。C语言基于系统,很难与系统底部的语言交汇。如果能掌握C语言,制作简单的软件就不成问题了北京java培训认为Java是网络编程语言,和C一样,并且Java也是面向对象的语言,在学习中有很大去优势。
3、编程的就业前景怎么样
就业范围广,现在有规模大的企业,有IT部门,也有财务管理软件和办公自动化等部门,应届毕业生除了可以去新兴行业外,还可以去规模较大的企业担任技术部部长职务等。
编程入门是非常重要的,因为现在的编程语言很多,如果是零基础学习编程,java课程建议最好制定出适合自己的学习计划,在确定学习方向之后开始学习,掌握扎实的编程基础。

更多文章:
procreate教程(《procreate》移动局部图层教程)
2026年11月3日 17:30
pccamera摄像头驱动下载链接(有免费下载联想小新电脑相机驱动的软件吗)
2026年11月3日 17:10








