欢迎来到天天文库
浏览记录
ID:61748445
大小:316.00 KB
页数:22页
时间:2020-02-06
《第4章中断系统的C51编程.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第4章51单片机中断系统的C51编程4.1中断系统结构与中断控制4.2中断优先级与中断函数4.3外部中断源的C51编程4.4实验4.151单片机中断系统结构与中断控制5个中断源外部中断:外部中断0/INT0外部中断1/INT1定时器/计数器溢出中断:定时器/计数器0TF0定时器/计数器1TF1串行口中断:串行口RI、TI中断控制设置了4个专用寄存器用于中断控制。。(1)定时器控制寄存器(TCON)(2)串行口控制寄存器(SCON)(3)中断允许控制寄存器(IE)(4)中断优先级控制寄存器(IP)4.2中断
2、优先级与中断函数优先级排列如下(从高到低):外部中断0定时器/计数器0溢出外部中断1定时器/计数器1溢出串行口中断中断函数的结构定义中断服务函数的一般形式为:函数名()interrupt()n外部中断0中断、定时器/计数器0溢出中断、外部中断1中断、定时器/计数器1溢出中断、串行口中断对应的中断类型号分别为0、1、2、3、4。4.3外部中断源的C51编程51单片机提供了2个外部中断源:外部中断0请求,占用P3.2引脚,其中断请求号为0。外部中断1请求,占用P3.3引脚,其中断请求号为2。外部中断源的初始化
3、时通过设置相应的特殊功能寄存器的相应位来实现的。(1)TCON寄存器中的IT0、IT1位外部中断0和外部中断1的中断触发方式控制位。如:IT0=0;//外部中断0为电平触发方式IT1=1;//外部中断1为脉冲触发方式(2)IP寄存器中的PX0、PX1位外部中断0和外部中断1的中断优先级的设定。如:PX0=0;//设定外部中断0为低级中断PX1=1;//设定外部中断1为高级中断(3)IE寄存器中的EA、EX0、EX1位EA为中断允许总控制位;EX0、EX1为外部中断0中断和外部中断1中断的中断允许位。如:E
4、A=1;//开放总的中断控制EX0=1;//允许外部中断0中断EX1=0;//禁止外部中断1中断【例4-1】初始状态时低4位灯亮,高4位的灯灭,编程实现按一下S0,P1口的发光状态发生反转。#includevoidmain(){P1=0XF0;//高4位灭、低4位亮IT1=1;//脉冲触发方式EA=1;EX1=1;//开放相应的中断while(1);//等待中断}voidwint0(void)interrupt2//2—外1{P1=~P1;}【例4-2】利用S0按钮控制P1口的灯,要求每
5、按一下就点亮一盏灯(其余的灯是灭的)。#include#include//内部函数bitflag;//中断标志unsignedcharledstatus;voidwint1()interrupt2{flag=1;}voidmain(void){P1=0xff;ledstatus=0xfe;IT1=1;EA=1;EX1=1;while(1){if(flag){P1=ledstatus;ledstatus=_crol_(ledstatus,1);flag=0;}}}【例
6、4-3】当S0动作时,P1.0端口的电平反向,当外S1动作,P1.7端口的电平反向#includesbitLED0=P1^0;sbitLED7=P1^7;voidIS0(void)interrupt0//外部中断0{LED0=~LED0;}voidIS1(void)interrupt2//外部中断1{LED7=~LED7;}voidmain(){P1=0xFF;IT0=1;IT1=1;EX0=1;EX1=1;EA=1;while(1);}修改:(1)S0控制P1.0—P1.3的灯,S1控
7、制P1.4—P1.7的灯。(2)按下S0后,点亮8只LED;按下S1后,变为闪烁状态。【例4-4】P1口控制的灯按一定的频率闪烁,S0动作,实现单灯左移,而左移3圈结束。【例4-5】首先通过P1.7口点亮发光二极管D1,然后外部输入一脉冲串,则发光二极管D1亮、暗交替。#includesbitP1_7=P1^7;voidinterrupt0()interrupt0using2{P1_7=~P1_7;}voidmain(){EA=1;IT0=1;EX0=1;P1_7=0;do{}while
8、(1);}修改:如果有3个脉冲,则灯亮、暗交替一次,请编程。实验1按钮型开关模拟外部中断实验实验2外部中断优先级实验
此文档下载收益归作者所有