51单片机中断系统程序实例_第1页
51单片机中断系统程序实例_第2页
51单片机中断系统程序实例_第3页
51单片机中断系统程序实例_第4页
51单片机中断系统程序实例_第5页
免费预览已结束,剩余5页可下载查看

下载本文档

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

文档简介

1、51单片机中断系统程序实例(STC89C52RC)51单片机有了中断,在程序设计中就可以做到,在做某件事的过程中,停下来 先去响应中断,做别的事情,做好别的事情再继续原来的事情。 中断优先级是可 以给要做的事情排序。单片机的学习不难,只要掌握学习方法,学起来并不难。什么是好的学习方法呢, 一定要掌握二个要点:1 .要知道寄存器的英文全拼,比如IE = interrupt 中断不知道全拼,要去猜,去查。这样就可以理解为什么是这个名称,理解了以后就不用记忆了。2 .每个知识点要有形像的出处比如看到TF0,脑子里马上要形像地定位到 TCONJ存器的某位看到ET0,马上要形像地定位到IE寄存器的第2位

2、独家揭秘:形像是记忆的最大技巧。当人眼看到某个图时,是把视觉信号转化 成电信号,再转化成人能理解的形像。当我们回忆形像时,就是在重新检索原先 那个视觉信号,并放大。在学习过程中,不断练习检索、放大信号,我们的学习 能力就会越来越强。写程序代码时,也要把尽量把每行代码形像化。51单片机内中断源8051有五个中断源,有两个优先级。与中断系统有关的特殊功能寄存器有IE (中断允许寄存器)、IP (中断优先级控制寄存器)、中断源控制寄存器(如TCONSCON勺有关位)。51单片机的中断系统结构如下图(注意,IF0应为TF0):8052有6个中断源,它比8051多一个定时器/计数器T2中断源。8051五

3、个中断源分别是:(1) 51单片机外部中断源8051有两个外部中断源,分别是INT0和INT1,分别从和两个引脚引入中断请求 信号,两个中断源的中断触发允许由 TCON勺低4位控制,TCON勺高4位控制运 行和溢出标志。INT0也就是Interrupt 0 。在这里应该看一下你的51单片机开发板的电路原理 图。离开形像的记忆是没有意义的。读到上面这句,你应该回忆起原理图上的连 接。任何记忆都转化为形像,这是学习的根本原理,我们通过学习单片机要学会 这种学习方法,会让你一辈子受益无穷。TCON勺结构如下图:(a)定时器T0的运行控制位TR0TR0由软件置位或者清00当门控位GATE=0寸,TO计

4、数器仅由TR0控制,TR0=1 启动计数,TR0=0时停止。当门控位GATE=1寸,T0计数器由INT0和TR0共同控 制,当INT0=1且TR0=1时启动T0计数器。(b)定时器T0溢出标志位TF0当T0溢出时TF0=1,并向CPUH青中断,CPU向应中断后由硬件将TF0清0,也 可以由软件查询方式将TF0清0。c)定时器T1的运行控制位TR1功能同TRQ(d)定时器T1溢出标志为TF1功能同TF1。(e)外部中断源1 (INT1、)中断请求标志IE1IE1=1时外部中断源1正在向CPU青求中断,当CPU向应该中断时由硬件将IE1 泊0 (下降沿触发方式)。(f)外部中断源1触发方式选择位I

5、T1IT1=0时外部中断源1选择电平触发方式,当输入低电平时置位 IE1 ; IT1=1时 外部中断源1选择下降沿触发方式,当中断源由高电平变低电平时置位IE1 ,向 CPU青求中断。(g)外部中断源0 (INT0、中断请求标志IE0功能类同IE1 0(h)外部中断源0触发方式选择位IT0功能类同IT1。CPUS每个机器周期采样INT0和INT1引脚的输入电平。i、电平触发方式当CP而样到低电平时,置位IE0和IE1 ,采样到高电平时,将IE0和IE1清零。 在电平触发方式下,外部中断源必须一直保持低电平(至少保持1个以上的机器 周期)直到CPU向应中断请求,否则中断请求将丢失,同时在中断处理

6、程序结束 之前必须,外部中断源必须变为高电平,否则将产生另一次中断。ii、下降沿触发方式CPUS个机器周期采样中断输入引脚,如果相续的两次采样,第一次是高电平,第二次是低电平,则置位相应的IE,响应中断后,硬件自动将IE W 00采样下 降沿触发方式,中断源的高、低电平都必须保持 12个振荡周期(即1个机器周 期)以上,这样CPUt能有效检测到下降沿,并引发 CPU断。(2) 51单片机内部中断源8051有3个内部中断源,分别是定时器T0、T1和用行口中断。8052增加了一个 T2定时器中断。2、51单片机中断使能控制中断的允许和禁止由中断使能控制寄存器 IE控制,其字节地址为0A8H,可以位

7、寻址,其结构如下图所示:EX0:外部中断0中断允许位;ETG定时器/计数器T0中断允许位;EX1:外部中断1中断允许位;ET1:定时器/计数器T1中断允许位;ES:用行口中断允许位;ET2:定时器/计数器T2中断允许位;(只要8052具有)EA CPlfr断总允许位,EA=1时所有的中断开放,EA=0时禁止所有的中断3、51单片机中断优先级51有两个优先级:高、低。通过IP (中断优先级寄存器)来设置优先级,其字节地址为0B8H可位寻址,其结构如下图:IP中各位值为0时表示低优先级中断,为1时表示高优先级中断。CPUS位后IP=0o高优先级中断可以中断低优先级中断,同优先级中断不能相互中断。当

8、CPUW时 接到同优先级的几个中断请求时,CPLR照如下硬件顺序进行中断响应:4、51单片机中断请求的撤除CPU向应中断请求,执行中断服务程序,但在中断返回指令( RETI)之前必须撤 除中断信号,否则将可能再次引起中断而发生错误。中断请求撤销的方法有三种:a、单片机内部硬件自动复位:对于定时器/计数器T0、T1及采用边沿触发方式 的外部中断请求,CPUS响应中断后,由内部硬件自动撤销中断请求;b、应用软件清除响应标志:对串口发送/接收中断请求及定时器T2的溢出和捕 获中断请求,CPU向应中断后,内部无硬件自动复位 RI、TI、TF2及EXF2必须 在中断服务程序中清除这些标志,才能撤除中断;

9、c、既无软件清除也无硬件撤除:对于采用电平方式的外部中断请求, CPU寸引 脚上的中断请求信号既无控制能力, 也无应答信号,为保障CPU向应中断请求中 断后,执行返回指令前撤除中断请求,必须考虑另外的措施。5、51单片机中断响应过程51单片机在每个机器周期的S5P2状态顺序检查每个中断源的中断请求标志, 若 有中断源发送中断请求,CPUS下个机器周期的S5P2状态按优先级顺序查询各 中断标志,并且取高优先级的中断进行响应。响应中断后置位相应的中断优先级 状态触发器,标明当前中断服务的优先级别,执行硬件调用程序,将程序计数器 PC的内容压入堆栈进行保护。对于中断源的中断入口地址装入程序计数器PC

10、使程序转入该中断入口处执行中断服务程序,直到遇到 RETI指令。执行RETI指令,撤销中断优先级触发器,弹出断点地址至程序计数器PG继续源程序的执行过程。在接收中断申请时,如遇到下列情况之一,硬件调用子程序将被封锁:a、正在执行同级或高一级的中断服务程序;b、当前指令周期不是该指令的最后一个周期(或一条指令未执行完);c、当前正在执行的指令是 RETI或对IE、IP的读写操作。6、中断入口地址各中断源的中断入口地址为:STC86C52RC 5惮片机中断示例程序#include typedef unsigned char uint8;typedef unsigned int uint16;typ

11、edef unsigned long uint32;sbit enableGI = P1A3; sbit enableG2 = P1A4;sbit selectC = P1A2; sbit selectB = P1A1; sbit selectA = Pa。;code uint16 num1616 = 0xC0, 0xF9, 0xA4, 0xB0,0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88, 0x83,0xC6, 0xA1,0x86, 0x8E ;.10万位上各位上的值void enable138(void); / 启用 138 译码器切换 IO 口void

12、 refresh_led(void);void thtl_init(void);void timer1_init(void);void et1_init(void);/ byvoid main(void)enable138();timer1_init();et1_init();while(1);void interrupt_timer1(void) interrupt 3static uint16 counter = 0;static uint32 sec = 0;counter+;thtl_init();if(counter = 1000)counter = 0;sec+;num60 = s

13、ec % 10;num61 = sec/10%10;num62 = sec/100%10;num63 = sec/1000%10;num64 = sec/10000%10;num65 = sec/100000%10;)refresh_led();/ 更新num6数组后再刷新数码管)void enable138(void) enableG1 = 1; enableG2 = 0; /刷新数码管,只显示有效值void refresh_led(void)static uint8 i = 0;switch(i)case 0: selectC = 0; selectB = 0; selectA = 0;

14、P0 = num16 num60 ; break;case 1: selectC = 0; selectB = 0; selectA = 1; P0 = num65 = 0 & num64 =0 &num63 = 0 &num62 = 0 &num61 = 0 ? 0xFF : num16 num61; break;case 2: selectC = 0; selectB = 1; selectA = 0; P0 = num65 = 0 & num64 =0 & num63 = 0 & num62 = 0 ? 0xFF : num16 num62 ; break;case 3: selectC = 0; selectB = 1; selectA = 1; P0 = num65 = 0 & num64=0 & num63 = 0 ? 0xFF : num16 num63 ; break;case 4: selectC = 1; selectB = 0; selectA = 0; P0 = num65 = 0 & num64=0 ? 0xFF : num16 num64 ; break;case 5: selectC = 1; selectB = 0; selectA = 1; P0 = num65 = 0 ? 0xFF :num16 num65 ; break;def

温馨提示

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

评论

0/150

提交评论