MCS-51单片机中断系统及应用

上传人:jin****ng 文档编号:110346097 上传时间:2022-06-18 格式:DOC 页数:10 大小:675.50KB
返回 下载 相关 举报
MCS-51单片机中断系统及应用_第1页
第1页 / 共10页
MCS-51单片机中断系统及应用_第2页
第2页 / 共10页
MCS-51单片机中断系统及应用_第3页
第3页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
MCS-51 单片机中断系统及应用基于 Proteus 仿真前言:本文对MCS-51单片机的中断系统进行了简明扼要的总结和归纳,并在后面举了三个 简单的例子,这样有助于更好地理解与掌握。1、 MCS-51单片机有5个中断源,2个中断优先级。相同优先级条件下,CPU响应中断的顺 序是处部中断0,定时/计数器0,外部中断1,定时/计数器 1,串行口中断。当某一优 先级的中断处理程序正在执行时,可以被更高优先级的中断请求中断,但不会被同级或 低级的中断源所中断。2、中断允许寄存器IE(interrupt enable):可位寻址,相应位置1,表示开相应中断,置0表 示关相应中断。(EX英文全称为external外部,所以EX0表示外部中断0)EAESET1EX1ET0EX0总中断:EA外部中断0: EX0中断编号为0,在函数后加上interrupt 0来说明是外部中断0外部中断1: EX1中断编号为2,在函数后加上interrupt 2来说明是外部中断1 定时/计数器0: ET0中断编号为1,在函数后加上interrupt 1来说明是T0中断 定时/计数器1: ET1中断编号为3,在函数后加上interrupt 3来说明是T1中断 串行口中断:ES中断编号为4,在函数后加上interrupt 4来说明是串行口中断 只有使用 interrupt 关键字定义的函数才能被当作中断服务函数使用3、中断优先级寄存器IP(interrupt priority中断优先级):可位寻址,相应位置1,表示高优先 级,置 0 表示低优先级。PSPT1PX1PT0PX0外部中断0: PX0 外部中断1: PX1 定时/计数器 0: PT0 定时/计数器 1: PT1串行口中断: PS4、定时/计数器T0,T1控制寄存器TCON:中断请求标志都是当CPU检测到有相应中断发生 后,由硬件将相应的标志置1,当CPU响应该中断转向相应的中断处理程序时,由硬件 自动将相应的标志位清 0.系统复位时, TCON 每一位都清零。在查询方式时, TF0,TF1 可以由程序查询和清“0”。TF1IK1TF0TRJ0IE1IT1IE0IT0外部中断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表示停止 定时/计数器1运行控制位TR1:为1表示启动,为0表示停止5、串行口控制寄存器 SCON:-nRITI (Transmit Interrupt发送中断)是串行口发送中断标志位,CPU将一个数据写入发送 缓冲器SBUF时,就启动发送。每发送完一帧串行数据后,由中断系统的硬件自动将TI置 1.但CPU响应中断时,并不清除TI,必须在中断处理程序中用指令将TI清0RI(Receive Interrupt接收中断)是串行口接收中断标志位,在允许串行口接收时,每接 收完一帧数据后,中断系统的硬件自动将RI置1同样,CPU响应中断处理程序时,并不自 动将RI复位,必须在中断处理程序中用指令将其清06、总结编写中断函数时,要记得在函数后面加上interrupt*中断编号,以说明是什么中断函数。 在主函数中要记得开总中断,开相应中断,设置优先级,对外部中断要设置触发方式, 对定时/计数器中断要用TR0/TR1=1启动计数器7、外部中断的简单应用实例(一) 如下图所示,正常情况下,数码管以一定时间间隔循环轮流显示09,每按一次按钮开 关,触发一次外部中断0,使数码管闪烁10次,闪烁完毕后继续正常的数字轮流显示。VCD車292170XTAL1P0.1AD1P0.2tfD2XTAL2P0.3AD3PO.qADP0.5AD5P0.ti/AD6P0.7jAD7尸 2.0/A8F2.仃烟P2.2JA10PSENP2.2JA11ALEP2.4JA12EAP2.5JA-13P2.6JA14P2.7JA15P1.0P3.0/RXDP1.1FG.1/TXDPI.2P3.2/INTUP1.3P3.3/INT1PI.4P34/TUPI.5P3.5/T1P1.6P3.6fWRPI.7P3.7/RDU1=:7EXTC 程序如下:#include#define uchar unsigned char#define uint unsigned intvoid delay(uint x)uchar i; while(x-) for(i=0;i120;i+);uchar code dis=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uchar i;void main()EA=1; /开总中断EX0=1;/开外部中断 0IT0=1;/外部中断 0 设置为下降沿触发while(1)for(i=0;i10;i+)P0=disi; delay(200);/外部中断0 函数定义void int0()interrupt 0P0=0xff;delay(200);for(i=0;iXTAL1PO.O/ADOF0.1/AD1PO.2/AD2XTAL2PO.3/AD3P0.4/AD4PO.5/AD5PO.a/ADtiRSTPO.7/AD7P2.0/A8P2.-1/A9P2.2/A10PSENP2.3/A11.ALEP2.4/A12EAP2.5/A13P2.6/A14P2.7/A15F1.0P3.0/RXDPd.dP3 J/TXDF1.2P3.2flNTUF-l .3F3.3HNT1PI .4P3.4/TUF1.5P3.5/T1PI .6P3.6/WRF1.7P3.7/RD 20130T:站ATB9C51393837 2B35 3433sz21 2?232425562728 1U11巫14 16ie8、外部中断的简单应用实例(二)如下图所示,正常情况下,数码管以一定时间间隔循环轮流显示09,按下K1键后,触发低优先级外部中断0,依次点亮8只黄色发光二极管,最后熄灭。按下K2键后,触发 高优先级外部中断1,逐个点亮8只条形LED。(注意要加上限流电阻,否则仿真失败.LED BARGRAPH.-S-JW TE:c_T.?KTAL1pci Di*AmFa.orAic Fd.TfAIiTfz.owRBTFSErjALE EAF2B/A14P3 1JTXPP1UP1;lF12P1.4 FuaF-35H1P1JDF1JPSjCAiRR3 丁冠C程序如下:(虽然主函数和两个中断函数都用到变量i,但还是不要把i设置为全局变 量,否则运行结果不正确)#include#define uchar unsigned char#define uint unsigned intvoid delay(uint x)uchar i;while(x-)for(i=0;i120;i+);uchar code dis=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void main()uchar i;EA=1;EX0=1;EX1=1;IT0=1;IT1=1;PX0=0; /外部中断0设置为低优先级PX1=1; /外部中断1设置为高优先级while(1)for(i=0;i10;i+)P0=disi;delay(200);void int0()interrupt 0uchar i;P2=0XFF;for(i=0;i8;i+)P2=P21;右移用0填补delay(200);P2=0XFF;void int1()interrupt 2uchar i;P1=0XFF;for(i=0;i1;delay(200);P1=0XFF;/外部中断0函数定义/外部中断 1 函数定义XTAL2PDO/flM PD 1W1 FD2/WQ PDSxaM FD-A/W- pci.ewwPD7X0?IDk U或TFSEH ALEF2P2JeF2.Z/A1D P2.3JA11 P2 4JA12 F2 3JA13P2.DJA14P2.7JA13zo1132阳3斗10515aH-713El._i.i . . .SCO. . . . = J.T=-.LEt-BAR-iHAFH-flNbt.T ;FMPL-1F12P13Fl.4F1JF1JFl?P3 OfRXDF.i/IXD Fg.jiTrrn P3j?wri旳切F3.WT1P3.7iR!Proteus 仿真运行结果如下:9、外部中断的简单应用实例(三) 本例实现外部中断源的扩展设计。如下图所示,系统正常工作情况下,数码管以一定时 间间隔循环轮流显示09,四只绿色LED点亮,四只红色LED熄灭。按下K1K4任意一 个按键时,触发外部中断0,对应的一只绿色LED熄灭,一只红色LED点亮,并持续发 出报警声音,表示系统出现故障。直到按下复位按钮,系统恢复正常工作,报警声音停止。(注意 P0 口要接上拉电阻,否则仿真失败)LED-F:H =:TE:T R1-如pF. - U.J-200-PS.fl/RXD P3.I/D(D P3J/iNTDP3J/INTiP3.4jTUP3.5/T1 P貓殛 P3.7/RD巴.D6P2.1Z.Ay P2/A1D P2.3/A11 P2.4/A12 P25/A13 P2.6/A14 PZJ/AI51 zkfl-r-J-刖I38h373fl|3ii34L33IPD.D/JZLi 炉匸11 FD左护口2 po,3/p.n-: P0.4/AD4 PD.5/P.JZti PD.6/P.JZfi PD7/P.D7 MPM C 程序如下:#include#define uchar unsigned char#define uint unsigned int void delay(uint x)uchar i;while(x-) for(i=0;i120;i+);uchar code dis=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;sbit agreen=P1A0;sbit ared=P1A1;sbit bgreen=P1A2;sbit bred=P1A3;sbit cgreen=P1A4;sbit cred=P1A5;sbit dgreen=P1A6;sbit dred=P1A7;sbit buzzer=P30; /蜂鸣器sbit k1=P3A4;sbit k2=P3A5;sbit k3=P3A6;sbit k4=P3A7;void main()uchar i;EA=1;EX0=1;EX1=1;IT0=1;IT1=1;P1=0Xaa; /正常时点亮四只绿色LED灯buzzer=0; /正常时关闭蜂鸣器while(1)for(i=0;iP0.0/AD0 PD.1/AO1PD.2/AJ2I2PD.3/AD3P0.4/AmP0.5/AM po.e/AJitiPD.7/AD7P2.fl/AE: 陆P2.2A1D P2.3aA11P2.4A12P2.5/A12P2.6A14P2.7A15P3.D/RXD P3.17D(DP3.2/iNiDP3.3/iNTTP3.5XT1. P3.6.W P3.7/RDMIS393S3736353斗3310、上述 Proteus 仿真文件下载地址:9 / 101 彭伟单片机C语言程序设计实训100例.北京:电子工业出版社.20092 贾振国,许琳智能化仪器仪表原理及应用北京:中国水利水电出版社.2011
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!