微控制器(单片机)的中断系统及应用 |
您所在的位置:网站首页 › 单片机外部中断程序例子 › 微控制器(单片机)的中断系统及应用 |
文章目录
1. 什么是中断1.1 中断的概念1.2 中断源1.2.1 中断源的种类
2. 中断寄存器2.1 TCON寄存器2.2 SCON寄存器2.3 IE寄存器2.4 IP寄存器
3. 中断处理流程3.1 定时器中断实操3.2 外部中断实操3.3 思考题:
4. 最重要的事
1. 什么是中断
1.1 中断的概念
中断是指中央处理器CPU正在处理某件事情的时候,外部发生了某一事件(如定时器计时已到),请求CPU迅速去处理,CPU暂停当前的工作,转去处理所发生的事件,处理完以后,再回到原来被中断的地方,继续原来的工作。实现这种功能的部件称为中断系统。它由4个与中断有关的特殊功能寄存器(TCON、SCON),中断允许控制寄存器IE和中断顺序查询逻辑等组成。 1.2 中断源我们将发起中断申请的设备,称为中断源。 1.2.1 中断源的种类根据中断源的不同,可分为2个外部中断源,3个内部中断源: /INT0:外部中断0,中断请求信号由P3.2端口线引入,低电平或下跳沿引起。/INT1:外部中断1,中断请求信号由P3.3端口线引入,低电平或下跳沿引起。T0:定时/计数器0溢出中断,对外部脉冲计数由P3.4输入,由T0计满回零引起。T1:定时/计数器1溢出中断,对外部脉冲计数由P3.5输入,由T1计满回零引起。串行中断:包括串行接收中断RI和串行发送中断TI。 2. 中断寄存器单片机中主要包含四类特殊的寄存器对中断进行控制: TCON:定时/计数器控制寄存器SCON:串行口控制寄存器IE:中断允许寄存器IP:中断优先级寄存器 2.1 TCON寄存器每个中断源对应一个中断标志位,当某个中断源有中断请求时,相应的中断标志位置1,各中断源的中断标志位在TCON和SCON中,具体如下表所示:
中断系统中所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的,IE可进行位寻址。中断允许寄存器IE对中断的开放和关闭实现两级控制。(PS:两级控制是指有一个总的开关中断控制位EA。当EA=0时,所有的中断请求被屏蔽,CPU对任何中断请求都不接受;当EA=1时,CPU开放中断,但5个中断源的中断请求是否允许,还要由IE中的低5位所对应的5个中断请求允许控制位的状态来决定。) 单片机有两个中断优先级,即可实现二级中断服务嵌套。两级优先级遵循下述规则:仅高优先级可中断嵌套低优先级。简而言之:高优先级的中断可打断低优先级的中断。 ![]() 要求:使P1.0管脚上输出周期为2ms的方波脉冲。设单片机晶振频率Fosc=6MHz。 思路:利用定时器T0作1ms定时,达到定时值后引起中断,在中断服务程序中,使P1.0的状态取一次反,并再次定时1ms。 PS:当定时器/计数器工作在方式1时,且确定定时为T后,其初值的计算公式为: X = 65536 - T x Fosc /12 编程实现为: #include sbit Pulse=P1^1; //初始化定时器 void InitTimer0( ){ EA = 0; //禁止所有中断 TMOD = 0x01; // T0为定时器状态,工作方式1 TL0 = (65536 - 10000) / 256 ; // T0的低位定时初值 TH0 = (65536 - 10000) %256 ; // T0的高位定时初值 ET0 = 1; //允许定时器/计数器0的溢出中断 EA = 1; //开CPU中断 TR0 = 1; //启动定时器0 } //定时器0中断服务程序 void IRQTimer0 () interrupt 1{ EA=0; TL0 = (65536 - 10000) / 256; // T0的低位定时初值 TH0 = (65536 - 10000) %256; // T0的高位定时初值 Pulse=~Pulse; EA=1; } //主程序 void main() { InitTimer0( ) Pulse=1; while(1); } 3.2 外部中断实操要求:绘制电路图,并通过按键实现LED灯的闪烁。 思路:将按键信号作为单片机外部中断触发信号。每产生一个外部中断就将与LED灯相连的P1.0口电平取反,从而实现LED灯闪烁 PS:由于手动按键存在机械抖动,且按键会持续一段时间(约50~100ms),为避免一次按键产生多次外部中断,需要在每次中断后进行一定延时处理,确保本次按键已经释放 实现:电路图设计为: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |