mcs-51单片机中断系统与应用(基于-proteus仿真)x

mcs-51单片机中断系统与应用(基于-proteus仿真)x

ID:34706074

大小:241.70 KB

页数:10页

时间:2019-03-09

mcs-51单片机中断系统与应用(基于-proteus仿真)x_第1页
mcs-51单片机中断系统与应用(基于-proteus仿真)x_第2页
mcs-51单片机中断系统与应用(基于-proteus仿真)x_第3页
mcs-51单片机中断系统与应用(基于-proteus仿真)x_第4页
mcs-51单片机中断系统与应用(基于-proteus仿真)x_第5页
资源描述:

《mcs-51单片机中断系统与应用(基于-proteus仿真)x》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、MCS-51单片机中断系统及应用基于Proteus仿真前言:本文对MCS-51单片机的中断系统进行了简明扼要的总结和归纳,并在后面举了三个简单的例子,这样有助于更好地理解与掌握。1、MCS-51单片机有5个中断源,2个中断优先级。相同优先级条件下,CPU响应中断的顺序是处部中断0,定时/计数器0,外部中断1,定时/计数器1,串行口中断。当某一优先级的中断处理程序正在执行时,可以被更高优先级的中断请求中断,但不会被同级或低级的中断源所中断。2、中断允许寄存器IE(interruptenable):可位寻址,相应位置1,表示

2、开相应中断,置0表示关相应中断。(EX英文全称为external外部,所以EX0表示外部中断0)总中断:EA外部中断0:EX0中断编号为0,在函数后加上interrupt0来说明是外部中断0外部中断1:EX1中断编号为2,在函数后加上interrupt2来说明是外部中断1定时/计数器0:ET0中断编号为1,在函数后加上interrupt1来说明是T0中断定时/计数器1:ET1中断编号为3,在函数后加上interrupt3来说明是T1中断串行口中断:ES中断编号为4,在函数后加上interrupt4来说明是串行口中断只有使

3、用interrupt关键字定义的函数才能被当作中断服务函数使用3、中断优先级寄存器IP(interruptpriority中断优先级):可位寻址,相应位置1,表示高优先级,置0表示低优先级。外部中断0:PX0外部中断1:PX1定时/计数器0:PT0定时/计数器1:PT1串行口中断:PS4、定时/计数器T0,T1控制寄存器TCON:中断请求标志都是当CPU检测到有相应中断发生后,由硬件将相应的标志置1,当CPU响应该中断转向相应的中断处理程序时,由硬件自动将相应的标志位清0.系统复位时,TCON每一位都清零。在查询方式时,

4、TF0,TF1可以由程序查询和清“0”。外部中断0触发方式控制位:IT0=1为下降沿触发,IT0=0为低电平触发外部中断1触发方式控制位:IT1=1为下降沿触发,IT1=0为低电平触发外部中断0中断标志位IE0:为1表示有中断请求,为0表示无中断请求外部中断1中断标志位IE1:为1表示有中断请求,为0表示无中断请求定时/计数器0中断标志位TF0:为1表示有中断请求,为0表示无中断请求定时/计数器1中断标志位TF1:为1表示有中断请求,为0表示无中断请求定时/计数器0运行控制位TR0:为1表示启动,为0表示停止定时/计数器

5、1运行控制位TR1:为1表示启动,为0表示停止1、串行口控制寄存器SCON:TI(TransmitInterrupt发送中断)是串行口发送中断标志位,CPU将一个数据写入发送缓冲器SBUF时,就启动发送。每发送完一帧串行数据后,由中断系统的硬件自动将TI置1.但CPU响应中断时,并不清除TI,必须在中断处理程序中用指令将TI清0RI(ReceiveInterrupt接收中断)是串行口接收中断标志位,在允许串行口接收时,每接收完一帧数据后,中断系统的硬件自动将RI置1.同样,CPU响应中断处理程序时,并不自动将RI复位,必

6、须在中断处理程序中用指令将其清02、总结编写中断函数时,要记得在函数后面加上interrupt+中断编号,以说明是什么中断函数。在主函数中要记得开总中断,开相应中断,设置优先级,对外部中断要设置触发方式,对定时/计数器中断要用TR0/TR1=1启动计数器3、外部中断的简单应用实例(一)如下图所示,正常情况下,数码管以一定时间间隔循环轮流显示0~9,每按一次按钮开关,触发一次外部中断0,使数码管闪烁10次,闪烁完毕后继续正常的数字轮流显示。C程序如下:#include#defineucharunsigne

7、dchar#defineuintunsignedintvoiddelay(uintx){uchari;while(x--)for(i=0;i<120;i++);}ucharcodedis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchari;voidmain(){EA=1;//开总中断EX0=1;//开外部中断0IT0=1;//外部中断0设置为下降沿触发while(1){for(i=0;i<10;i++){P0=dis[i];delay(200);}}}

8、voidint0()interrupt0//外部中断0函数定义{P0=0xff;delay(200);for(i=0;i<10;i++)//闪烁十次{P0=~P0;delay(200);}}}Proteus仿真运行结果如下:1、外部中断的简单应用实例(二)如下图所示,正常情况下,数码管以一定时间间隔循环轮流显示0~9

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。