单片机读书报告.doc_第1页
单片机读书报告.doc_第2页
单片机读书报告.doc_第3页
单片机读书报告.doc_第4页
单片机读书报告.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

专业读书课程读书心得读PIC单片机入门与实战有感课程名称: 单片机原理与接口技术院 系: 班 级: 姓 名: 学 号: 指导教师: 阅读时间: 分 数: 5一、 读书目的 PIC单片机入门与实战这本书与课本非常贴近,在内容上既相互联系又有不同的侧重,通过阅读这本书,可以和课本相互印证并补充学习的遗漏,加强对PIC单片机的认识,加深对课本内容特别是对中断机制、定时器TMR0和数/模转换模块及其使用这部分内容的理解。二、 读书内容中断机制 39页到 46页;定时器TMR0 192页到205页;A/D转换模块及其使用 221页到257页。三、 心得体会 PIC16F877单片机的中断逻辑计算机所执行的主程序是按照实际需要预先编制好的,其过程和结果是可以预见的。但计算机在执行主程序的过程中,可能临时有非常紧急或必须完成的程序需要去执行,这种突发事件是不可预见的,不知它将在什么时候发生。这时就需要针对这种突发事件有一个特定的机制去告诉计算机在这个时候去做什么和怎么去做,而且不能对正在执行的主程序有影响和在完成突发事件后应该继续执行主程序,这种特定的机制就是中断机制。中断机制是PIC中档系列单片机的一个重要的性能提升,是可以提高计算机工作效率的一项重要功能,其功能的强弱直接标志着系统结构的好坏。由课本和PIC单片机入门与实战中的关于中断的描述并结合老师的讲解我总结出中断的一般过程:(1)总中断使能位GIE处于置位状态;(2)中断源发出中断请求,即使中断标志位IF置位;(3)单片机查询中断标志位,若相应的中断使能位IE处于置位状态,则系统响应中断(GIE是总开关,IE是分开关,只有GIE和IE同时置位,系统才可能响应中断);(4)若系统响应中断,则会将当前程序计数器PC的值进行压栈,存在堆栈栈顶;(5)计算机硬件将总中断使能位GIE和中断标志位IF清零(这样其他中断请求就暂时不会被响应);(6)程序计数器PC加载中断矢量0x0004;(7)对工作寄存器W、状态寄存器STATUS和寄存器PLATH以及其他寄存器进行保护;(8)执行中断程序;(9)对工作寄存器W、状态寄存器STATUS和寄存器PLATH以及其他寄存器进行恢复;(10)中断返回,总中断使能位GIE重新置位;(11)堆栈自动弹出栈顶的原PC值到PC指针中,主程序继续执行。 能使PIC单片机发生中断的中断源有很多,但中断入口却只有一个即0x004处。这是多对一的关系,若是多个中断一起执行就会造成混乱,此时就需要设置中断的优先级别,使其变成一对一,按优先级别响应,优先级高的先响应。前面说了中断程序不能影响主程序运行,那该怎么做呢?显然,我们应该设计一个程序在中断程序执行前将主程序的数据保护起来,而且在中断程序结束后还要再将其恢复过来。我认为这个过程应该是中断程序中最重要的,弄好了这个程序才不会影响主程序和中断程序的运行。前面的(7)和(9)分别对应的就是中断现场的保护和恢复。因为PIC单片机中没有任何指令可以操作堆栈,堆栈区的作用只是保存PC指针的值,当发生中断时,当前PC值会压栈保存在栈顶,原栈顶及其以下单元会顺序下移,最后一个单元被抛弃;中断结束,从堆栈中弹出栈顶的值即原PC的值到PC指针中,程序从中断处继续执行。既然堆栈不能保护普通寄存器,那么就只能将这些寄存器的内容复制到其他地方做一个备份,在中断结束后再将这些已备份的内容复制回原相应的寄存器,以达到保护作用。W和STATUS寄存器是在中断服务程序中一定会被用到的,因此必须被保护;对于程序超过一个页面的PCLATH寄存器也必须被保护。由于W寄存器在数据传输中会被用到,所以要首先保护它,其次是STATUS寄存器,再后是PCLATH寄存器,最后是才是其他需要保护的寄存器。那么将这些寄存器备份到哪里呢?在课本第29页有一个表,即PIC16F877单片机的RAM数据存储器表,在这个表中 体0 一列中地址0x700x7F这16被叫做快速存取单元,这16个地址单元无论当前体设定在哪里,单片机指令都能正确找到,那么这就是对寄存器备份的最好的地方,因为这里找起来既快又方便。在中断现场的恢复时,寄存器的恢复顺序基本与中断现场保护时相反:先恢复其他寄存器,然后依次是PCLATH寄存器、STATUS寄存器,最后是才是W寄存器。在在恢复W寄存器时要注意不能使用MOVF指令,因为该指令会影响STATUS寄存器的Z标志位(参照课本第44页),这显然是不行的,它违背了初衷,而学过的数据传输指令中符合条件的只有SWAPF这条指令了。因此,恢复W寄存器就只能使用使用两条SWAPF语句了。其实,为了编程方便我们可以在W寄存器的保护和恢复中都使用两条SWAPF语句。TMR0定时器就可以产生中断,而且它的优先级在我们所学中是最高的,它的中断标志位是T0IF。那它是怎样产生中断的呢?首先,我们应该知道定时器是什么,实际上定时器就是一个脉冲计数器,若脉冲源来自与单片机内部就称之为定时器;来自外部则称之为计数器,PIC单片机内的定时器不只一个,TMR0定时器是最具代表的定时器之一,其他还有TMR1、TMR2等。事实上TMR0就是一个计数器,而且是以递增累加的方式计数,即从0x00计数到0xFF再继续计数回到0x00,同时溢出中断标志,即使中断标志位T0IF置位,若中断使能位亦置位,就会发生中断。TMR0中断有不同于其他中断的地方,即中断服务程序在查询TMR0中断时,既要查询使能位T0IF,又要查询标志位T0IF,只有T0IF和T0IE同时置位时才会确定TMR0确实是发生了中断。为什么需要这样做呢?因为T0IF在置位后,即使中断程序结束,依然处于置位状态,只有用软件才能清零,所以在查询了T0IF后就确认TMR0发生了中断时可能出现错误的,所以还要查询T0IE是否置位才能确定中断是否发生,以避免发生错误。另外,我们应该注意到PIC单片机中没有一个相应的控制位可以让TMR0停止计数,若TMR0被设置为定时器得工作模式且没有预分频时,那么TMR0将以递增累加的方式计数,它将永远从0x00计到0xFF,然后溢出回0,又从0x00计到0xFF,这个循环会进行256次。此时可以根据需要对TMR0赋一个初值,若是如此的话就必须注意,任何时候对TMR0寄存器进行一次操作后,其计数器都将延时2个指令周期才开始继续计数。没有预分频时TMR0初值公式: T。=256-Tc+2其中Tc是我们所希望得到的一次溢出的计数次数, To是实际写入TMR0的初值,而+2就是补偿上面所说的延时的2个周期。还有,当TMR0已经被分配了预分频器,其延时是不确定的,无法用软件对其补偿。因此,若是想要用TMR0实现精确的定时,就不要对TMR0进行任何操作。若是使用TMR0的计数器功能,为了保证输入脉冲的计数值不产生误差,无论是否被分配了预分频器,都不能对TMR0进行任何操作。A/D模块也可以通过设置中断标志位ADIF来发出中断请求,但因为其属于外围中断源(参照PIC16F877单片机的中断逻辑图),所以ADIF除受ADIE使能外,还要受PEIE使能,只有GIE、PEIE和ADIE全都处于置位状态是系统才会响应中断;与TMR0一样,ADIF的标志位也不会自动清零,只有用软件清零,因此中断服务程序在查询中断时也是必须同时查询ADIF和ADIE,只有ADIF和ADIE同时置位时,且GIE和PEIE也处于置位状态是系统才会响应中断。但是TMR0与A/D转换所产生的中断也有明显的不同的地方,A/D转换所产生的中断可以将单片机从休眠状态唤醒,而TMR0产生的中断不具备此功能。这是因为当A/D转换时钟选择为模块自带的独立与单片机无关RC震荡器,即使在单片机休眠时也可以完成一次A/D转换,待其结束后会使ADIF置位,其置位信号可以直接将单片机唤醒。定时器中TMR1所产生的中断也有与A/D转换所产生的中断有相似的功能。我认为中断机制是PIC单片机课程的一个极其重要的内容,其中涉

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论