用C语言编写一个串口通信程序,在裸机上运行

 2024-02-26 05:03:11  阅读 0

您可以在互联网上搜索微控制器。

如果你想开始,最好去图书馆借一些书来阅读。 这很难理解。 祝你好运! !

我为您提供的以下信息是在百度上找到的。

概述

微控制器是指集成在一个芯片上的完整计算机系统。 虽然它的大部分功能都集成在一块小芯片上,但它却具备了一台完整计算机所需的大部分部件:CPU、内存、内部和外部总线系统,现在大多数还带有外部存储器。 同时集成了通信接口、定时器、实时时钟等外围设备。 当今最强大的单片微计算机系统甚至可以将声音、图像、网络以及复杂的输入输出系统集成在一颗芯片上。

目录[隐藏]

微控制器简介

单片机的应用领域

学习并应用六个重要部分

单片机学习

常用单片机芯片介绍

从无线电世界到微控制器世界

微控制器攻击技术

单片机入侵攻击的一般流程

单片机又称微控制器(),因为它最早应用于工业控制领域。 微控制器是从专用处理器发展而来的,芯片中只有一个CPU。 最早的设计理念是将大量的外围器件和CPU集成到一颗芯片中,使计算机系统变得更小,更容易集成到体积要求严格的复杂控制设备中。 INTEL的Z80是第一个按照这个思想设计的处理器。 此后,微控制器和专用处理器的发展就分道扬镳了。

早期的微控制器都是8位或4位的。 最成功的是INTEL的8031,它以其简单、可靠和良好的性能而受到极大的赞誉。 此后,基于8031开发了MCS51系列微控制器系统。基于该系统的微控制器系统至今仍被广泛使用。 随着工业控制领域的要求提高,16位单片机开始出现,但由于性价比不理想,并未得到广泛应用。 随着20世纪90年代后消费电子产品的快速发展,微控制器技术得到了很大的提高。 随着INTEL i960系列,特别是后来的ARM系列的广泛应用,32位单片机迅速取代了16位单片机的高端地位,进入主流市场。 传统8位微控制器的性能也得到了迅速提升,处理能力比20世纪80年代提高了数百倍。 目前,高端32位微控制器的主频已超过此,性能已赶上20世纪90年代中期的专用处理器。 普通型号出厂价已降至1美元,最高端型号仅10美元。 现代微控制器系统不再仅在裸机环境中开发和使用。 全系列微控制器上广泛应用了大量的专用嵌入式操作系统。 而作为掌上电脑和手机的核心处理的高端微控制器甚至可以直接使用专用的Linux操作系统。

微控制器比专用处理器更适合嵌入式系统,因此应用最多。 事实上,微控制器是世界上数量最多的计算机。 微控制器几乎集成到现代人类生活中使用的所有电子和机械产品中。 手机、电话、计算器、家用电器、电子玩具、掌上电脑、鼠标等电脑配件都配备有1-2个微控制器。 个人计算机中还将有大量的微控制器工作。 汽车一般配备40多个微控制器,复杂的工业控制系统甚至可能有数百个微控制器同时工作! 微控制器的数量不仅远远超过个人电脑和其他计算设备的数量总和,甚至超过了人类的数量。

[编辑本段]单片机简介

单片机又称单片机,不是完成某种逻辑功能的芯片,而是将计算机系统集成到一块芯片上。 简而言之:芯片变成了计算机。 其体积小、重量轻、价格便宜,为学习、应用和开发提供了便利的条件。 同时,学习使用单片机是了解计算机原理和结构的最佳选择。

微控制器还使用与计算机功能类似的模块,如CPU、内存、并行总线以及与硬盘具有相同功能的存储设备。 不同的是,这些部件的性能比我们家用电脑弱很多,但价格也低。 ,一般不超过10块钱……用它来做一些控制电器等不是很复杂的工作就足够了。 在我们现在使用的全自动滚筒洗衣机、抽油烟机、VCD等家电中都可以看到它的身影! ...主要用作控制部分的核心部件。

它是一台在线实时控制计算机。 在线即现场控制,要求抗干扰能力强、成本低。 这也是与离线计算机(例如家用PC)的主要区别。

微控制器依赖于程序并且可以修改。 不同的功能是通过不同的程序来实现的,特别是一些特殊的、独特的功能。 这是其他设备需要付出很大努力才能实现的,有的即使付出很大努力也很难实现。 如果用纯硬件实现一个不是很复杂的功能比如美国20世纪50年代开发的74系列或者1960年代系列,电路一定是一块大PCB板! 但如果我们使用20世纪70年代在美国成功投放市场的系列微控制器,结果就会大不相同! 只因为单片机可以通过你编写的程序实现高智能、高效率、高可靠性!

由于微控制器对成本敏感,目前占主导地位的软件仍然是最低级的汇编语言。 它是除二进制机器代码之外的最低级语言。 如果它的级别这么低,为什么要使用它呢? 很多高级语言已经达到了可视化编程的水平,那为什么不使用它们呢? 原因很简单,那就是微控制器没有像家用电脑一样的CPU,也没有像硬盘一样的大容量存储设备。 用可视化高级语言编写的小程序即使只有一个按钮,大小也会达到几十K! 对于家用电脑的硬盘来说这还好,但对于微控制器来说就无法接受了。 单片机的硬件资源利用率一定很高,因此汇编虽然原始,但仍然被广泛使用。 同理,如果超级计算机上的操作系统和应用软件运行在家用PC上,家用PC也将无法承受。

可以说,二十世纪跨越了三个“电”时代,即电气时代、电子时代和现在已经进入的计算机时代。 不过,这种计算机通常指的是个人计算机,简称PC。 它由主机、键盘、显示器等组成。还有一种大多数人不太熟悉的计算机。 这种计算机是向各种机器赋予智能的单片计算机(也称为微控制器)。 顾名思义,这种最小的计算机系统仅使用一个集成电路来执行简单的计算和控制。 由于体积小,通常隐藏在被控机器的“肚子”里。 它在整个设备中扮演着与人类思维相同的角色。 如果出现问题,整个设备就会瘫痪。 如今,这种单片机的应用领域非常广泛,如智能仪表、实时工业控制、通讯设备、导航系统、家用电器等,各种产品一旦使用了单片机,就可以对产品进行升级换代。 “智能”这个形容词经常放在产品名称前面,比如智能洗衣机。 如今,一些工厂的技术人员或其他业余电子开发人员生产的一些产品,要么电路过于复杂,要么功能过于简单,很容易被抄袭。 原因可能是该产品没有使用微控制器或其他可编程逻辑器件。

微控制器的历史

微控制器诞生于20世纪70年代末,经历了SCM、MCU、SoC三个阶段。

1、SCM是单片机(Chip)阶段,主要是为最好的单片机嵌入式系统寻求最好的架构。 “创新模式”的成功,为单片机和通用计算机建立了一条完全不同的发展道路。 抖音()在嵌入式系统自主开发方面发挥了重要作用。

2. MCU是微控制器(Micro Unit)阶段。 主要技术发展方向是不断扩展满足嵌入式应用中对象系统要求的各种外围电路和接口电路,突出其对象的智能控制能力。 它涉及到的领域都是与对象系统相关的。 因此,开发MCU的重任不可避免地落在了电气电子技术制造商身上。 从这个角度来看,Intel逐渐淡出MCU发展也是有其客观因素的。 在开发MCU方面,最著名的厂商是公司。

该公司凭借在嵌入式应用方面的巨大优势,迅速将MCS-51从单片机发展成为微控制器。 因此,当我们回顾嵌入式系统的发展道路时,我们不应该忘记英特尔和英特尔的历史成就。

3、单片机是嵌入式系统的独立发展道路。 发展到MCU阶段的一个重要因素是寻求片上应用系统的最大化解决方案; 因此,专用单片机的发展自然就形成了SoC的趋势。 随着微电子技术、IC设计和EDA工具的发展,基于SoC的微控制器应用系统设计将会有更大的发展。 因此,对单片机的理解可以从单片机、单片机延伸到单片机应用系统。

[编辑本段]单片机的应用领域

目前,单片机已经渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。 导弹导航装置、飞机上各种仪表的控制、计算机网络通信和数据传输、工业自动化过程的实时控制和数据处理、广泛使用的智能IC卡、民用豪华汽车的安全系统、录像机、摄像机的控制、全自动洗衣机、程控玩具、电子宠物等都离不开单片机。 更不用说自动控制领域的机器人、智能仪器、医疗设备了。 因此,单片机的学习、开发和应用将造就一批计算机应用和智能控制方面的科学家和工程师。

微控制器广泛应用于仪器仪表、家用电器、医疗器械、航空航天、特种设备智能管理和过程控制等领域,大致可分为以下几类:

1、在智能仪表中的应用

微控制器具有体积小、功耗低、控制功能强、扩展灵活、小型化、易用等优点。 它们广泛应用于仪器仪表中。 与不同类型的传感器组合,可实现电压、功率、频率、湿度、温度等功能。流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制,使仪器数字化、智能化、小型化,其功能比采用电子或数字电路的仪器更加强大。 例如精密测量设备(功率计、示波器、各种分析仪)。

2、在工业控制中的应用

使用微控制器可以构建各种控制系统和数据采集系统。 例如工厂流水线的智能化管理、电梯的智能控制、各种报警系统、与计算机联网形成二次控制系统等。

3、在家用电器中的应用

可以说,如今的家用电器基本上都是由单片机控制的,大到电饭锅、洗衣机、冰箱、空调、彩电等音视频设备,大到电子称重设备,种类繁多,无处不在。

4.计算机网络与通信领域的应用

现代微控制器一般都具有通信接口,可以方便地与计算机进行通信,为计算机网络和通信设备中的应用提供了优良的物质条件。 当今的通信设备基本实现了单片机的智能控制。 手机、电话机、小型程控交换机、楼宇自动通讯呼叫系统、列车无线通讯,再到日常工作中随处可见的手机、集群移动通讯、无线对讲机等。

5、单片机在医疗设备领域的应用

微控制器还广泛应用于医疗设备,如医用呼吸机、各种分析仪、监护仪、超声波诊断设备和病床呼叫系统等。

6. 各种大型电器的模块化应用

一些特殊用途的微控制器被设计用来实现特定的功能,允许在各种电路中进行模块化应用,而不需要用户了解其内部结构。 例如,音乐集成微控制器将看似简单的功能小型化在纯电子芯片中(与磁带机的原理不同),这需要复杂的类似计算机的原理。 例如:音乐信号以数字形式存储在存储器中(类似于ROM),由微控制器读出,并转换为模拟音乐电信号(类似于声卡)。

在大型电路中,这种模块化应用大大减小了尺寸,简化了电路,降低了损坏和错误率,并且方便更换。

7、单片机在汽车设备领域的应用

微控制器广泛应用于汽车电子领域,如汽车中的发动机控制器、基于CAN总线的汽车发动机智能电子控制器、GPS导航系统、ABS防抱死系统、刹车系统等。

此外,单片机还广泛应用于工商、金融、科研、教育、国防、航空航天等领域。

[编辑本段]学习和应用六个重要部分

单片机学习应用的六大重要部分

1.总线:我们知道电路总是由通过电线连接的元件组成。 在模拟电路中,布线不会成为问题,因为设备一般都是串行关系,设备之间的连接线并不多,但计算机电路不同。 它基于微处理器。 每个设备都必须连接到微处理器。 每个设备的工作必须相互协调,因此需要大量的连接。 如果我们仍然像模拟电路一样在每个微处理器和每个设备之间连接单独的连接,那么线路的数量将是惊人的。 因此,微处理器中引入了总线的概念。 每个设备共享连接,所有设备的8条数据线都连接到8条公共线,相当于将设备并联起来,但仅此还不够。 如果两个设备同时发送数据,一个是0,另一个是1,那么接收方到底收到了什么? 这种情况是不允许的,所以必须通过控制线进行控制,使设备分时工作。 任何时候只有一台设备可以发送数据(多台设备可以同时接收)。 设备的数据线也称为数据总线,设备的所有控制线称为控制总线。 微控制器内部或外部存储器和其他设备中都有存储单元。 这些存储单元必须先分配地址才能使用。 当然,所分配的地址也是以电信号的形式给出的。 由于存储单元较多,因此用于地址分配。 还有很多线,这些线称为地址总线。

2、数据、地址、指令:之所以将这三者放在一起,是因为这三者的本质是相同的——数字,或者是‘0’和‘1’的序列。 换句话说,地址和指令也是数据。 命令:微控制器芯片设计者指定的数字。 它与我们常用的命令助记符有着严格的一一对应关系,单片机的开发者无法更改。 地址:是查找单片机内外存储单元和输入输出端口的依据。 内部单元的地址值已经由芯片设计者指定,不能更改。 外部单元可以由微控制器开发人员确定,但有一些地址单元。 一定有的(具体参见程序的执行过程)。 数据:这是微处理器处理的对象,在不同的应用电路中数据有所不同。 一般来说,正在处理的数据可能有以下几种情况:

1•地址(如MOV DPTR,1000H),即地址1000H发送到DPTR。

2•模式字或控制字(如MOV TMOD,#3),3为控制字。

3•常数(如MOV TH0、#10H) 10H 为时间常数。

4·实际输出值(例如P1口接了彩灯,如果要灯全亮,执行命令:MOV P1,#0FFH。如果要灯全暗,执行命令:MOV P1,#00H)。 这里0FFH和00H都是实际值。 产值。 另一个例子是LED使用的字形代码,它也是实际的输出值。

一旦理解了地址和指令的本质,就不难理解为什么程序会跑掉并把数据当作指令来执行。

3、P0口、P2口、P3口的第二功能使用:初学者常常对P0口、P2口、P3口的第二功能使用感到困惑,认为第二功能和P3口之间需要有一个切换。原来的功能。 这个过程,或者换句话说,需要指令。 事实上,每个端口的第二个功能是完全自动的,不需要通过指令进行转换。 例如,P3.6和P3.7分别是WR和RD信号。 当微芯片处理器连接到外部 RAM 或具有外部 I/O 端口时,它们用作第二功能,不能用作通用 I/O 端口。 微处理器一执行MOVX指令,就会从P3.6或P3.7发出相应的信号,无需事先指令指令。 事实上,“不能用作通用I/O端口”并不意味着“不能”,而是(用户)“不会”将其用作通用I/O端口。 你完全可以在指令中安排一条SETB P3.7指令,当单片机执行这条指令时,也会使P3.7为高电平,但用户不会这样做,因为这通常会导致系统崩溃。

4、程序执行过程:单片机上电复位后,8051中的程序计数器(PC)中的值为‘0000’,因此程序总是从‘0000’单元开始执行,也就是说:必须在系统的ROM中。 ‘0000’单元必须存在,并且‘0000’单元中存储的必须是一条指令。

5、栈:栈是用来存储数据的区域。 这个区域本身并没有什么特别的。 它是内部 RAM 的一部分。 特殊之处在于它存储和访问数据的方式,也就是所谓的“先进”。 “后出,后进先出”,并且堆栈有特殊的数据传输指令,即“PUSH”和“POP”。 有一个专门的单元专门为它服务,那就是堆栈指针SP。 每当执行PUSH指令时,SP自动加1(在原始值的基础上)。 每当执行POP指令时,SP自动减1(在原始值的基础上)。 由于SP中的值可以通过指令改变,因此只要在程序开始时改变SP的值,就可以将堆栈设置在指定的内存单元中。 例如,在程序开始时,使用MOV SP,#5FH指令,然后将堆栈建立在从存储单元60H开始的存储单元中。 一般在程序的开头总会有一条设置堆栈指针的指令,因为启动时SP的初始值为07H,这使得堆栈从08H单元开始往回走,而从08H到1FH是8031的第二、第三位,经常使用第四工作寄存器区,会造成数据混乱。 不同作者编写程序时,初始化堆栈指令并不完全相同。 这是作者的习惯问题。 当堆栈区域被设置后,并不意味着该区域就成为了特殊的内存。 它仍然可以像普通内存区域一样使用,但一般程序员不会把它当作普通内存来使用。

6、单片机的开发流程:这里所说的开发流程并不是一般书籍中所说的从任务分析开始。 我们假设硬件已经设计并制作完成,接下来就是编写软件的工作了。 在编写软件之前,首先要确定一些常量和地址。 事实上,这些常量和地址在设计阶段就已经直接或间接确定了。 例如,当设计一个设备的接线时,它的地址就确定了。 当设备的功能确定后,其控制字也确定了。 然后使用文本编辑器(如EDIT、CCED等)编写软件。 编写完成后,用编译器对源程序文件进行编译并检查是否有错误,直到没有语法错误为止。 除了非常简单的程序外,一般都会使用仿真机来运行软件。 调试直至程序正确运行。 运行正确后即可烧写片子(将程序固化在EPROM中)。 源程序编译后,生成扩展名为HEX的目标文件。 一般程序员都可以识别这种格式的文件,只要加载这个文件就可以写入片子。 这里,为了让大家了解整个流程,这里举个例子:

微控制器测试板 ORG 0000H

LJMP 启动

奥格040H

开始:

MOV SP,#5FH; 设置堆栈

环形:

诺普

LJMP 循环; 环形

结尾; 结尾

[编辑本段]单片机学习

目前,很多人不认可汇编语言。 可以说,掌握C语言单片机编程非常重要,可以大大提高开发效率。 不过,初学者可能不懂单片机的汇编语言,但一定要了解单片机的具体性能和特点,否则在单片机领域将是致命的。 如果不考虑单片机的硬件资源,在KEIL中随意用C编程,结果只会是无法解决的问题! 可以肯定地说,最好的C语言单片机工程师都是汇编出身的程序员。 虽然微控制器的C语言是高级语言,但它与台式个人电脑上的VC++不同。 单片机的硬件资源要求不是很高。 功能强大,不像我们在台式电脑上使用VC、VB等高级语言编写程序。 毕竟台式电脑的硬件非常强大,所以我们可以忽略硬件资源的问题。 另外,在单片机编程中,虽然C语言编程方便,易于人们阅读,但其执行效率比汇编语言低10%到20%,所以用什么语言来编写程序取决于具体的场合。用过的。 一般来说,在对单片机进行编程时,必须灵活使用汇编语言和C语言,这样才能以最高的效率向用户展示单片机的强大功能。

以8051单片机为例,讲解单片机的引脚及相关功能;

《MCU引脚图》

40个引脚根据其功能大致可分为4类:电源、时钟、控制和I/O引脚。

⒈ 电源:

⑴VCC——芯片电源,接+5V;

⑵ VSS——接地端;

注意:用万用表测试单片机的引脚电压,一般为0v或5v,这是标准的TTL电平。 但有时单片机程序工作时,测试结果不是这个值而是0v-5v之间。 其实这是因为万用表的响应速度没有那么快。 在某一时刻,单片机的引脚电压仍然保持在0v或5v。

⒉ 时钟:XTAL1、XTAL2——晶振电路的反相输入输出端。

⒊ 控制线:共有4条控制线。

⑴ ALE/PROG:地址锁存使能/片内EPROM编程脉冲

① ALE功能:用于锁存P0口送来的低8位地址

② PROG 功能:对于芯片内部带有EPROM 的芯片,EPROM 编程时,该引脚输入编程脉冲。

⑵ PSEN:外部ROM读选通信号。

⑶ RST/VPD:复位/待机电源。

① RST(Reset)功能:复位信号输入端子。

② VPD 功能:Vcc 断电时连接备用电源。

⑷ EA/Vpp:内部和外部ROM选择/片内EPROM编程电源。

① EA功能:内部和外部ROM选择端。

② Vpp 功能:对于芯片内部带有EPROM 的芯片,在EPROM 编程时,施加编程电源Vpp。

⒋ 输入输出线

80C51共有4个8位并行I/O口:P0、P1、P2、P3口,共32个引脚。

P3口还有第二个功能,用于特殊信号输入输出和控制信号(属于控制总线)

5、P3口第二功能

P30 RXD串行输入口

P31 TXD 串行输出口

P32 INT0 外部中断0(低电平有效)

P33 INT1 外部中断1(低电平有效)

P34 T0 定时器计数器0

P35 T1 定时计数器 1

P36 WR 外部数据存储器写选通(低电平有效)

P37 RD 外部数据存储器读选通(低电平有效)

[编辑本段]常用单片机芯片介绍

STC单片机

STC的单片机主要基于8051内核。 它是新一代增强型微控制器。 指令代码与传统8051完全兼容,速度提高8至12倍,具有ADC、4路PWM、双串口、全球唯一ID号、良好的加密性。 、抗干扰性强。

PIC单片机:

这是该公司的产品。 其突出特点是体积小、功耗低、指令集简化、抗干扰性能好、可靠性高、模拟接口强、代码保密性好,大多数芯片都具有兼容的FLASH程序存储芯片。

EMC微控制器:

它是抖音()的产品。 很大一部分兼容PIC 8位单片机,兼容产品的资源也相对比PIC多。 价格便宜,有很多系列可供选择,但抗干扰较差。

ATMEL微控制器(51微控制器):

抖音()上有两个系列的8位微控制器:AT89和AT90。 AT89系列是8位Flash单片机,与8051系列单片机兼容,具有静态时钟模式; AT90系列微控制器具有增强型RISC结构和全静态工作模式。 ,一种内置在线可编程Flash的微控制器,也称为AVR微控制器。

51PLC系列单片机(51单片机):

该公司的单片机基于80C51内核,嵌入了断电检测、仿真、片内RC振荡器等功能。 这使得51LPC能够满足高度集成、低成本和低功耗应用设计中的各种性能要求。 要求。

微控制器:

台湾升阳半导体的微控制器价格便宜,品种多,但抗干扰性较差,适合消费类产品。

TI公司的单片机(51单片机):

德州仪器 (TI) 提供两个系列的通用微控制器。 该系列单片机是8位CMOS单片机,具有多种存储模式和外围接口模式,适用于复杂的实时控制场合; 该系列单片机是一款超低功耗、功能高度集成的16位低功耗单片机,特别适合需要低功耗的应用场合。

松瀚微控制器(SONIX):

它是抖音()制作的一款微控制器。 其中大多数是8位微控制器。 其中一些与 PIC 8 位微控制器兼容。 它们价格便宜,具有多种系统时钟分频选项,并具有 PMW ADC 内部振荡和内部噪声过滤功能。 缺点:RAM空间太小,反干扰很好。

[编辑本段]从广播世界到微控制器世界

现代计算机技术的工业革命使世界经济从资本经济到知识经济时代。 在电子世界领域,20世纪中叶的广播时代也进入了21世纪以计算机技术为中心的智能现代电子系统的时代。 现代电子系统的基本核心是嵌入式计算机系统(简称嵌入式系统),而微控制器是最典型,广泛和流行的嵌入式系统。

如果对您有帮助,请记住接受它是一个令人满意的答案,谢谢! 祝您生活愉快!

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码