51单片机为什么是8位机呢
- 格式:pdf
- 大小:164.87 KB
- 文档页数:4
51单片机的结构51单片机是指一种集成了中央处理器、存储器和各种输入输出接口的单片集成电路。
它由Intel公司于1980年推出,采用了Harvard架构,是一种典型的8位单片机,无论在学校教学还是工业控制领域都得到了广泛的应用。
一、内部结构51单片机的内部结构主要由中央处理器、存储器和输入输出接口组成。
1. 中央处理器51单片机的中央处理器包含一个8位的累加寄存器A、一个8位的B寄存器、一个16位的程序计数器PC以及各种控制寄存器。
其中累加寄存器A是数据处理的核心,用于存储运算的结果。
B寄存器可用作直接寻址时的源操作数或目的操作数。
2. 存储器51单片机的存储器主要分为程序存储器和数据存储器。
程序存储器用于存储程序的指令,通常采用只读存储器(ROM)的形式。
数据存储器用于存储程序中的数据,包括RAM和各种寄存器。
3. 输入输出接口51单片机的输入输出接口包括通用输入输出口(GPIO)、串行通信口(UART)、定时器/计数器等。
GPIO用于与外部器件进行数据交互,可用于输入和输出。
UART用于与其他设备进行串行通信,常用于与计算机进行通信。
定时器/计数器可用于计时和定时中断控制。
二、工作原理51单片机的工作原理可以简单概括为:接收指令、执行指令、更新PC。
1. 接收指令51单片机从程序存储器中读取指令,并将指令暂存在指令寄存器中。
指令寄存器会将指令的地址信息传递给地址寄存器,以便读取下一条指令。
2. 执行指令51单片机根据指令的类型和操作码,执行相应的操作。
这可能涉及到对寄存器或存储器的读取、写入、算术运算、逻辑运算等。
执行的结果通常会存储在累加寄存器A中。
3. 更新PC在执行完一条指令后,51单片机会自动更新程序计数器PC的值,使其指向下一条要执行的指令地址。
这样就能够实现程序的顺序执行。
三、应用领域51单片机广泛应用于各个领域,包括嵌入式系统、家电控制、汽车电子、工业自动化等。
1. 嵌入式系统51单片机作为一种低成本、低功耗、易于开发和集成的微处理器,被广泛应用于嵌入式系统中。
第1节MCS51单片机介绍MCS51单片机是一种非常常见且广泛应用于嵌入式系统中的微控制器,它也是全球最流行的8位单片机之一。
本文将对MCS51单片机进行介绍,包括其起源、特点、应用领域以及未来的发展趋势等。
一、起源MCS51单片机最初由英特尔公司于1980年推出,其核心是Intel 8051微控制器。
当时,随着计算机技术的不断发展,市场对于小型化、低成本、低功耗的嵌入式系统需求日益增加。
MCS51单片机的出现填补了市场空白,迅速成为业界的热点。
二、特点1. 8位结构:MCS51单片机采用8位结构,这意味着处理器的每条指令都可以操作8位的数据。
这种结构在相对低成本和功耗的同时,提供了足够的计算和存储能力,适用于大多数嵌入式应用场景。
2. 可编程性:MCS51单片机具备高度的可编程性,开发者可以使用汇编语言或高级语言(如C语言)来编写程序,实现对系统的控制和管理。
这种可编程性使得MCS51单片机极其灵活和适应性强,适用于各种应用领域。
3. 存储能力:MCS51单片机具备内部存储器和外部存储器扩展能力。
内部存储器包括ROM和RAM,用于存放程序和数据。
而外部存储器可以通过扩展接口来连接更大容量的存储器,满足更高要求的应用场景。
4. 周边接口:MCS51单片机提供了大量的周边接口,包括通用输入输出引脚、串行口、定时器/计数器、中断控制器等。
这些接口可以为外围设备的连接提供便利,实现对其他硬件的控制和通信。
三、应用领域MCS51单片机广泛应用于各个领域的嵌入式系统中,包括但不限于以下几个方面:1. 家电控制:MCS51单片机的低功耗、可编程性和丰富的接口特点使得它非常适用于家电控制领域。
例如,电视、空调、洗衣机等家电产品中都可以采用MCS51单片机来实现智能控制和用户交互。
2. 工业自动化:在工业自动化领域,MCS51单片机可用于实现各种控制任务,如数据采集、温度控制、机器人控制等。
其稳定性和可靠性使得它成为工业环境中的理想选择。
摘要80C51单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。
这里介绍的是如何用80C51单片机来实现长春工业大学的毕业设计,该设计是结合科研项目而确定的设计类课题。
本系统以设计题目的要求为目的,采用80C51单片机为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。
整个系统的电路结构简单,可靠性能高。
实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。
采用的技术主要有:(1)通过编程来控制小车的速度;(2)传感器的有效应用;(3)新型显示芯片的采用关键词80C51单片机、光电检测器、PWM调速、电动小车TitleAbstract80C51 is a 8 bit single chip computer.Its easily useing and multi-function suffer large users. This article introduce the CCUT graduation design with the 80C51 single chip copmuter.This design combines with scientific research object. This system regard the request of the topic, adopting 80C51 for controling core,super sonic sensor for test the hinder.It can run in a high and a low speed or stop automatically.It also can record the time ,distance and the speed or searching light and mark automatically The electric circuit construction of whole system is simple, the function is dependable. Experiment test result satisfy the request, this text emphasizes introduced the hardware system designs and the result analyse.The adoption of technique as:(1)Reduce the speed by program the engine;(2)efficient application of the sensor;(3)The adoption of the new display chip.Keywords 80C51 single chip computer、light electricity detector、PWM speed adjusting目录摘要 (I)Abstract (II)第一章前言 (1)第二章方案设计与论证 (3)(一)直流调速系统 (3)(二)检测系统 (4)(三)显示电路 (9)(四)系统原理图 (9)第三章硬件设计 (10)(一)80C51单片机硬件结构 (10)(二)最小应用系统设计 (11)(三)前向通道设计 (12)(四)后向通道设计 (14)(五)显示电路设计 (17)第四章软件设计 (20)(一)主程序设计 (20)(二)显示子程序设计 (24)(三)避障子程序设计 (25)(四)软件抗干扰技术 (26)(五)“看门狗”技术 (28)(六)可编程逻辑器件 (29)第五章测试数据、测试结果分析及结论 (31)致谢 (32)参考文献 (33)附录A 程序清单 (34)附录B 硬件原理图 (42)第一章前言随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。
51单片机的认识何谓单片机?一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。
在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。
而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。
早期的单片机都是8位或4位的。
其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。
此后在8031上发展出了MCS51系列单片机系统。
基于这一系统的单片机系统直到现在还在广泛使用。
随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。
90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。
随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。
而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。
MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。
INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。
以后我们将用89C51来完成一系列的实验。
51单片机基本知识汇总51单片机是一种常见的微控制器,广泛应用于各种电子设备中。
本文将对51单片机的基本知识进行汇总,包括其特点、应用领域、工作原理以及相关开发工具等内容。
一、51单片机的特点51单片机是一种8位微控制器,具有体积小、功耗低、价格便宜等特点。
它采用哈佛结构,具有较好的实时性能和嵌入式系统特性。
此外,51单片机还具备较强的扩展性,可通过外部器件和接口扩展其功能。
二、51单片机的应用领域由于其成本低、易学易用的特点,51单片机在各种电子设备中被广泛应用。
比如家用电器、汽车电子、工控设备、通信设备等领域。
在家用电器中,51单片机可以用于控制空调、洗衣机、电视等设备的运行;在汽车电子方面,它可以用于控制车载音响、车灯等;在工控设备中,51单片机可用于控制机械手臂、传感器等;在通信设备方面,它可以用于控制无线路由器、手机等。
三、51单片机的工作原理51单片机的工作原理可以简单概括为:通过外部输入设备(如按键、传感器)获取输入信号,经过A/D转换后输入到单片机内部;单片机根据预先设定的程序进行运算、判断和控制,然后通过输出端口控制外部输出设备(如LED灯、电机)工作。
整个过程是通过时钟信号进行同步控制的。
四、51单片机的开发工具为了方便开发人员进行程序设计和调试,51单片机有一系列的开发工具可供选择。
常用的开发工具有Keil C51、Proteus、IAR等。
Keil C51是一种集成开发环境,提供了编译、调试、仿真等功能,可以方便地编写和调试51单片机的程序。
Proteus是一种虚拟电子电路设计与仿真软件,可用于模拟51单片机的工作过程。
IAR是一种集成开发环境,也是一种常用的编译器,适用于多种单片机开发。
总结:本文对51单片机的基本知识进行了汇总,包括其特点、应用领域、工作原理以及相关开发工具等内容。
51单片机作为一种常见的微控制器,具有广泛的应用前景。
掌握了51单片机的基本知识,可以更好地应用于各种电子设备的开发与控制。
MCS-51单片机摘要:MCS-51系列是Intel公司继MCS-48系列之后发展起来的高档8位单片机,在总结MCS-48系列及扩大应用功能的基础上,推出的MCS-51系列单片微机,扩大了片内存储器容量及外部存储器寻址空间,增强了指令及寻址功能,扩大了并行I/O口和新增设全双工串行I/O口,增加了中断源及优先级,新增了乘除法、比较和位操作等强功能指令。
克服了MCS-48系列存储器容量小、运算功能弱得不足,提高了全机的操作速度等。
(一)单片机的历史和发展1.单片机的发展史:(1)单片机的探索阶段(1974——1978年)(2)单片机的完善阶段(1978——1982年)(3)微控制器形成阶段(1982——1990年)(4)微控制器成熟阶段(1990年至今)在发展的第二阶段Intel公司推出了MCS-51系列的单片机,它在以下几个方面奠定了典型的通用总线型单片机体系结构。
(1)完善的外部总线。
MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有多机通信功能的串行通信接口。
(2)CPU外围功能单位的集中管理模式。
(3)体现工控特性的位地址空间及位操作模式。
(4)指令系统趋于完善和丰富,并且增加了许多突出控制功能的指令。
2.单片机的发展方向:综观单片机20多年的发展过程,再从半导体集成电路技术的发展和微电子设计技术的发展,可以预见未来单片机技术发展的趋势。
单片机将朝着大容量高性能化、小容量低价格化、外围电路的内装化以及I/O接口功能的增强、功耗降低等发展方向。
(二)单片机的分类单片机的通常分类方法:1.按数据总线宽度区分按单片机数据总线的宽度,可将单片机分为4、8、16、32位机。
2.按总线结构分按总线结构,单片机可分为总线型和非总线型两种。
3.按通用性分按通用性,单片机分为通用型和专用型两大类。
4.按厂商分Isuppli公司(一家全球领先的针对电子制造领域的市场研究公司)把全球MCU市场划分为三个地理区域:美国和欧州地区,日本和韩国,以及我国的大陆与台湾地区。
51单片机基本结构详解51单片机(也称为8051单片机)是一种8位微控制器,由Intel公司于1980年代推出。
它是目前市场上最广泛使用的低成本单片机之一,被广泛应用于各个领域,包括家电、工业控制、仪器仪表等。
本文将详细介绍51单片机的基本结构。
一、51单片机的总体结构51单片机的总体结构主要分为五个部分,包括中央处理器(CPU)、存储器、IO口、定时器/计数器以及串行通信接口。
1. 中央处理器(CPU)51单片机中心的核心是一个8位的CPU,负责执行指令集中的操作。
它包括一个累加器(Accumulator)用于存放运算结果,以及一组寄存器用于存放操作数和地址。
2. 存储器51单片机的存储器主要包括内部RAM和内部ROM。
内部RAM用于存放程序和数据,容量通常较小,而内部ROM则用于存储不变的程序指令。
3. IO口51单片机提供了多个通用IO口,用于与外部设备进行数据交互。
这些IO口既可以作为输入口用于接收外部信号,也可以作为输出口用于发送信号控制外部设备。
4. 定时器/计数器51单片机内置的定时器/计数器模块可用于产生精确的时间延时和计数应用。
它能够协助实现各种时间相关的功能,如PWM输出、测速和脉冲计数等。
5. 串行通信接口51单片机的串行通信接口可用于与其他设备进行数据的串行传输。
常见的串行通信协议包括UART、SPI和I2C等。
二、51单片机的工作原理51单片机的工作原理可以概括为以下几个步骤:1. 程序存储器中的指令被复制到内部RAM中。
2. CPU从内部RAM中取出指令并执行。
3. 根据指令的要求,CPU可能会与IO口、定时器/计数器或串行通信接口进行数据交互。
4. 执行完指令后,CPU将结果存回内部RAM或IO口。
三、51单片机的应用领域51单片机由于其成本低、技术成熟、易于开发和应用广泛等优点,被广泛应用于各个领域。
1. 家电控制51单片机可以用于家电控制,如空调、洗衣机、电视机等。
51单片机IO口工作原理51单片机(英文名为8051 Microcontroller)是一种由Intel公司于1980年推出的8位单片机,广泛应用于嵌入式系统中。
作为一种高性能、低功耗的单片机,其周围有多个IO口(Input/Output ports),可以用来实现数字输入、输出、模拟输入、输出等功能。
下面将详细介绍51单片机IO口的工作原理。
1.51单片机的IO口介绍51单片机共有4个8位的IO口,依次为P0、P1、P2和P3、每个IO 口都是一个8位的寄存器,称为端口寄存器(port register),用于和外部设备进行数据通信。
其中,P0是一个具有双重输入和输出特性的端口,可以配置为输入口或输出口;P1和P3是纯输出端口;P2是输入输出混合端口。
2.IO口的工作模式IO口的工作模式由P0、P1、P2和P3的寄存器位来配置。
每个IO口的寄存器位都有对应的功能和控制位,通过设置这些位可以控制IO口的工作模式和输出状态。
2.1输入模式在输入模式下,IO口作为输入口,接受来自外部器件的信号。
通过将对应的寄存器位设置为1,可以将IO口配置为输入模式。
在输入模式下,端口寄存器的位对应的为悬空状态,可以通过主动上拉或下拉方法来确保IO口的状态。
2.2输出模式在输出模式下,IO口作为输出口,通过控制寄存器位的值可以输出高电平或低电平信号。
将对应的寄存器位设置为0,可以将IO口配置为输出模式。
在输出模式下,直接修改端口寄存器的位即可改变IO口的输出状态。
对于纯输出端口,即P1和P3,更方便地改变IO口的状态可以通过直接操作对应的位。
2.3产生中断IO口还可以通过设置为中断产生源的方式来实现中断功能。
在输入模式下,将对应的寄存器位设置为1,即可配置IO口为中断输入。
当IO口检测到中断触发条件(例如边沿触发、电平触发等),会触发相应的中断服务程序(ISR)。
3.IO口的读取和写入操作为了读取和写入IO口的状态,可以直接访问相应的寄存器。
关于单⽚机位数的思考(8位、16位、32位)8位、16位、32位是指单⽚机的“字长”,也就是⼀次运算中参与运算的数据长度,这个位是指⼆进制位。
以8位为例,8位⼆进制的表达范围是0000,0000~1111,1111即⼗进制的0~255,即每次参与运算的数据最⼤不能超过255。
⽽16位机的字长是16位,其数据表达范围是0~65535,即每次参与运算的数据最⼤不能超过65535;32位单⽚机的字长是32位,其数据表达范围是0~4294967295,即每次参与运算的数据最⼤不能超过4294967295。
8位、16位、32位与单⽚机的性能密切相关,通常32位机的性能要⾼于16位机,⽽16位机的性能⼜要⾼于8位机。
为什么会这样呢?这要从2个⽅⾯来分析。
第⼀,位数不同,运算效率不同。
对于8位机⽽⾔,由于在⼀次运算中的每⼀个数都不能超过8位,因此即便如100+200=300这样的运算,它也不能⼀次完成,因为300已超过了8位所能表达的最⼤范围(255),因此,要对这样的⼀个式⼦进⾏运算,就要编写⼀段程序,将运算分步完成,最后合成起来得到⼀个正确的结果。
⽽如果采⽤16位单⽚机来运算的话,那么⼀次运算就够了,显然分步完成所需要的时间要远远⼤于单步完成所需要的时间。
同样道理,当某个运算的结果或者中间值⼤于65535时,16位机也不能⼀次运算,要分步实现它,⽽32位机则可以⼀次运算完成。
第⼆,商业因素。
通常运算能⼒越⾼,表⽰这个单⽚机性能越强,当然,价格⾼⼀些⼈们也可以接受,有了价格空间,⽣产商通常都会在这些芯⽚中提供更多的其他的功能,使得芯⽚的整体性能得到更⼤的提升。
典型的单⽚机中,80C51系列,PIC系列,AVR系列都是8位单⽚机;80C196、MSP430系列是16位机;⽽⽬前⾮常热门的ARM系列则是32位机。
另外在CSDN的讨论中的⼀些⽐较好的回答:=================================8位单⽚机,典型的是51系列的,再⾼级点⽤AVR、pic的,功能⽅⾯,似乎都不会很复杂,⼀般可能是控制类的多⼀下。
51单片机属于8位机1、处理能力的概念。
51单片机属于8位机,8位是个什么意思呢?就是CPU处理的数据是8位的。
位数的高低体现了CPU处理能力的强弱。
4位的处理器已经基本淘汰了,8位的处理器占据了低端单片机的大部分市场,32位处理器是现在兴起的嵌入式系统的主流配置,我们常用的电脑大多都是32位,64位的处理器也有,但是市场份额比较少,价格也较高。
所以我们学习的51单片机属于比较低级的单片机,会逐渐被新兴的嵌入式处理器所淘汰,但是51单片机成本低,学习资源最丰富,上手容易,对于初学者来说是很理想的用于学习的单片机。
2、存储器问题。
51单片机有两类存储器,一类是程序存储器ROM,它断电以后数据不丢失,但是必须用编程器擦除和写入程序;另一类是数据存储器RAM,它断电以后数据会丢失,但是可以用程序改写内容。
以AT89C51为例,因为它有16条地址线(P0和P2),所以它可以访问64K存储器空间(2的16次方是65535),它的ROM和RAM都是分内外的,外部存储器都需要扩展,扩展方法参见教材。
但是ROM和RAM 的内外执行方式不同,ROM的内外切换要用EA脚(31脚)的电平选择,而RAM 的切换可以直接用不同指令MOV和MOVX分开同时访问。
例如AT89C51有4K内部ROM,64K外部ROM,如果EA=1,则从内部ROM开始执行,当超出4K之后,跳转到片外4K以上的空间运行;如果EA=0,则完全在外部ROM中运行,内部ROM不再起作用。
什么意思呢?就是要么运行内部4KROM要么运行外部4KROM,内外ROM 的前4K不能同时运行,必须用EA切换。
所以一般在没有外部ROM的情况下,EA 必须接电源正极,否则程序不能运行。
我曾经因为EA悬空造成程序无法运行,苦苦思索一周才找到原因,期间因为盲目测试导致3块AT89C51损坏,教训十分惨痛,望后来者吸取教训。
RAM就不同了,AT89C51有128B内部RAM,可以扩展64K外部RAM,这两个部分的RAM可以同时被访问,注意选择不同指令即可,访问内部用MOV,访问外部用MOVX,外部RAM扩展方法参见教材。
ROM的种类除了常见的PROM(可编程ROM),还有MASK ROM、FLASH ROM 和EEPROM等种类。
MASK ROM是掩模存储器,掩模的意思就是工厂把程序直接做在芯片上了,适于不需要反复修改的大批量产品生产,成本非常低,但是用户不能更改程序,8051里就是这种ROM。
我最初接触单片机的时候,去电子市场买8051,结果商家真的卖给我了一块,回家一看,里面全都是程序,根本无法修改,现在回想起来,自己简直是个傻瓜,哪有买掩模ROM的单片机做学习和开发的?!商家也不告诉我已经烧好的程序可以干什么,害的我只能拿它当8031使了!这个教训真是好笑,希望大家一定要搞明白ROM的种类区分。
PROM有OTP(一次性编程)和允许反复擦写(用紫外线照射擦除)两种,87C51系列就是OTP的ROM;就现在的形势看,ROM有普及FLASH之势,那些用紫外线擦除的垃圾看来是要被淘汰了。
FLASH ROM可以电擦写,但必须整块擦除,写入速度快,擦写次数在1000到10万次之间(视不同类型芯片而定),事实上89C51系列的ROM就是FLASH ROM,U盘内的ROM也是,一种NAND FLASH现在广泛用于嵌入式系统中,它的存储容量大,成本低,可以实现固态硬盘的功能;EEPROM是电可擦写存储器,它是按位擦写的,可以擦写10万次以上,但擦写速度较FLASH ROM要慢,AT24C02就是EEPROM,我们用的很多智能IC卡也是。
RAM的种类有静态SRAM,动态DRAM 和SDRAM之分。
SRAM只要写入一次,有电数据就可以保持,单片机里就是SRAM,但是它的缺点就是太贵,所以单片机里的RAM都很小。
DRAM一次写入数据之后只能保持一瞬间,必须不断重写,叫做刷新,这个过程还需要相应的逻辑电路支持,很麻烦但是很便宜。
SDRAM叫做具有静态特性的动态RAM,它把逻辑刷新电路和DRAM做到了一起,它的工作方式本质是动态的,但是从外部看相当于一个SRAM,这样就不但具有静态特性而且价格便宜,我们电脑里的内存条都是SDRAM。
我自己的理解是这样的,就像爬山比赛,能力强的人呢,爬上去就不会滑下来。
但是能力不行的人站不住,只好滑下来再爬上去,反复这样,频率高了给人的感觉就好像他在山上一样。
呵呵,反正能力强的东西总是更贵一些的。
3、IO口问题。
P0口是集电极开路,所以我的实验板上给它加了上拉电阻。
上拉电阻的作用就是在基本没有电流输出的情况下将管脚电位拉到5V,这样对于外部来说是逻辑1,如果没有这个电阻,管脚电位就是0。
为什么?假如三极管关闭的情况下C-E 间电阻为100M,如果上拉电阻为10K,则分压的结果是几乎接近5V,这就是上拉的原理。
IO口的驱动能力有限,AT89C51也就不到20MA(8051连这些都没有),可以直接驱动LED(电流流入方式),但是驱动别的大电流外部设备必须加驱动电路,否则会烧毁IO口,务必注意。
迄今为止,我一共烧毁了7块AT89C51,损失了一把银子之后我终于找到了原因:一个是电源问题,电源电压超过5V或者极性颠倒都会导致芯片烧毁;另一个问题就是我在单片机供电的情况下测量P0.0脚(39脚)电位时表笔不小心连通了电源正极(40脚),而此时刚好P0.0内部MOS管开通(也就是输出0),结果直接烧毁了输出MOS管。
因为P0口是数据线,结果导致编程时数据无法写入。
这个教训最惨痛了,务必牢记。
单片机的一种绝对保密技术就是利用了这种方法,编程之后烧毁一只闲置的数据或地址管脚的输出管,造成数据无法读出,达到绝对保密的目的。
还有一点需要注意,如果要读入管脚的状态,必须先向该管脚写1,然后再读该管脚方能得到正确输入。
使用P3的第二功能之前,也要先向P3口写1,目的都是让IO口输出管关闭。
IO口详细构造请阅读51教材相关部分。
4、有关寻址方式。
相关教材中的寻址部分纯粹是找别扭,我都可以用51开发产品了,可是我现在重读这部分教材依然一头雾水,无法理解。
不理解很好,说明你大脑正常,不用去管教材所说的寻址方式到底是什么意思,你学会如何使用就行了。
其实就是对数字操作(所谓立即寻址)、对寄存器操作(所谓寄存器寻址)、对地址操作(所谓直接寻址)、对指针操作(有专用指针也有寄存器作为指针)和对位操作5种情况。
寻址方式就是告诉你一个操作什么东西的问题,没有什么高深的。
如果还是不明白就不要看这部分内容了,直接学习指令进行编程,当你编程很熟练之后,你会发现,其实它那些怪里怪气的寻址方式命名是很可笑的。
5、对中断概念的理解。
我最开始看了一个使用中断的程序之后,想了好几个晚上也没有理解什么叫中断。
这个程序的注释竟然说中断服务程序是这个程序的核心部分,我当时就茫然了——那主函数是什么?垃圾吗?在我的认识里,主函数才应该是一个程序的核心。
忘了过了多少日子,我终于明白了中断的含义。
假如你设置一只闹钟6点叫你,如果你6点准时爬起来看闹钟是不是叫你的话,那就不叫闹钟了,你成了闹钟的闹钟了。
初学者很容易不明白为什么主函数里并没有跳转到中断服务函数的指令,怎么中断服务程序就自己自动执行了呢?没错,中断不需要什么指令来启动,它会自己启动,就像定时炸弹到点就会自动爆炸一样。
什么时候启动由定时器、计数器或者外部中断决定,这是一个前台运行过程(谁表演谁就是前台嘛),你在后台看不到,后台是个设置中断的过程,决定什么情况下中断会叫你。
比如你在车站等你女朋友,你无法准确知道她什么时候来,所以后台函数是个循环——你来回踱步,焦急的等待。
当你女朋友出现的时候,她要求你停止踱步,和她去商店买衣服——这是中断服务函数。
如果你女朋友还没来,你就自己跑到商店里了,那就不叫中断了。
如果她来了你还在踱步——很不幸,系统不是跑飞就是崩溃了,呵呵。
有关中断的具体操作与设置方法,请仔细阅读51教材相关部分。
中断是单片机一个的难点,也是一个有特色之处,没有中断的话单片机就失去了全部的灵活性与实时性,变成一块用于顺序控制的数字电路了。
6、编程语言问题。
你可以用汇编编程,也可以用C51语言编程。
它们各有各的强项和弱点,选择哪种语言要根据你的基础和具体任务确定。
有个老兄这样说:汇编挺好啊,不过你用着用着就想用C51了;C51嘛,也挺好啊,不过你用着用着就想用汇编了。
呵呵,真的是这样。
我个人的理解是:汇编好写不好看,C语言好看不好写。
去看别人一段没有注释的汇编语言是一件很困难的事情,看不懂并不说明你编程水平差。
这种情况下先不要看别人的例程,根据你自己的思路编写即可,到了关键部分或是遇到障碍再看看例程,效果很好。
别人写的C语言比较好理解,因为C 语言本质上就是各种各样的函数调来调去的过程,看懂了函数,程序基本就明白了。
下面说说汇编和C各自的特点:汇编是个事必躬亲的战术语言,要干什么就直接干什么,什么事情都要直接操作硬件,所以累啊——系统倒不累,你累啊,呵呵,累死你换来的好处就是代码比较小,而且工作准确,操作决不会马马虎虎。
C语言就不同了,是个战略语言,只抓大局,一堆基层工作全给INCLUDE了,够狠,要干什么不好好干,非要拐弯抹角——比如重新运行不让用跳转(封杀GOTO 语句),非要设计一个巧妙的循环,汇编就没这么不老实。
这次你不累了,但是如果智商不够就惨了,一句都写不下去,不像汇编——就算我笨,能编多少时多少,编一点是一点。
当甩手掌柜自然不错,但是缺点也很明显:一来代码要大不少,系统资源一下就被搞紧张了;二来涉及到对硬件的具体操作就它就没招了,还得求人家汇编,呵呵。
所以汇编和C你都要掌握,大局由C定,几处需要准确处理硬件的工作交给汇编,属于瞎子背瘸子的组合,呵呵。
两手抓,两手都要硬,互相渗透,结合使用,这就是学习单片机语言的基本原则。
说了一顿,和具体编程一点关系都没有,但是原则你要把握。
汇编语言我就不说了,教材都会详细说明指令的意义和使用方法,下面我说一下C51。
C语言的具体结构和编写方法你明白了吗?没明白赶紧看书。
C51与通用C语言的区别我理解主要有两点:一是中断函数的声明与使用,二是如何在单片机里进行位操作,我的理解就这一点点,当然这与我水平比较菜有很大关系。
那么C语言如何能够认识那些单片机的寄存器呢?难道每写一个程序都先要铺天盖地的定义一番?!这个我们不怕也不用管,KEIL里有自带的包含文件来解决这个问题。
你在KEIL里写C51程序的话,上来先写一个#INCLUDE<AT89C51.H>,这一堆问题就解决了,下面你可以直接写P0=0X00,或者SCON=0X00之类,反正C语言可以认识,还能正确编译,怎么样?战略语言确实不得了,脏活全让<AT89C51.H>这个文件做了。