您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 电气技术 > 80C51单片机的工作原理
8051单片机的工作原理我们已经知道8051内部个部件之间是通过时钟信号来协调同步工作的。所以我们在学习工作原理之前先来学习片内振荡器及时钟信号的产生。8051芯片内部有一高增益反相放大器,用于构成振荡器,反向放大器输入端为XTAL1,输出端XTAL2。在XTAL1和XTAL2两端跨接一个石英晶体及两个电容就构成了稳定自激振荡器,电容器C1和C2通常都取30pF左右,对振荡频率有微调作用。振荡频率范围是1.2-12MHZ。8051也使用外部震荡脉冲信号,由XTAL2端引脚输入,XTAL1端接地,外部震荡脉冲源方式常用于多块8051同时工作,以便于同步。晶体振荡器的振荡信号从XTAL2端输出到片内的时钟发生器上,时钟发生器是一个二分频触发电路,它将振荡器的信号频率fosc除以2,向CPU提供两相时钟信号P1和P2。时钟信号的周期称为机器状态时间S,CPU就以两相时钟P1和P2为基本节拍指挥8051单片机各个部件协调地工作。除时钟周期外,还有两个与时间有关的概念叫机器周期和指令周期。计算机的一条指令由若干个字节组成。执行一条指令需要多少时间则以机器周期为单位。所谓一个机器周期就是指CPU访问存储器一次所需要的时间。例如取指令,读存储器,写存储器等等。MCS-51的一个机器周期为12个振荡周期,分为六个S状态,S1-S6.而每个状态又分为两拍,称为P1和P2。因此,一个机器周期中的12个振荡周期表示为S1P1,S1P2,S2P1等直到S6P2.若采用6MHZ晶体振荡器,则每个机器周期恰为2us。每条指令都由一个或几个机器周期组成。在MCS-51系统中,有单周期指令,双周期指令。四周期指令只有乘,除两条指令。指令的运算速度和它的机器周期直接相关,机器周期数较小则执行速度快。在编程时要注意选用具有同样功能而机器周期数小的指令。每一条指令的执行都可以包括取指和执行两个阶段。在取指阶段,CPU从内部或者外部ROM中取出指令操作码及操作数,然后再执行这条指令。在8051指令系统中,根据各种操作的繁简程度,其指令可由单字节,双字节和三字节组成。从机器执行指令的速度看,单字节和双字节指令都可能是单周期或双周期,而三字节指令都是双周期,只有乘,除指令占四个周期,一条指令的字节数表征这条指令在存储器中所占空间大小,而周期数表征运行这条指令所花时间长短,即运行速度。下面我们来看看一段具体的程序为例来说明8051的工作原理:(如下图)这段程序的意思是把内部数据存储器30H单元和31H单元的两个数相加,把所得的结果存入32H单元中。第一条指令的意思:将数据19H存入内部数据存储器30H单元。第二条指令的意思:将数据68H存入内部数据存储器31H单元。第三条指令的意思:从内部数据存储器30H单元中取一个数送往累加器。第四条指令的意思:内部数据存储器31H单元的内容和累加器的内容相加,并把结果保存在累加器中。第五条指令的意思:把累加器的结果送入内部数据存储器的32单元中保存。最后一条指令的意思是:跳转到本条指令,关于这条指令在汇编语言里面讲解,现在我们只把这段指令当作结束指令看待。在明白这段程序的意义后,我们来回顾一下前面所学的有关计算机工作过程的知识:首先是系统上电复位,复位后,程序计数器PC的值为0000H,控制器从PC中取出第一条指令地址,根据这个地址到程序存储器中取出第一条指令操作码,对该操作码进行译码,以确定本条指令是否还有未取完的操作数,以及本条指令的意义。然后改变PC的指向下一条指令在程序存储器中的地址。接下来就运行本条指令规定的操作,再然后又是从PC中取出第二条指令的地址,从程序存储器中取出第二指令的操作码,如此不断循环下去,直到用户关机,即CPU断电为止。从上面的运行过程可以看出,用户编的程序是存放在存储器中的,前面我们已经学过存储器只能存放二进制,而用户编的程序是用字母表示的,称为源代码,这种源代码显然不能存放在存储器中,因此我们必须把源代码程序转换成二进制代码程序,这种转换过程叫编译,转换所得的二进制称为机器码。一条源代码指令转换为机器码后,根据其复杂程度不同,可占一字节,两字节或三字节。其中,第一字节表示该指令的意义,称为该指令的操作码,操作码是每条指令都有的,若是较复杂的指令,除了第一个字节为操作码外,其后还有一个或两个操作数,即该指令所带的参数。编译过程除了把源代码指令转换为机器代码指令外,还要指定每一条机器代码的每一个字节所在的程序存储器地址,然后再用程序固化器将编译所得的结果装入程序存储器,这样,单片机在上电复位后,控制器才能正确的从程序存储器中取出用户程序。下面我们来看看中断程序的运行过程:假定该单片机的EA引脚接高电平,程序存储器使用片内程序存储器,单片机上电,复位电路产生复位脉冲,内部复位检测电路检测到复位信号,对8051复位,同时,震荡器开始工作,产生钟信号。CPU开始运行第一条指令。PCH送高八位地址总线,PCL送低八位地址总线,PC加1,发内部程序存储器读信号,内部程序存储器送出第一条指令的操作码,将操作码放于指令寄存器1中,撤除内部程序存储器读信号,指令译码。译码结果为:将操作数1作为内部数据存储器的地址,并将操作数2送入该单元中,三字节指令,PCH送高八位地址总线,PCL送低八位地址总线,PC加1,发内部程序存储器读信号,内部程序存储器送出第一条指令的操作数1,将操作码放于指令寄存器1中,撤除内部程序存储器读信号;PCH送高八位地址总线,PCL送低八位地址总线,PC加1,发内部程序存储器读信号,内部程序存储器送出第一条指令的操作数2,,将操作码放于指令寄存器2中,撤除内部程序存储器写信号。第一条指令到此结束,结果是数据19H被送入30H单元中。CPU开始运行第二条指令。PCH送高八位地址总线,PCL送低八位地址总线,PC加1,发内部程序存储器读信号,内部程序存储器送出第二条指令的操作码,将操作码放于指令寄存器1中,撤除内部程序存储器读信号,指令译码。译码结果为:将操作数1作为内部数据存储器的地址,并将操作数2送入该单元中,三字节指令,PCH送高八位地址总线,PCL送低八位地址总线,PC加1,发内部程序存储器读信号,内部程序存储器送出第二条指令的操作数1,将操作码放于指令寄存器1中,撤除内部程序存储器读信号;PCH送高八位地址总线,PCL送低八位地址总线,PC加1,发内部程序存储器读信号,内部程序存储器送出第二条指令的操作数2,,将操作码放于指令寄存器2中,撤除内部程序存储器读信号。将操作数1送内部数字总线低8位,将操作数2送数据总线,发内部数据存储器写信号,操作数2存入存储器30H单元,撤除内部程序存储器写信号,第二条指令运行完毕,结果是数据68H被送入31H单元中。CPU开始运行第三条指令。PCH送高八位地址总线,PCL送低八位地址总线,PC加1,发内部程序存储器读信号,内部程序存储器送出第三条指令的操作码,将操作码放于指令寄存器1中,撤除内部程序存储器读信号,指令译码。译码结果为:将操作数1作为内部数据存储器的地址,并将操作数2送入累加器,两字节指令,PCH送高八位地址总线,PCL送低八位地址总线,PC加1,发内部程序存储器读信号,内部程序存储器送出第三条指令的操作数1,,将操作数放于指令寄存器1中,撤除内部程序存储器读信号;将累加器A的地址送上内部地址总线,操作数1送内部总线,发内部数据存储器写信号,操作数1存入累加器A,撤除内部程序存储器写信号,第三条指令运行完毕,结果是30H单元中的内容19H被送入累加器A中。下面开始运行第四条指令。PCH送高八位地址总线,PCL送低八位地址总线,PC加1,发内部程序存储器读信号,内部程序存储器送出第四条指令的操作码,将操作码放于指令寄存器1中,撤除内部程序存储器读信号,指令译码。译码结果为:将操作数1作为内部数据存储器的地址,并将该单元的内容与累加器相加且结果放入累加器中,两字节指令,PCH送高八位地址总线,PCL送低八位地址总线,PC加1,发内部程序存储器读信号,内部程序存储器送出第四条指令的操作数1,将操作数放于指令寄存器1中,撤除内部程序存储器读信号;发累加器送暂存器2的信号,累加器的内容送往暂存器2并锁存,指令寄存器的内容,即操作数1送暂存器1并锁存,发加操作信号,运算器将暂存器1和暂存器2的内容将加,将所得结果送累加器,第四条指令运行完毕,其结果是31H单元中的数据68H和累加器中的数据19H相加,所得结果81H被送入累加器A中。下面开始运行第五条指令。PCH送高八位地址总线,PCL送低八位地址总线,PC加1,发内部程序存储器读信号,内部程序存储器送出第五条指令的操作码,将操作码放于指令寄存器1中,撤除内部程序存储器读信号,指令译码。译码结果为:将操作数1作为内部数据存储器的地址,并将累加器中的内容送入该单元中,二字节指令,PCH送高八位地址总线,PCL送低八位地址总线,PC加1,发内部程序存储器读信号,内部程序存储器送出第五条指令的操作数1,,将操作码放于指令寄存器1中,撤除内部程序存储器读信号;将累加器地址送上地址总线,发内部数据存储器信号,累加器的内容送往数据总线并锁存,将操作数1送内部地址总线低8位,发内部数据存储器读信号,累加器的内容送往数据总线并锁存,将操作数1送内部地址总线低8位,发内部数据存储器写信号,数据总线上的数据存入32H单元,撤除内部程序存储器写信号,第五条指令运行完毕,其结果是累加器A中的数据81H被送往32H单元。下面开始运行第六条指令。PCH送高八位地址总线,PCL送低八位地址总线,PC加1,发内部程序存储器读信号,内部程序存储器送出第六条指令的操作码,将操作码放于指令寄存器1中,撤除内部程序存储器读信号,指令译码。译码结果为:将操作数1送给PCH,操作数2送给PCL。三字节指令,PCH送高八位地址总线,PCL送低八位地址总线,PC加1,发内部程序存储器读信号,内部程序存储器送出第六条指令的操作数1,将操作码放于指令寄存器1中,撤除内部程序存储器读信号,PCH送高八位地址总线,PCL送低八位地址总线,PC加1,发内部程序存储器读信号,内部程序存储器送出第六条指令的操作数2,将操作码放于指令寄存器2中,,撤除内部程序存储器读信号,将操作数1送给PCH,操作数2送给PCL,第六条指令到此结束,其结果是将本条指令所在地址送给PC,即跳转到本条指令。下面运行第七条指令。大家可能已经看出来了,CPU现在实际上已经进入死循环,它会连续不断的运行最后这条指令,直到用户关机。单片机网址:
本文标题:80C51单片机的工作原理
链接地址:https://www.777doc.com/doc-2897762 .html