您的位置 首页 被动

单片机常识(二)

单片机的内外部结构分析一、延时程序分析上一次课中,我们已经知道,程序中的符号R7、R6是代表了一个个的RAM单元,是用来放一些数据的,下

单片机的内外部结构剖析

一、延时程序剖析

上一次课中,咱们现已知道,程序中的符号R7、R6是代表了一个个的RAM单元,是用来放一些数据的,下面咱们再来看一下其它符号的含义。

DELAY: MOV R7,#250   ;(6)

D1: MOV R6,#250   ;(7)

D2: DJNZ R6,D2    ;(8)

DJNZ R7,D1   ;(9)

RET        ;(10)

1.MOV:这是一条指令,意思是传递数据。提到传递,咱们都很清楚,传东西要从一个人的手上传到另一个人的手上,也便是说要有一个接受者,一个传递者和相同东西。从指令MOV R7,#250中来剖析,R7是一个接受者,250是被传递的数,传递者在这条指令中被省掉了(留意:并不是每一条传递指令都会省的,事实上大部份数据传递指令都会有传递者)。它的含义也很明显:将数据250送到R7中去,因而履行完这条指令后,R7单元中的值就应当是250。在250前面有个#号,这又是什么意思呢?这个#便是用来阐明250便是一个被传递的东西自身,而不是传递者。那么MOV R6,#250是什么意思,应当不必剖析了吧。

2.DJNZ:这是另一条指令,咱们来看一下这条指令后边跟着的两个东西,一个是R6,一个是D2,R6咱们当然已知是什么了,查一下D2是什么。D2在本行的前面,咱们已学过,这称之为标号。标号的用处是什么呢?便是给本行起一个姓名。DJNZ指令的履行进程是这样的,它将这今后边的榜首个参数中的值减1,然后看一下,这个值是否等于0,假如等于0,就往下履行,假如不等于0,就搬运,转到什么当地去呢?或许咱们已猜到了,转到第二个参数所指定的当地去(请大家用自已的话讲一下这条句子是怎样履行的)。本条指令的终究履行成果便是,在原地转圈250次。

3.履行完了DJNZ R6,D2之后(也便是R6的值等于0之后),就会去履行下面一行,也便是DJNZ R7,D1,请咱们自行剖析一下这句话履行的成果。(转去履行MOV R6,#250,一起R7中的值减1),终究DJNZ R6,D2这句话将被履行250*250=62500次,履行这么屡次同一条指令干吗?便是为了延时。

4.一个问题:假如在R6中放入0,会有什么样的成果。

二、时序剖析:

前面咱们介绍了延时程序,但这还不完善,由于,咱们只知道DJNZ R6,D2这句话会被履行62500次,可是履行这么屡次需求多长时刻呢?是否满意咱们的要求呢?咱们还不知道,所以下面要来处理这个问题。

先提一个问题:咱们校园里什么是最重要的。(铃声)校长能够出差,教师能够歇息,但校园一日无铃声必定大乱。整个校园便是在铃声的一致指挥下,步调一致,一致和谐地作业着。这个铃是按必定的时刻组织来响的,咱们能够称之为“时序时刻的次序”。一个由人组成的单位姑且要有必定的时序,核算机当然更要有严厉的时序。事实上,核算机更象一个大钟,什么时分分针动,什么时分秒针动,什么时分时针动,都有严厉的规矩,一点也不能乱。核算机要完结的事更杂乱,所以它的时序也更杂乱。

咱们已知,核算机作业时,是一条一条地从ROM中取指令,然后一步一步地履行,咱们规矩:核算机拜访一次存储器的时刻,称之为一个机器周期。这是一个时刻基准,好象咱们人用“秒”作为咱们的时刻基准相同,为什么不爽性用“秒”,多好,很习气,学下去咱们就会知道用“秒”反而不习气。

一个机器周期包含12个时钟周期。下面让咱们算一下一个机器周期是多长时刻吧。设一个单片机作业于12M晶振,它的时钟周期是1/12(微秒)。它的一个机器周期是12*(1/12)也便是1微秒。(请核算一个作业于6M晶振的单片机,它的机器周期是多少)。

MCS-51单片机的一切指令中,有一些完结得比较快,只需一个机器周期就行了,有一些完结得比较慢,得要2个机器周期,还有两条指令要4个机器周期才行。这也不难再解,不是吗?我让你扫地的履行要完结总得比要你完结擦黑板的指令时刻要长。为了恒量指令履行时刻的长短,又引进一个新的概念:指令周期。所谓指令周期便是指履行一条指令的时刻。INTEL对每一条指令都给出了它的指令周期数,这些数据,大部份不需求咱们去回忆,可是有一些指令是需求记住的,如DJNZ指令是双周期指令。

下面让咱们来核算方才的延时。首要有必要要知道晶振的频率,咱们设所用晶振为12M,则一个机器周期便是1微秒。而DJNZ指令是双周期指令,所以履行一非必须2个微秒。总共履行62500次,正好125000微秒,也便是125毫秒。

操练:规划一个延时100毫秒的延时程序。

关键剖析:1、一个单元中的数是否能够超越255。2、怎样分配两个数。

三、复位电路

任何单片机在作业之前都要有个复位的进程,复位是什么意思呢?它就象是咱们上课之前打的准备铃。准备铃一响,咱们就自动地从操场、其它当地进入教室了,在这一段时刻里,是没有教师干涉的,对单片机来说,是程序还没有开端履行,是在做准备作业。明显,准备作业不需求太长的时刻,复位只需求5ms的时刻就能够了。怎样进行复位呢?只需在单片机的RST引脚上加上高电平,就能够了,按上面所说,时刻不少于5ms。为了到达这个要求,能够用许多种方法,这儿供给一种供参阅,见图1。实践上,咱们在上一次试验的图中已见到过了。

这种复位电路的作业原理是:通电时,电容两头适当所以短路,所以RST引脚上为高电平,然后电源经过电阻对电容充电,RST端电压渐渐下降,降到必定程序,即为低电平,单片机开端正常作业。

单片机的内外部结构剖析(四)
第三个试验

上两次咱们做过两个试验,都是让P1.0这个引脚使灯亮,咱们能够想象:已然P1.0能够让灯亮,那么其它的引脚可不能够呢?看一下图1,它是8031单片机引脚的阐明,在P1.0周围有P1.1,P1.2….P1.7,它们是否都能够让灯亮呢?除了以P1最初的外,还有以P0,P2,P3最初的,数一下,总共是32个引脚,前面咱们以学过7个引脚,加上这32个这39个了。它们都以P字最初,仅仅后边的数字不相同,它们是否有什么联络呢?它们能不能都让灯亮呢?在咱们的试验板上,除了P10之外,还有P11P17都与LED相连,下面让咱们来做一个试验,程序如下:

MAIN: MOV P1,#0FFH

LCALL DELAY

MOV P1,#00H

LCALL DELAY

LJMP MAIN

DELAY:MOV R7,#250

D1: MOV R6,#250

D2: DJNZ R6,D2

DJNZ R7,D1

RET

END

将这段程序转为机器码,用编程器写入芯片中,成果怎样?通电今后咱们能够看到8只LED悉数在闪烁。因而,P10P17是悉数能够点亮灯的。事实上,凡以P最初的这32个引脚都是能够点亮灯的,也便是说:这32个引脚都能够作为输出运用,假如不必来点亮LED,能够用来操控继电器,能够用来操控其它的履行机构。

程序剖析:这段程序和前面做过的程序比较,只需两处不相同:榜首句:本来是SETB P1.0,现在改为MOV P1,#0FFH,第三句:本来是CLR P1.0,现在改为MOV P1.0,#00H。从中能够看出,P1是P1.0P1.7的全体的代表,一个P1就表明了一切的这八个管脚了。当然用的指令也不相同了,是用MOV指令。为什么用这条指令?看图2,咱们把P1作为一个全体,就把它当作是一个存储器的单元,对一个单元送进一个数能够用MOV指令。

二、第四个试验

除了能够作为输出外,这32个引脚还能够做什么呢?下面再来做一个试验,程序如下:

MAIN: MOV P3,#0FFH

LOOP: MOV A,P3

MOV P1,A

LJMP LOOP

先看一下试验的成果:一切灯悉数不亮,然后我按下一个按钮,第()个灯亮了,再按下另一个按钮,第()个灯亮了,松开按钮灯就灭了。从这个试验现象结合电路来剖析一下程序。

从硬件电路的连线能够看出,有四个按钮被接入到P3口的P32,P33,P34,P35。榜首条指令的用处咱们能够猜到:使P3口悉数为高电平。第二条指令是MOV A,P3,其间 MOV现已见,是送数的意思,这条指令的意思便是将P3口的数送到A中去,咱们能够把A当成是一个中心单元(看图3),第三句话是将A中的数又送到P1口去,第四句话是循环,便是不断地重复这个进程,这咱们已见过。当咱们按下榜首个按钮时,第(3)只灯亮了,所以P12口应当输出是低电平,为什么P12口会输出低电平呢?咱们看一下有什么被送到了P1口,只需从P3口进来的数送到A,又被送到了P1口,所以,肯定是P3口进来的数使得P12位输出电平的。P3口的P32位的按钮被按下,使得P32位的电平为低,通进程序,又使P12口输出低电平,所以P3口起来了一个输入的效果。验证:按第二、三、四个按钮,一起按下2个、3个、4个按钮都能够得到相同的定论,所以P3口确实起到了输入效果,这样,咱们能够看到,以P字最初的管脚,不只能够用作输出,还能够用作输入,其它的管脚是否能够呢?是的,都能够。这32个引脚就称之为并行口,下面咱们就对并行口的结构作一个剖析,看一下它是怎样完成输入和输出的。

并行口结构剖析:

1、输出结构

先看P1口的一位的结构示意图(只画出了输出部份):从图中能够看出,开关的翻开和合上代表了引脚输出的高和低,假如开关合上了,则引脚输出便是低,假如开关翻开了,则输出高电平,这个开关是由一根线来操控的,这根数据总线是出自于CPU,让咱们回想一下,数据总线是一根咱们共用的线,许多的器材和它连在一起,在不同的时分,不同的器材当然需求不同的信号,如某一时刻咱们让这个引脚输出高电平,并要求坚持若干时刻,在这段时刻里,核算机当然在忙个不断,在与其它器材进行联络,这根操控线上的电平未必能坚持本来的值不变,输出就会发生改变了。怎样处理这个问题呢?咱们在存储器一节中学过,存储器中是能够寄存电荷的,咱们无妨也加一个小的存储器的单元,并在它的前面加一个开关,要让这一位输出时,就把开关翻开,信号就进入存储器的单元,然后立刻封闭开关,这样这一位的状况就被保存下来,直到下一次指令让它把开关再翻开停止。这样就能使这一位的状况与其他器材无关了,这么一个小单元,咱们给它一个很形象的姓名,称之为“锁存器”。

2、输入结构

这是并行口的一位的输出结构示意图,再看,除了输出之外,还有两根线,一根从外部引脚接入,另一根从锁存器的输出接出,别离标明读引脚和读锁存器。这两根线是用于从外部接纳信号的,为什么要两根呢?本来,在51单片机中输入有两种方法,别离称为‘读引脚’和‘读锁存器’,榜首种方法是将引脚作为输入,那是真实地从外部引脚读进输入的值,第二种方法是该引脚处于输出状况时,有时需求改动这一位的状况,则并不需求真实地读引脚状况,而仅仅读入锁存器的状况,然后作某种改换后再输出。

请留意输入结构图,假如将这一根引线作为输进口运用,咱们并不能确保在任何时刻都能得到正确的成果(为什么?)参阅图2输入示意图。接在外部的开关假如翻开,则应当是输入1,而假如闭合开关,则输入0,可是,假如单片机内部的开关是闭合的,那么不论外部的开关是开仍是闭,单片机接受到的数据都是0。可见,要让这一端口作为输入运用,要先做一个‘准备作业’,便是先让内部的开关断开,也便是让端口输出‘1’才行。正由于要先做这么一个准备作业,所以咱们称之为“准双向I/O口”。

以上是P1口的一位的结构,P1口其它各位的结构与之相同,而其它三个口:P0、P2、P3则除入作为输入输出口之外还有其它用处,所以结构要稍杂乱一些,但其用于输入、输出的结构是相同的。看图()。对咱们来说,这些附加的功用不必由咱们来操控,所以咱们就不去关怀它了。

单片机内部结构剖析(五)
经过前面的学习,咱们已知单片机的内部有ROM、有RAM、有并行I/O口,那么,除了这些东西之外,单片机内部终究还有些什么,这些个琐细的东西怎样连在一起的,让咱们来对单片机内部作一个完好的剖析吧!

看图(1)(本图太大,请咱们找本书看吧,一般讲单片机的书,随意哪本都有)。从图中咱们能够看出,在51单片机内部有一个CPU用来运算、操控,有四个并行I/O口,别离是P0、P1、P2、P3,有ROM,用来寄存程序,有RAM,用来寄存中心成果,此外还有守时/计数器,串行I/O口,中止体系,以及一个内部的时钟电路。在一个51单片机的内部包含了这么多的东西。

对上面的图进行进一步的剖析,咱们已知,对并行I/O口的读写只需将数据送入到相应I/O口的锁存器就能够了,那么关于守时/计数器,串行I/O口等怎样用呢?在单片机中有一些独立的存储单元是用来操控这些器材的,被称之为特别功用寄存器(SFR)。事实上,咱们已触摸过P1这个特别功用寄存器了,还有哪些呢?看表1

符号 地址 功用介绍

B F0H B寄存器

ACC E0H 累加器

PSW D0H 程序状况字

IP B8H 中止优先级操控寄存器

P3 B0H P3口锁存器

IE A8H 中止答应操控寄存器

P2 A0H P2口锁存器

SBUF 99H 串行口锁存器

SCON 98H 串行口操控寄存器

P1 90H P1口锁存器

TH1 8DH 守时器/计数器1(高8位)

TH0 8CH 守时器/计数器1(低8位)

TL1 8BH 守时器/计数器0(高8位)

TL0 8AH 守时器/计数器0(低8位)

TMOD 89A 守时器/计数器方法操控寄存器

TCON 88H 守时器/计数器操控寄存器

DPH 83H 数据地址指针(高8位)

DPL 82H 数据地址指针(低8位)

SP 81H 仓库指针

P0 80H P0口锁存器

PCON 87H 电源操控寄存器

表1
下面,咱们介绍一下几个常用的SFR,看图2。

ACC:累加器,通常用A表明。这是个什么东西,可不能从姓名上了解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个姓名呢?或许是由于在运算器做运算时其间一个数必定是在ACC中的原因吧。它的姓名特别,身份也特别,稍后咱们将学到指令,能够发现,一切的运算类指令都离不开它。

2、B:一个寄存器。在做乘、除法时放乘数或除数,不做乘除法时,随你怎样用。

3、PSW:程序状况字。这是一个很重要的东西,里边放了CPU作业时的许多状况,借此,咱们能够了解CPU的当时状况,并作出相应的处理。它的各位功用请看表2

D7 D6 D5 DD D2 D1 D0

CY AC F0 RS1 RS0 OV P

表2

下面咱们逐个介绍各位的用处

(1)CY:进位标志。8051中的运算器是一种8位的运算器,咱们知道,8位运算器只能表明到0-255,假如做加法的话,两数相加或许会超越255,这样最高位就会丢掉,形成运算的过错,怎样办?最高位就进到这儿来。这样就没事了。

例:78H+97H(01111000+10010111)

(2)AC:半进位标志。

例:57H+3AH(01010111+00111010)

(3)F0:用户标志位,由咱们(编程人员)决议什么时分用,什么时分不必。

(4)RS1、RS0:作业寄存器组挑选位。这个咱们已知了。

(5)0V:溢出标志位。什么是溢出咱们稍后再谈吧。

(6)P:奇偶校验位:它用来表明ALU运算成果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。

例:某运算成果是78H(01111000),明显1的个数为偶数,所以P=0。

4、DPTR(DPH、DPL):数据指针,能够用它来拜访外部数据存储器中的任一单元,假如不必,也能够作为通用寄存器来用,由咱们自已决议怎样运用。

5、P0、P1、P2、P3:这个咱们现已知道,是四个并行输入/输出口的寄存器。它里边的内容对应着管脚的输出。

6、SP:仓库指针。

仓库介绍:日常日子中,咱们都留意到过这样的现象,家里洗的碗,一只一只摞起来,最晚放上去的放在最上面,而最早放上去的则放在最下面,在取的时分正好相反,先从最上面取,这种现象咱们用一句话来归纳:“先进后出,后进先出”。请咱们想想,还有什么当地有这种现象?其实举目皆是,建筑工地上堆积的砖头、资料,仓库里放的货品,都是“先进后出,后进先出”,这实践是一种存取物品的规矩,咱们称之为“仓库”。

在单片机中,咱们也能够在RAM中结构这样一个区域,用来寄存数据,这个区域寄存数据的规矩便是“先进后出,后进先出”,咱们称之为“仓库”。为什么需求这样来寄存数据呢?存储器自身不是能够按地址来寄存数据吗?对,知道了地址确实就能够知道里边的内容,但假如咱们需求寄存的是一批数据,每一个数据都需求知道地址那不是费事吗?假如咱们让数据一个接一个地放置,那么咱们只需知道榜首个数据地点地址单元就能够了(看图2)假如榜首个数据在27H,那么第二、三个就在28H、29H了。所以使用仓库这种方法来放数据能够简化操作

那么51中仓库什么当地呢?单片机中能寄存数据的区域有限,咱们不能够专门分配一块当地做仓库,所以就在内存(RAM)中拓荒一块当地,用于仓库,可是用内存的哪一块呢?仍是欠好定,由于51是一种通用的单片机,各人的实践需求各不相同,有人需求多一些仓库,而有人则不需求那么多,所以怎样分配都不适宜,怎样来处理这个问题?分欠好爽性就不分了,把分的权力给用户(编程者),依据自已的需求去定吧,所以51单片机中仓库的方位是能够改变的。而这种改变就体现在SP中值的改变,看图2,SP中的值等于27H不就适当所以一个指针指向27H单元吗?当然在真实的51机中,开端指针所指的方位并非便是数据寄存的方位,而是数据寄存的前一个方位,比方一开端指针是指向27H单元的,那么榜首个数据的方位是28H单元,而不是27H单元,为什么会这样,咱们在学仓库指令时再阐明。

其它的SFR,咱们在用届时再介绍。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/261971.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部