AT89S51单片机的内部资源有哪些,分别是怎么使用的?

AT89S51单片机的内部资源有哪些,分别是怎么使用的?,第1张

单片机对于初学者来说确实很难理解,不少学过单片机的同学或电子爱好者,甚至在毕业时仍旧是一无所获。基于此,电子发烧友网将整合《单片机关键知识点全攻略》,共分为四个系列,以飨读者,敬请期待!此系列对于业内电子工程师也有收藏和参考价值。

单片机关键知识点一览:

系列一

  点击浏览下一页1:单片机简叙

  点击浏览下一页2:单片机引脚介绍

  点击浏览下一页3:单片机存储器结构

  点击浏览下一页4:第一个单片机小程序

  点击浏览下一页5:单片机延时程序分析

  点击浏览下一页6:单片机并行口结构

  点击浏览下一页7:单片机的特殊功能寄存器

系列二

  点击浏览下一页8:单片机寻址方式与指令系统

  点击浏览下一页9:单片机数据传递类指令

  点击浏览下一页10:单片机数据传送类指令

  点击浏览下一页11:单片机算术运算指令

  点击浏览下一页12:单片机逻辑运算类指令

  点击浏览下一页13:单片机逻辑与或异或指令祥解

  点击浏览下一页14:单片机条件转移指令

系列三

  点击浏览下一页15:单片机位操作指令

  点击浏览下一页16:单片机定时器与计数器

  点击浏览下一页17:单片机定时器/计数器的方式

  点击浏览下一页18:单片机的中断系统

  点击浏览下一页19:单片机定时器、中断试验

  点击浏览下一页20:单片机定时/计数器实验

  点击浏览下一页21:单片机串行口介绍

系列四

  点击浏览下一页22:单片机串行口通信程序设计

  点击浏览下一页23:LED数码管静态显示接口与编

  点击浏览下一页24:动态扫描显示接口电路及程序

  点击浏览下一页25:单片机键盘接口程序设计

  点击浏览下一页26:单片机矩阵式键盘接口技术及

  点击浏览下一页27:关于单片机的一些基本概念

  点击浏览下一页28:实际案例实践——单片机音乐程序设计

  1:单片机简叙

  什么是单片机 一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。

  单片机是一种控制芯片,一个微型的计算机,而加上晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等那是单片机系统。

  2:单片机引脚介绍

  点击浏览下一页

  单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。

  ⒈ 电源:

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

  ⑵ VSS - 接地端;

  ⒉ 时钟: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。

⒋ I/O线

  80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。

  拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为89C51的芯片,下面我们就看一下如何给它连线。

  1、 电源:这当然是必不可少的了。单片机使用的是5V电源,其中正极接40管脚,负极(地)接20管脚。

  2、 振蒎电路:单片机是一种时序电路,必须供给脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。只要买来晶体震荡器,电容,连上就能了,按图1接上即可。

  3、 复位管脚:按图1中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。

  4、 EA管脚:EA管脚接到正电源端。 至此,一个单片机就接好,通上电,单片机就开始工作了。

  我们的第一个任务是要用单片机点亮一只发光二极管LED,显然,这个LED必须要和单片机的某个管脚相连,不然单片机就没法控制它了,那么和哪个管脚相连呢?单片机上除了刚才用掉的5个管脚,还有35个,我们将这个LED和1脚相连。(见图1,其中R1是限流电阻)

  按照这个图的接法,当1脚是高电平时,LED不亮,只有1脚是低电平时,LED才发亮。因此要1脚我们要能够控制,也就是说,我们要能够让1管脚按要求变为高或低电平。即然我们要控制1脚,就得给它起个名字,总不能就叫它一脚吧?叫它什么名字呢?设计51芯片的INTEL公司已经起好了,就叫它P10,这是规定,不能由我们来更改。

  点击浏览下一页

  图1

  名字有了,我们又怎样让它变‘高’或变‘低’呢?叫人做事,说一声就能,这叫发布命令,要计算机做事,也得要向计算机发命令,计算机能听得懂的命令称之为计算机的指令。让一个管脚输出高电平的指令是SETB,让一个管脚输出低电平的指令是CLR。因此,我们要P10输出高电平,只要写SETB P10,要P10输出低电平,只要写 CLR P10就能了。

  现在我们已经有办法让计算机去将P10输出高或低电平了,但是我们怎样才能计算机执行这条指令呢?总不能也对计算机也说一声了事吧。要解决这个问题,还得有几步要走。第一,计算机看不懂SETB CLR之类的指令,我们得把指令翻译成计算机能懂的方式,再让计算机去读。计算机能懂什么呢?它只懂一样东西——数字。因此我们得把SETB P10变为(D2H,90H ),把CLR P10变为 (C2H,90H ),至于为什么是这两个数字,这也是由51芯片的设计者--INTEL规定的,我们不去研究。第二步,在得到这两个数字后,怎样让这两个数字进入单片机的内部呢?这要借助于一个硬件工具“编程器”。如果你还不知道是什么是编程器,我来介绍一下,就是把你在电脑上写出来来的代码用汇编器等编译器生成的一个目标烧写到单片机的eprom里面去的工具,80c51这种类型的单片机编程是一件很麻烦的事情,必要要先装到编程器上编程后才能在设备上使用,而目前最新的89s51单片机居然在线编程(isp)功能,不用拔出来利用简单的电路就可以实现把代码写入单片机内部,本站有详细的at89s51编程器制作教程

  我们将编程器与电脑连好,运行编程器的软件,然后在编缉区内写入(D2H,90H)见图2,

  点击浏览下一页

  图2

  写入……好,拿下片子,把片子插入做好的电路板,接通电源……什么?灯不亮?这就对了,因为我们写进去的指令就是让P10输出高电平,灯当然不亮,要是亮就错了。现在我们再拨下这块芯片,重新放回到编程器上,将编缉区的内容改为(C2H,90H),也就是CLR P10,写片,拿下片子,把片子插进电路板,接电,好,灯亮了。因为我们写入的()就是让P10输出低电平的指令。这样我们看到,硬件电路的连线没有做任何改变,只要改变写入单片机中的内容,就能改变电路的输出效果。

  3:单片机存储器结构

  单片机内部存储结构分析

  我们来思考一个问题,当我们在编程器中把一条指令写进单片要内部,然后取下单片机,单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?这个地方就是单片机内部的只读存储器即ROM(READ ONLY MEMORY)。为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗?原来在89C51中的ROM是一种电可擦除的ROM,称为FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对ROM进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为ROM。

  数的本质和物理现象:我们知道,计算机能进行数学运算,这可令我们非常的难以理解,计算机吗,我们虽不了解它的组成,但它总只是一些电子元器件,怎么能进行数学运算呢?我们做数学题如37+45是这样做的,先在纸上写37,然后在下面写45,然后大脑运算,最后写出结果,运算的原材料:37、45和结果:82都是写在纸上的,计算机中又是放在什么地方呢?为了解决这个问题,先让我们做一个实验:这里有一盏灯,我们知道灯要么亮,要么不亮,就有两种状态,我们能用’0’和’1’来代替这两种状态,规定亮为’1’,不亮为’0’。现在放上两盏灯,一共有几种状态呢?我们列表来看一下:

  请大家自已写上3盏灯的情况000 001 010 011 100 101 110 111

  我们来看,这个000,001,101 不就是我们学过的的二进制数吗?本来,灯的亮和灭只是一种物理现象,可当我们把它们按一按的次序排更好后,灯的亮和灭就代表了数字了。让我们再抽象一步,灯为什么会亮呢?看电路1,是因为输出电路输出高电平,给灯通了电。因此,灯亮和灭就能用电路的输出是高电平还是低电平来替代了。这样,数字就和电平的高、低联系上了。(请想一下,我们还看到过什么样的类似的例程呢?(海军之)灯语、旗语,电报,甚至红、绿灯)

  什么是位:

  通过上面的实验我们已经知道:一盏灯亮或者说一根线的电平的高低,能代表两种状态:0和1。实际上这就是一个二进制位,因此我们就把一根线称之为一“位”,用BIT表示。

  什么是字节:

  一根线能表于0和1,两根线能表达00,01,10,11四种状态,也就是能表于0到3,而三根能表达0-7,计算机中常常用8根线放在一起,同时计数,就能表过到0-255一共256种状态。这8根线或者8位就称之为一个字节(BYTE)。不要问我为什么是8根而不是其它数,因为我也不知道。(计算机世界是一本人造的世界,不是自然界,很多事情你无法问为什么,只能说:它是一种规定,大家在以后的学习过程中也要注意这个问题)

  存储器的工作原理:

  1、存储器构造

  存储器就是用来存放数据的地方。它是利用电平的高低来存放数据的,也就是说,它存放的实际上是电平的高、低,而不是我们所习惯认为的1234这样的数字,这样,我们的一个谜团就解开了,计算机也没什么神秘的吗。

  点击浏览下一页

  图2

点击浏览下一页

  图3

  让我们看图2。单片机里面都有这样的存储器,这是一个存储器的示意图:一个存储器就象一个个的小抽屉,一个小抽屉里有八个小格子,每个小格子就是用来存放“电荷”的,电荷通过与它相连的电线传进来或释放掉,至于电荷在小格子里是怎样存的,就不用我们操心了,你能把电线想象成水管,小格子里的电荷就象是水,那就好理解了。存储器中的每个小抽屉就是一个放数据的地方,我们称之为一个“单元”。

  有了这么一个构造,我们就能开始存放数据了,想要放进一个数据12,也就是00001100,我们只要把第二号和第三号小格子里存满电荷,而其它小格子里的电荷给放掉就行了(看图3)。可是问题出来了,看图2,一个存储器有好多单元,线是并联的,在放入电荷的时候,会将电荷放入所有的单元中,而释放电荷的时候,会把每个单元中的电荷都放掉,这样的话,不管存储器有多少个单元,都只能放同一个数,这当然不是我们所希望的,因此,要在结构上稍作变化,看图2,在每个单元上有个控制线,我想要把数据放进哪个单元,就给一个信号这个单元的控制线,这个控制线就把开关打开,这样电荷就能自由流动了,而其它单元控制线上没有信号,所以开关不打开,不会受到影响,这样,只要控制不一样单元的控制线,就能向各单元写入不一样的数据了,同样,如果要某个单元中取数据,也只要打开对应的控制开关就行了。

2、存储器译码

  那么,我们怎样来控制各个单元的控制线呢?这个还不简单,把每个单元元的控制线都引到集成电路的外面不就行了吗?事情可没那么简单,一片27512存储器中有65536个单元,把每根线都引出来,这个集成电路就得有6万多个脚?不行,怎么办?要想法减少线的数量。我们有一种办法称这为译码,简单介绍一下:一根线能代表2种状态,2根线能代表4种状态,3根线能代表几种,256种状态又需要几根线代表?8种,8根线,所以65536种状态我们只需要16根线就能代表了。

  点击浏览下一页

  3、存储器的选片及总线的概念

  至此,译码的问题解决了,让我们再来关注另外一个问题。送入每个单元的八根线是用从什么地方来的呢?它就是从计算机上接过来的,一般地,这八根线除了接一个存储器之外,还要接其它的器件,如图4所示。这样问题就出来了,这八根线既然不是存储器和计算机之间专用的,如果总是将某个单元接在这八根线上,就不好了,比如这个存储器单元中的数值是0FFH另一个存储器的单元是00H,那么这根线到底是处于高电平,还是低电平?岂非要打架看谁历害了?所以我们要让它们分离。办法当然很简单,当外面的线接到集成电路的管脚进来后,不直接接到各单元去,中间再加一组开关(参考图4 )就行了。平时我们让开关关闭着,如果确实是要向这个存储器中写入数据,或要从存储器中读出数据,再让开关接通就行了。这组开关由三根引线选择:读控制端、写控制端和片选端。要将数据写入片中,先选中该片,然后发出写信号,开关就合上了,并将传过来的数据(电荷)写入片中。如果要读,先选中该片,然后发出读信号,开关合上,数据就被送出去了。注意图4,读和写信号同时还接入到另一个存储器,但是由于片选端不一样,所以虽有读或写信号,但没有片选信号,所以另一个存储器不会“误会”而开门,造成冲突。那么会不一样时选中两片芯片呢?只要是设计好的系统就不会,因为它是由计算控制的,而不是我们人来控制的,如果真的出现同时出现选中两片的情况,那就是电路出了故障了,这不在我们的讨论之列。

使用51单片机需要达到以下基本条件:

1、至少要搭建一个最小系统;

2、你需要编制一个51的控制程序;

3、你需要将程序编译连接成HEX或BIN格式的代码并下载或烧录到51单片机。

这样你就可以使用这款51单片机了。

1单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。

很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。

单片机的应用在后PC时代得到了前所未有的发展,但对处理器的综合性能要求也越来越高。综观单片机的发展,以应用需求为目标,市场越来越细化,充分突出以“单片”解决问题,而不像多年前以MCS51/96等处理器为中心,外扩各种接口构成各种应用系统。单片机系统作为嵌入式系统的一部分,主要集中在中、低端应用领域(嵌入式高端应用主要由DSP、ARM、MIPS等高性能处理器构成),在这些应用中,目前也出现了一些新的需求,主要体现在以下几个方面:

(1)以电池供电的应用越来越多,而且由于产品体积的限制,很多是用钮扣电池供电,要求系统功耗尽可能低,如手持式仪表、水表、玩具等。

(2)随着应用的复杂,对处理器的功能和性能要求不断提高。既要外设丰富、功能灵活,又要有一定的运算能力,能做一些实时算法,而不仅仅做一些简单的控制。

(3)产品更新速度快,开发时间短,希望开发工具简单、廉价、功能完善。特别是仿真工具要有延续性,能适应多种MCU,以免重复投资,增加开发费用。

(4)产品性能稳定,可靠性高,既能加密保护,又能方便升级。

-------------------------------------------------

1 单片机技术的发展特点

自单片机出现至今,单片机技术已走过了近20年的发展路程。纵观20年来单片机发

展历程可以看出,单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发

展为先导,以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。

单片机长寿命 这里所说的长寿命,一方面指用单片机开发的产品可以稳定可靠地工作

十年、二十年,另一方面是指与微处理器相比的长寿命。随着半导体技术的飞速发展,

MPU更新换代的速度越来越快,以386、486、586为代表的MPU,很短的时间内就被淘汰出

局,而传统的单片机如68HC05、8051等年龄已有15岁,产量仍是上升的。这一方面是由

于其对相应应用领域的适应性,另一方面是由于以该类CPU为核心,集成以更多I/O功能

模块的新单片机系列层出不穷。可以预见,一些成功上市的相对年轻的CPU核心,也会随

着I/O功能模块的不断丰富,有着相当长的生存周期。新的CPU类型的加盟,使单片机队伍

不断壮大,给用户带来了更多的选择余地。

8位、16位、32位单片机共同发展 这是当前单片机技术发展的另一动向。长期以来,单

片机技术的发展是以8位机为主的。随着移动通讯、网络技术、多媒体技术等高科技产品

进入家庭,32位单片机应用得到了长足发展。以Motorola 68K为CPU的32位单片机97年的

销售量达8千万枚。过去认为由于8位单片机功能越来越强,32位机越来越便宜,使16位

单片机生存空间有限,而16位单片机的发展无论从品种和产量方面,近年来都有较大幅

度的增长。

单片机速度越来越快 MPU发展中表现出来的速度越来越快是以时钟频率越来越高为标志

的。而单片机则有所不同,为提高单片机抗干扰能力,降低噪声,降低时钟频率而不牺

牲运算速度是单片机技术发展之追求。一些8051单片机兼容厂商改善了单片机的内部时

序,在不提高时钟频率的条件下,使运算速度提高了很多,Motorola单片机则使用了琐

相环技术或内部倍频技术使内部总线速度大大高于时钟产生器的频率。68HC08单片机使

用49M外部振荡器而内部时钟达32M,而M68K系列32位单片机使用32K的外部振荡器频率

内部时钟可达16MHz以上。

低电压与低功耗 自80年代中期以来,NMOS工艺单片机逐渐被CMOS工艺代替,功耗得以

大幅度下降,随着超大规模集成电路技术由3μm工艺发展到15、12、08、05、035

近而实现02μm工艺,全静态设计使时钟频率从直流到数十兆任选,都使功耗不断下降

。Motorola 最近推出任选的MCORE 可在18V电压下以50M/48MIPS全速工作,功率约为

20mW。几乎所有的单片机都有Wait、Stop等省电运行方式。允许使用的电源电压范围也

越来越宽。一般单片机都能在3到6V范围内工作,对电池供电的单片机不再需要对电源采

取稳压措施。低电压供电的单片机电源下限已由27V降至22V、18V。09V供电的单片

机已经问世。

低噪声与高可靠性技术 为提高单片机系统的抗电磁干扰能力,使产品能适应恶劣的工

作环境,满足电磁兼容性方面更高标准的要求,各单片机商家在单片机内部电路中采取

了一些新的技术措施。如美国国家半导体NS的COP8单片机内部增加了抗EMI电路,增强了

“看门狗”的性能。Motorola也推出了低噪声的LN系列单片机。

OTP与掩膜 OTP是一次性写入的单片机。过去认为一个单片机产品的成熟是以投产掩膜

型单片机为标志的。由于掩膜需要一定的生产周期,而OTP型单片机价格不断下降,使得

近年来直接使用OTP完成最终产品制造更为流行。它较之掩膜具有生产周期短、风险小的

特点。近年来,OTP型单片机需量大幅度上扬,为适应这种需求许多单片机都采用了在片

编程技术(In System Programming)。未编程的OTP芯片可采用裸片Bonding技术或表面贴

技术,先焊在印刷板上,然后通过单片机上引出的编程线、串行数据、时钟线等对单片

机编程。解决了批量写OTP 芯片时容易出现的芯片与写入器接触不好的问题。使OTP的裸

片得以广泛使用,降低了产品的成本。编程线与I/O线共用,不增加单片机的额外引脚。

而一些生产厂商推出的单片机不再有掩膜型,全部为有ISP功能的OTP。

MTP向OTP挑战 MTP是可多次编程的意思。一些单片机厂商以MTP的性能、OTP的价位推出

他们的单片机,如ATMEL AVR单片机,片内采用FLASH,可多次编程。华邦公司生产的与

8051兼容的单片机也采用了MTP性能,OTP的价位。这些单片机都使用了ISP技术,等安装

到印刷线路板上以后再下载程序。

-----------------------------------------------

8051类单片机 最早由Intel公司推出的8051/31类单片机也是世界上用量最大的几种单

片机之一。由于Intel公司在嵌入式应用方面将重点放在186、386、奔腾等与PC类兼容的

高档芯片的开发上,8051类单片机主要由Philips、三星、华邦等公司接产。这些公司都

在保持与8051单片机兼容的基础上改善了8051许多特性(如时序特性)。提高了速度、降

低了时钟频率,放宽了电源电压的动态范围,降低了产品价格。

一 总体设计 1需求分析:了解并确定需求。例如确定需测的数据量及路数,确定需控制的对象及对象数量。

2.方案确定 : 确定用什么样的方式满足需求,是用plc还是用单片机,当确定用单片机之后,还需具体确定是2051还是8031或8051,当然还要确定是哪个公司的产品,是Atmel公司的、还是motorola的产品。选定这些时,除了考虑芯片的性能之外,还要考虑经济因素(看哪种最便宜)。

二.详细设计 1选电路

根据环境的需要选择合适的电路。比如,用8051达到控制目的时,要选择是用并口还是串口输出;同样是驱动大功率电路时,使用可控硅还是继电器。这些选择都要根据具体的环境条件和电路参数来决定。如不适合用继电器的地方,必须考虑其他的方式。

2制电路板: 用Protel软件先制原理图,再封装,制PCB电路版,然后经过打印,转印,腐蚀,焊接等工序后,制出实际的电路板。这一步中的部分工序,我们将在下一学期学习Protel之后自然会明白。

三.调试 1粗调:用简单程序,分别对各个功能模块调试,看能否完成指定任务。这一步的主要目的是看电路是否可用,比如要LED显示相应数值,如果不能正常显示,则需检查相应电路。

2编程调试:在粗调无误的情况下,用编好的程序对整个系统调试。当编程任务相当繁重时,要会用程序功能块组合,适当调整功能块的参数,适应当前任务。在本步调试过程中,我们会用到编程器、防真器等工具。

四.编写文档

文档对一个系统而言是非常重要的,它帮助考官理解系统的独特之处,又可适当增加别人对你的系统的兴趣。如果说总体设计是好的开头,那么好的文档就是好的结尾。编写文档要忠实于原设计方案,不能夸大也不必谦虚,要理清设计思路,并让读者从中了解系统“好”在哪里。

结论:通过以上我的讲述可知,在整个系统开发过程中,用到我们已学的课程有:《数字电路》,《模拟电路》,《电工学》,《单片机应用》,《Protel》,等。我们只要经过短期的培训,就可以成为一个控制系统开发人员。由此可见,单片机系统开发并不象以前我们想象的那样难。只要综合应用我们所学的知识,我们可以很快成为一个系统开发方面的专业人员。

学习单片机的最有效方法是理论与实践并重

对一个初学单片机的人来说,如果按教科书式的学法,上来就是一大堆指令、名词,学了半天还搞不清这些指令起什么作用,能够产生什么实际效果,那么也许用不了几天就会觉得枯燥乏味而半途而废。所以学习与实践结合是一个好方法,边学习、边演练,循序渐进,这样用不了几次就能将用到的指令理解、吃透、扎根于脑海,甚至“根深蒂固”。也就是说,当你此次学习完某几条指令后(一次数量不求多,只求懂),接下去就该做实验了,通过实验,使你感受刚才的指令产生了控制效果,眼睛看得见(灯光)、耳朵听得到(声音),更能深刻理解指令是怎样转化成信号去控制电子产品的。说句过分的话,单片机与其说是学出来的,还不如说是做实验练出来的,何况做实验本身也是一种学习过程。《电子制作》2003~2004的《手把手教你学单片机》讲座就是基于这样一种边学边练的理念展开的,从众多的读者反馈来看,效果特别好,许多读者经3~6个月的学习已能开发简单的产品了(如霓红灯广告牌控制、累加计数器等)。

学习单片机要合理安排学习时间持之以恒

学习单片机可不能“三天打鱼、二天晒网” ,要有持之以恒的毅力与决心,学习完几条指令后,就应及时做实验,融会贯通,而不要等几天或几个星期有时间后再做实验,这样效果不好甚至前学后忘。另外要有打“持久战” 的心理准备,不要兴趣来时学上几天,无兴趣时凉上几星期。学习单片机很重要的一点就是持之以恒。

学习单片机要使用循环学习法使之根深蒂固

《手把手教你学单片机》讲座入门起点低,很多朋友觉得好学、易学,很快就能将讲座从头至尾学完、学懂,但过了几个月,在开发产品时对指令的具体作用就有些淡忘了。根据现代科学的研究,对只短暂学过一遍的知识,充其量只比浮光掠影稍好。因此,较好的方法是,过一段时间后(1~2个月)再重新做一遍,这样反复循环几次就能彻底弄懂消化,永不忘却。有道是:若人生能细看《水浒传》10遍,那么里面的故事内容、人物场情将永生不忘。

学习单片机要进行适当投资购买实验器材及书籍资料

单片机技术是一门含金量高的技术,一旦学会后,它给你带来的效益回报当然也高,无论是应聘求职还是自起炉灶开厂办公司,其前景是光明无限。因此在学习时要舍得适当投资购买必要的学习、实验器材,另外还要经常去科技图书店看看,购买一些适合自己学习、提高的书籍。总之,春天不播种哪来秋天的收获?考虑到初学者的学习成本,《手把手教你学单片机》讲座主要采用“程序完成后软件仿真→单片机烧录程序→试验板通电实验”的方法(现在的快闪型单片机其程序可烧写1000次以上),而没有采用价格昂贵的在线仿真器(ICE)进行实验,这样整套实验器材(不包括PC机)只有几百元,对大部分已工作的爱好者来说都有这个经济能力承受。一旦当你掌握了单片机的编程技术,成为一个水平较高的单片机设计人员时,再买在线仿真器也不迟。

准备:

单片机烧录器

单片机仿真器

单片机(89c2051,便宜)

软件(Keil)

1、先找本单片机入门的书来看,对于寄存器不必很深的了解

2、照书上的电路图搭好电路(复位、晶振、IO……)

3、将书上的范例程序烧入单片机跑(或者仿真,看程序运行)

4、当你做完IO流水灯实验、串口收发数据实验,再回去看书,能有更深的体会。

5、高级应用的书,或者做更多的东西~~

记得加我的分啊,谢谢了!!!!!!!!!!!!!!!

可以,c和汇编的底层就是机器语言,也就是二进制,c和汇编的出现就是程序员感觉使用直接使用二进制繁琐,整出来的,效率提高不是一点半点,如果说某个程序用机器语言编写,要1个月,那么汇编可以缩短几天,c则最少缩短到10天(当然,越底层,效率越好)。一般,程序生成的hex文件就是二进制代码,你看以打开看看,基本就是天书。表达不对,很正常,单片机就是在调试中完成的,不可能每次都一次成功,所以强调动手,动手。熟练前,多练习逻辑。表达只是基础问题,学的越深,每个层次的要求都不同

你给的信息太有限,

我需要知道你的单片机的具体型号,还有你创建工程的属性。

我先猜一下:

你用的是stc增强型52单片机,除了自带的256字节内存还有256字节的扩展内存,并且你在工程属性里面选择的是大内存模式(large:

variables

in

xdata

)这样在你定义内存的时候如果不加data,idata,pdata关键字的话,默认就是xdata。这用的是外部ram,是通过p0和p2口用总线模式扩展芯片得到的,可访问64k的内存空间。但是stc增强型52内置了256字节(某些版本会更大,我猜你用的是256的),默认访问方式一样,但是被stc集成到了片内。你定义了一个a[160]一个b[160],加起来远远超过256按你的说法,有用的是160+48(这里你又有一个表达错误,a[0]~a[47]应该是48个。)=208个,算上你其他地方定义的变量,应该满256个,那么a[48]~a[159]是怎么出现的呢,理论上是从p0口读回来的。但是这里你还有一个不严谨的地方,不知道你有没有证明到底是a[48]~a[159]全部成为了0xff还是b[48]~b[159]早早的就成为了0xff。

处理办法一:内存模式先改成small:variables

in

data

这时你应该都无法通过编译。

然后改变这句话:void

copy2(char

a[160])

变成

void

copy2(char

pdata

a[160])

方法二:直接改

char

b[160]=

变成

char

code

b[160]=

试试看。

如果猜错了,请别笑话我。

单片机使用方法主要有以下几步:

1选择合适的单片机,根据需求识别每个芯片的功能及其特性;

2编写程序,根据需求编写程序,并将程序烧录到单片机;

3硬件连接,根据需求连接单片机的外围电路,完成对外部设备的控制;

4系统调试,对单片机进行调试,完成系统的最终功能。

拓展:单片机使用过程中,需要注意的是单片机的程序空间,如果程序空间不够,则需要考虑采用外部存储器等技术;同时,也要注意单片机的源程序和编译后的程序,以及单片机烧录程序的安全性,否则可能会破坏单片机的功能。

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/langman/485019.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-30
下一篇2023-06-30

发表评论

登录后才能评论

评论列表(0条)

    保存