80C51单片机工作原理.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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断电为止。   ??? 从上面的运行过程可以看出,用户编的程序是存放在存储器中的,前面我们已经学过存储器只能存放二进制,而用户编的程序是用字母表示的,称为源代码,这种源代码显然不能存放在存储器中,因此我们必须把源代码程序转换成二进制代码程序,这种转换过程叫编译,转换所得的二进制称为机器码。 一条源代码指令转换为机器码后,根据其复杂程度不同,可占一字节,两字节或三字节。 ??? 其中,第一字节表示该指令的意义,称为该指令的操作码,操作码是每条指令都有的,若是较复杂的指令,除了第一个字节为操作码外,其后还有一个或两个操作数,即该指令所带的参数。编译过程除了把源代码指令转换为机器代码指令外,还要指定每一条机器代码的每一个字节所在的程序存储器地址,然后再用程序固化器将编译所得的结果装入程序存储器,这样,单片机在上电复位后,控制器才能正确的从程序存储器中取出用户程序。   ??? 下面我们来看看中断程序的运行过程:假

文档评论(0)

ochengaj + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档