精华内容
下载资源
问答
  • 51单片机中断系统应用
  • 本文列举几点PIC16F87X单片机中断系统应用须关注的问题。
  • 由于CPU的运行速度非常高,而各个外围设备模块的工作速度却非常低,况且这些外围设备模块也不是频繁地要求CPU对其服务。因此,通常采取一种让众多外围设备模块共享1个CPU,并且能够及时得到CPU服务的调度方法——中断
  • 本文针对PIC16F87X系列单片机中断的特点,及其在应用过程中应该注意的几个问题进行必要的说明。内容包括中断源、中断逻辑、中断相关的寄存器、中断的延时、中断的现场保护以及注意事项等。  目前在世界一些着名的...
  • 中断系统应用实例1.实验说明2.实验一2.1.实验效果2.2.Proteus仿真图2.3.源程序3.实验二3.1.实验效果3.2.Proteus仿真图3.3.源程序 1.实验说明 实验一: 用80C51单片机控制8个LED灯,在外部中断0输入引脚(P3.2)接一个...

    1.实验说明

    实验一:

    • 用80C51单片机控制8个LED灯,在外部中断0输入引脚(P3.2)接一个开关K1。将外部中断0设置为下降沿触发,程序启动是8个LED以跑马灯的形式交替闪烁。每按一次开关K1,使引脚接地,产生一个下降沿触发的外部中断请求。在中断服务程序中,8个LED高四位和低四位交替闪烁5次,然后中断返回,8个LED继续以跑马灯形式闪烁。

    实验二:

    • 在实验一的基础上,在外部中断1输入引脚(P3.3)接一只按钮开关K2。当按下K1时,外部中断0下降沿触发方式触发,进入外部中断0服务程序,上下4个灯交替闪烁;此时按下K2,外部中断1下降沿触发方式触发,进入外部中断1服务程序,8个灯交替闪烁。当外部中断1响应完毕后,返回继续响应外部中断0,直到外部中断0响应完毕,返回执行主程序。

    2.实验一

    2.1.实验效果

    分析:单片机控制8个LED、按键K1触发中断、下降沿触发方式、中断前LED跑马灯形式、中断触发后8个LED高四位和低四位交替闪烁5次,中断返回。

    按下K1,高4位和低4位LED交替闪烁5次,中断返回

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    2.2.Proteus仿真图

    连线方式为标号连接

    在这里插入图片描述

    2.3.源程序

    #include<reg52.h>
    
    unsigned char code table[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0xff};	// 控制P0端口的状态
    unsigned char i, j, k, l, num;
    
    void delay()			 // 延时函数
    {
    	for(i = 0; i < 200; i++)
    	{
    		for(j = 0; j < 200; j++)
    		;
    	}
    }
    
    void init()		   // 中断的初始化
    {
    //	EA = 1;	   // 打开总中断控制
    //	EX0 = 1;   // 允许外部中断0
    //	IT0 = 1;   // 外部中断为下降沿触发方式
    
    	EA = 1;
        EX0 = 1; EX1 = 1;
        PX0 = 0; PX1 = 1;
        IT0 = 1; IT1 = 1;
    }
    
    
    void main()	   
    {
    	init();		// 中断初始化
    	while(1)
    	{
    		for(num = 0; num < 10; num++)
    		{
    			P0 = table[num];
    			delay();
    		}
    	}
    }
    
    void int0() interrupt 0			   // 外部中断0中断服务程序
    {
    	EX0 = 0;
    	for(k = 0; k < 5; k++)
    	{
    		P0 = 0xf0;
    		delay();
    		P0 = 0x0f;
    		delay();
    		EX0 = 1;
    	}
    }
    

    3.实验二

    3.1.实验效果

    按下K2,8个LED交替闪烁5下后,中断返回

    在这里插入图片描述

    在这里插入图片描述

    3.2.Proteus仿真图

    与实验1相同

    3.3.源程序

    中断1服务程序

    void int1() interrupt 2			  // 外部中断1服务程序
    {
    	for(l = 0;l < 5; l++)
    	{
    		P0 = 0x00;
    		delay();
    		P0 = 0xff;
    		delay();
    	}
    }
    
    展开全文
  • 单片机中断系统应用.ppt
  • 单片机原理与应用课程中断系统结构任课教师何晨曦5.2 中断系统的结构中断系统结构示意图 THANKS
  • MCS51单片机中断系统应用 本章提要本章介绍MCS51单片机重要功能硬件中断系统定时/计数器串行口的工作原理及应用通过本章学习熟悉中断的基本概念掌握中断系统的硬件组成和中断系统的程序结构初始化编程的设计方法...
  • 本章提要本章介绍MCS51单片机重要功能硬件中断系统定时/计数器串行口的工作原理及应用通过本章学习熟悉中断的基本概念掌握中断系统的硬件组成和中断系统的程序结构初始化编程的设计方法掌握定时/计数器串行口的结构...
  • 学习必备 欢迎下载 中断系统的应用 复习 180C51单片机的中断源及入口地址 2与中断有关的SFR中断允许寄存器IE中断优先级寄存器IP 定时器/计数器控制寄存器TCON 3中断与子程序调用的主要区别 中断系统应用实例一利用...
  • 中断的控制;1中断控制TCON;2中断控制SCON;Thank you very much!
  • 第5章 AT89C51单片机中断系统 ;教学目标;5.1 中断概述;2为什么要设中断; 3中断源及其优先级; 4. 中断源的管理;5.2 AT89C51中断系统的结构;5.2.1 中断源及中断系统构成 ; 5.2.2 中断标志与中断控制;表5.1 TCON的结构...
  • 中断装置和中断处理程序统称为中断系统中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往...中断系统应用大大提高了计算机效率。这篇文章我们主要讲解单片机的中断。
  • 单片机(AT89C51)中断系统详解和中断系统应用实验 什么叫做单片机的中断? CPU暂时中止其正在执行的程序,转去执行请求中断的那个外设或事件的服务程序,等处理完毕后再返回执行原来中止的程序, 叫做中断。 为什么...
  • 第6章项目四51单片机中断系统应用.ppt.pptx
  • 中断优先级(IP)主讲教师王先彪博士1中断的自然优先级INT0外部中断0T0定时计数器T0INT1外部中断1T1定时计数器T1RX/TX串口中断高自然优先级低2通过软件更改中断优先级 IPInterrupt Prior更改T1为高优先级 PS PT1PX1 ...
  • 单片机中断系统

    2011-12-08 15:13:49
    单片机原理及应用电子教案20100301\第5章-中断系统
  • 单片机中断系统与定时器/计数器应用;一MCS-51单片机中断系统;1中断源;2与中断有关的特殊功能寄存器;1定时器/计数器控制寄存器 TCON;TR0 (TCON .4) 定时器/计数器 T0 启停控制位可由软件设置;2串行口控制寄存器 SCON;...
  • 中断装置和中断处理程序统称为中断系统中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统中断系统应用大大提高了计算机效率。
  • 中断装置和中断处理程序统称为中断系统中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统中断系统应用大大提高了计算机效率。
  • 单片机中断系统 多级中断控制实例

    1.前言

    记录对51单片机中断、定时/计数器的重要知识点以及难点理解,并且举例中断在实际编程中的应用,从而加深对单片机中断、定时/计数器的理解,熟练的使用中断。

    2.什么是中断

    中断就是计算机在执行某一程序的过程中,由计算机系统内部或外部的某种原因而必须终止当前程序的运行先去执行相应的处理程序,然后再返回继续执行原程序

    3.什么是中断系统

    实现中断功能的软、硬件系统统称为中断系统。

    4.中断的流程

    在这里插入图片描述
    即:中断请求中断响应中断处理中断返回

    5.中断的优先级控制

    通常情况下,一个程序中可能会有多个中断,优先级越高的中断优先执行。如果在一个中断的服务过程中,有一个优先级更高的中断插入,则当前中断暂停,前往执行优先级更高的中断。当优先级高的中断执行完毕后再返回继续执行低优先级的中断。

    6.中断源

    MCS-51共有五个中断源

    1. 外部中断INT0INT1
    2. 定时/计数器T0T1的溢出中断
    3. 串行口的发送和接受中断(只占用一个中断源)
    中断源功能
    INT0外部中断0请求,由INT0引脚(P3.2)输入。低电平/负跳变有效,中断请求标志为IE0
    INT1外部中断1请求,由INT1引脚(P3.3)输入。低电平/负跳变有效,中断请求标志为IE1
    T0定时/计数器0溢出中断请求,中断标志位为TF0
    T1定时/计数器1溢出中断请求,中断标志位为TF1
    RXD/TXD串行口中断请求,中断请求标志位TIRI

    外部中断

    从单片机外部引脚INT0INT1输入中断请求信号的中断。
    外部中断的触发方式有两种电平触发IT0 =0跳变触发(边沿)IT0 = 1,可以通过定时/计数器控制寄存器TCON编程选择。

    7.与中断有关的特殊功能寄存器

    与中断有关的特殊功能寄存器一共有4个。

    1. 定时/计数器控制寄存器(TCON)、
    2. 串行口控制寄存器(SCON)、
    3. 中断允许控制寄存器(IE)、
    4. 中断优先级控制寄存器(IP)

    7.1.定时/计数器控制寄存器 TCON

    作用

    1. 控制定时/计数器T0T1的溢出中断
    2. 控制外部中断的触发方式.由IT0IT1控制
    3. 锁存外部中断请求标志位
    位地址位定义功能
    88HIT0选择外部中断0的中断触发方式。由软件控制。IT0=0为电平触发方式IT0=1为下降沿触发方式
    89HIE0选择外部中断1的中断触发方式。功能与IT0相似
    8AH

    7.2.串行口控制寄存器 SCON

    串行口的接收发送数据中断请求标志位(RITI)

    位定义功能
    TI串行口发送中断请求标志位。CPU每发送一帧数据,硬件置位1(TI=1),但是中断被响应时,需要在中断服务程序中通过软件对TI清零
    RI串行口接受中断请求标志位。每接收一帧数据,硬件置位1(TI=1),但是中断被响应时,一样需要在中断服务程序中通过软件对TI清零

    串行口中断不能由硬件自动清除中断请求标志位,需要用户通过软件进行控制清零。

    7.3.中断允许控制寄存器 IE

    IE是控制中断的开关,通过对IE的清0和置1操作来控制中断的屏蔽和开放。

    中断允许控制寄存器IE对中断的开放与屏蔽实现两级控制,存在一个总的中断控制位EA

    位定义功能
    EA总中断允许控制位。当EA=0时,不允许任何中断请求。
    ES串行口中断控制位。当ES=0时,不允许串行口中断;当EA=1ES=1时,允许串行口中断。
    ET1定时/计数器1中断允许控制位。当ET1=0时,屏蔽T1的溢出中断;当EA=1且ET1=1时,允许T1溢出中断
    ET0定时/计数器0中断允许控制位。功能与ET1相同。
    EX1外部中断1的中断允许控制位。当EX1=0时,屏蔽外部中断1的中断请求;当EA=1EX1=1时,允许外部中断1的中断请求
    EX0外部中断0的中断允许控制位。功能与EX1相同

    若某个中断源被允许,出来IE对应位置1外,还需要总中断控制位EA置1。

    实例:若允许片内两个定时/计数器中断,禁止其他中断源的中断请求,尝试编写出设置IE的响应指令

    #include <reg51.h>
    
    EX0 = 0; // 禁止外部中断0
    EX1 = 0; // 禁止外部中断1
    ES = 0;  // 禁止串行口中断
    ET0 = 1; // 允许定时/计数器0中断
    ET1 = 1; // 允许定时/计数器1中断
    EA = 1;  // 总中断控制器打开
    

    7.4.中断优先级控制寄存器 IP

    位定义功能
    PS串行口中断优先级控制位。PS=1,串行口中断为高优先级;PS=0,为低优先级。
    PT1定时/计数器1中断优先级控制位。当PT1=0时,T1溢出中断为低优先级;当PT1=1时,T1溢出中断为高优先级。
    PT0定时/计数器0中断优先级控制位。当PT0=0时,T0溢出中断为低优先级;当PT0=1时,T0溢出中断为高优先级。
    PX1外部中断1的中断优先级控制位。当PX1=0时,外部中断1为低优先级;当PX1=1时,外部中断1为高优先级。
    PX0外部中断0的中断优先级控制位。当PX0=0时,外部中断0为低优先级;当PX0=1时,外部中断0为高优先级。

    同级内第二优先级的次序
    外部中断0 > T0溢出中断 > 外部中断1 > T1溢出中断 > 串行口中断

    8.中断系统在实际编程中的应用

    8.1.实例一:中断的初始化

    #include <reg51.h>
    
    void init() // 中断的初始化函数
    {
        EA = 1; // 总中断控制位
        ES = 1; // 串行口中断允许
        EX0 = 1; // 外部中断0允许
        EX1 = 1; // 外部中断1允许
        ET0 = 1; // 定时/计数器0中断允许
        ET1 = 1; // 定时/计数器1中断允许
        IT0 = 1; // 选择外部中断0的触发方式
        IT1 = 1; // 选择外部中断1的触发方式
    }
    

    例1:假设允许外部中断0和1中断,并设定外部中断0为高级中断,外部中断1为低级中断,外部中断0为下降沿触发方式,外部中断1为电平触发方式。试写出该程序的中断初始化程序。

    #include <reg51.h>
    
    void init() // 
    {
        EA = 1; 打开中断控制
        EX0 = 1; 允许外部中断0
        EX1 = 1; 允许外部中断1
        IT0 = 1; 外部中断1采取边沿触发方式
        IT1 = 0; 外部中断0采取电平触发方式
        PX0 = 1; 外部中断0为高优先级
        PX1 = 0; 外部中断1为低优先级
    }
    
    

    8.2.实例二:利用中断控制LED闪烁形式

    要求

    用80C51单片机控制8个LED灯,在外部中断0输入引脚(P3.2)接一个开关K1。要求将外部中断0设置为下降沿触发,程序启动是8个LED以跑马灯的形式交替闪烁。每按一次开关K1,使引脚接地,产生一个下降沿触发的外部中断请求。在中断服务程序中,8个LED高四位和低四位交替闪烁5次,然后中断返回,8个LED继续以跑马灯形式闪烁。

    采用Protues+Keil仿真

    元器件

    • 单片机:80C51 *1
    • 开关按钮:Button *1
    • 电阻:MINRES470K *1
    • LED:LED-BLUE *8

    仿真图

    在这里插入图片描述
    代码

    #include<reg52.h>
    
    unsigned char code table[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x00,0xff};	// 控制P2端口的状态
    
    unsigned char i,j,k,num;
    
    void delay()			 // 延时函数
    {
    	for(i = 0;i<100;i++)
    	{
    		for(j=0;j<200;j++)
    		;
    	}
    }
    
    void init()		   // 中断的初始化
    {
    	EA = 1;	   // 打开总中断控制
    	EX0 = 1;   // 允许外部中断0
    	IT0 = 1;   // 外部中断为下降沿触发方式
    }
    
    
    void main()	   
    {
    	init();
    	while(1)
    	{
    		for(num =0;num<10;num++)
    		{
    			P2 = table[num];
    			delay();
    		}
    	}
    }
    
    void int0() interrupt 0			   // 中断服务程序
    {
    	for(k = 0;k<5;k++){
    		P2 = 0xf0;
    		delay();
    		P2=0x0f;
    		delay();
    	}
    }
    

    8.3.实例三:多级中断控制LED不形式闪烁

    要求:在例2的基础上,在外部中断1输入引脚(P3.3)接一只按钮开关K2。当按下K1时,外部中断0下降沿触发方式触发,进入外部中断0服务程序,上下4个灯交替闪烁;此时按下K2,外部中断1下降沿触发方式触发,进入外部中断1服务程序,8个灯交替闪烁。当外部中断1响应完毕后,返回继续响应外部中断0,直到外部中断0响应完毕,返回执行主程序。
    首先我们分析一波中断初始化函数

    1. 两个外部中断0和1。外部中断0的服务程序为上下4灯交替闪烁,外部中断1的服务程序为8灯闪烁。即EA = 1; EX0 = 1; EX1 = 1;

    2. 优先级:外部中断1 > 外部中断0 即PX1 = 1; PX0 = 0;

    3. 触发方式:都为下降沿触发。即IT0 = 1; IT1 = 1;

    这样我们的中断初始化程序基本完成

    void init()
    {
        EA = 1;
        EX0 = 1; EX1 = 1;
        PX0 = 0; PX1 = 1;
        IT0 = 1; IT1 = 1;
    }
    
    

    其次我们再捯饬一下主程序

    void main()	   
    {
    	init();
    	while(1)
    	{
    		for(num =0;num<10;num++)
    		{
    			P2 = table[num];
    			delay();
    		}
    	}
    }
    
    

    另外我们再搞一下外部中断0的服务程序

    void int0() interrupt 0
    {
    	for(k = 0;k<5;k++)
        {
    		P2 = 0xf0;
    		delay();
    		P2=0x0f;
    		delay();
    	}
    }
    

    最后我们再他喵的弄一下外部中断1的服务程序

    
    void int1() interrupt 2			  // 外部中断1服务程序
    {
    	for(l = 0;l < 5; l++)
    	{
    		P2 = 0x00;
    		delay();
    		P2 = 0xff;
    		delay();
    	}
    }
    

    完整代码

    #include<reg52.h>
    
    unsigned char code table[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f, 0x00, 0xff};	// 控制P2端口的状态
    
    unsigned char i, j, k, l, num;
    
    void delay()			 // 延时函数
    {
    	for(i = 0; i < 200; i++)
    	{
    		for(j = 0; j < 200; j++)
    		;
    	}
    }
    
    void init()		   // 中断的初始化
    {
    	EA = 1;
        EX0 = 1; EX1 = 1;
        PX0 = 0; PX1 = 1;
        IT0 = 1; IT1 = 1;
    }
    
    void main()	   
    {
    	init();
    	while(1)
    	{
    		for(num = 0; num < 10; num++)
    		{
    			P2 = table[num];
    			delay();
    		}
    	}
    }
    
    void int0() interrupt 0			   // 外部中断0中断服务程序
    {
    	EX0 = 0;
    	for(k = 0; k < 5; k++)
    	{
    		P2 = 0xf0;
    		delay();
    		P2 = 0x0f;
    		delay();
    		EX0 = 1;
    	}
    }
    
    void int1() interrupt 2			  // 外部中断1服务程序
    {
    	for(l = 0;l < 5; l++)
    	{
    		P2 = 0x00;
    		delay();
    		P2 = 0xff;
    		delay();
    	}
    }
    

    仿真图

    在这里插入图片描述
    文章来源:中断系统

    展开全文
  • 80C51单片机 中断系统及其应用;3.3.1 80C51单片机中断系统;3.3.1 80C51单片机中断系统; 80C51单片机有5个中断源2个中断优先级它的中断处理程序可实现两级嵌套有较强的中断处理能力 单片机中断系统的管理是通过...
  • MCS-51单片机中断系统

    2010-06-03 10:49:39
    MCS-51单片机中断系统结 构、中断控制、中断优先级、中断处理过 程,以及中断的应用
  • C51单片机学习笔记(四)——单片机中断系统应用 文章目录C51单片机学习笔记(四)——单片机中断系统应用1.单片机中断系统2.中断需要设置的4个寄存器 1.单片机中断系统 中断的概念: CPU在处理某一事件A时...

    C51单片机学习笔记(四)——单片机的中断系统及应用

    1.单片机的中断系统

    • 中断的概念:
      CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断产生);
      CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);
      待CPU将事件B处理完毕后,再回到原来事件A中断的地方继续处理事件A(中断返回),这一过程称为中断。
      在这里插入图片描述
    • 引起CPU中断的根源叫做中断源。中断源向CPU的请求,叫做中断请求。
      CUP暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再
      回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的
      部件称为中断系统(中断机构)。在这里插入图片描述
    • 51单片机的中断源:引起中断的事件称为中断源,51单片机一共有5个中断源,如下图:
    • 中断优先级:当单片机正在执行主程序时,如果发生了几个中断请求,单片机会由根据中断优先级寄存器的默认优先级进行处理,如下表:
      在这里插入图片描述
    • 中断嵌套:51单片机最多可以执行二级嵌套:
      在这里插入图片描述

    2.中断需要设置的4个寄存器

    • 中断允许寄存器IE
      CPU对中断源允许或不允许,由中断允许寄存器IE控制,IE在特殊功能寄存器中,字节地址为A8H,编程时可对寄存器的每一位单独操作,单片机复位时IE的各个位全部变为0.
      在这里插入图片描述
      在这里插入图片描述
    • 中断优先级寄存器IP
      中断优先级寄存器IP在特殊功能寄存器中,字节地址为B8H,IP用于设定各个中断源属于两级中断中的哪一级,单片机复位时,IP全部赋值为0
      在这里插入图片描述
      在这里插入图片描述
      注意:高优先级中断可以打断低优先级中断而形成中断嵌套,同优先级中断之间不能形成嵌套,低优先级中断不能打断高优先级中断。一般情况下,中断优先级寄存器不需要设置,而采用默认设置。
    • 定时器、计数器工作方式寄存器TMOD:
    • TMOD在单片机内部的特殊功能寄存器中,字节地址为89H,不能位寻址(编程时不能单独操作各个位,只能采用字节操作),该寄存器用来设定定时器的工作方法及功能选择,单片机复位时,TMOD全部为0.
      在这里插入图片描述
      在这里插入图片描述
    • 中断控制寄存器TCON:
      TCON在特殊功能寄存器中,字节地址为88H,可以进行位寻址,该寄存器用于控制定时器/计数器的开启停止、标志定时器/计数器的溢出和中断情况,还可对外部中断进行设置,单片机复位时TCON全部为0.
      在这里插入图片描述
    • 中断系统的工作原理图:
      在这里插入图片描述
    • 中断程序的写法格式:
    void 函数名() interrupt 中断号
    {
    	中断服务程序的语句
    }
    

    3.使用中断控制流水灯

    #include<reg52.h>
    #define uchar unsigned char
    #define LED P2
    void main()
    {
    	EA = 1;	 //中断允许寄存器IE中的总控制开关,EA=0代表允许产生中断
    	EX0 = 1; //中断允许寄存器IE中的EX0=1代表允许INT0产生中断
    	IT0 = 0; //中断控制寄存器TCON 当IT0 =0时,为电平触发方式,
    	         //如果P3.2为低电平,则产生中断请求(我的单片机P3.2连的是按键6,所以当按键6被按下时,产生中断请求)
    	
    	LED = 0x0f; //使后四个LED灯亮
    
    }
    void Change_LED() interrupt 0
    {
    	LED = 0xf0;	 //使前四个LED灯亮
    }
    

    4.定时器T0和T1的工作方式1

    • 这里用到前面所展示的定时器和计数器的工作方式寄存器TMOD

      在这里插入图片描述
      • 工作方式1的计数位是16位,下面以T0为例说明(T1和T0方式1是一样的)。T0有两个寄存器TL0个TH0组成,TL0为低8位,TH0为高8位。
      • 启动T0后TL0便在机器周期的作用下从0000 0000开始计数每次加一,当TL0计满(1111 1111十进制255)时,再计一个到256,此时TL0清零,同时向TH0进一位,直到TH0也计满此时达到65535,再计一个数就溢出,产生中断请求,进入中断处理程序,同时TF0(中断标识位自动置1)中断程序执行完后,硬件将自动将TF0清0.

    5.定时器控制流水灯

    • 下面用定时器做一个将发光二极管亮1s,熄1s,周期性闪烁
    #include<reg52.h>
    #define uchar unsigned char
    #define LED P2
    uchar num;
    void main()
    {
    	LED = 0xf0;
    	TMOD = 0x01;//将定时器0设为方式1,即16位定时器
    	/*TH0中每增加1,就相当于计了256个数,所以TH0装入初值是对256取模,TL0是对256取余*/
    	TH0 = (65536-45872)/256;//给定时器的高八位赋初值
    	TL0 = (65536-45872)%256;//给定时器的低八位赋初值
    	/*过程中不可能让其计65536个数,所以要给他赋初始值,单片机的晶振为11.0582MHz,机器周期为
    	1.09us(计一个数的时间),若要每50ms产生一个中断,则要计数50000/1.09=45872,所以将其作为初值*/
    	EA = 1;//开总中断
    	ET0 = 1;//开定时器0中断
    	TR0 = 1;//启动定时器T0
    	while(1)
    	{	   
    		
    		if(num == 20) //num=20代表用了50ms*20  = 1s
    		{
    			num = 0;
    			LED = ~LED;
    		}
    	}
    }
    void T0time() interrupt 1
    {
    	TH0 = (65536-45872)/256;//重装初值
    	TL0 = (65536-45872)%256;
    	num++;			  //每发生一次中断后,num++,num等于几,用的时间就是几个50ms
    
    }
    

    6。按键+中断+流水灯实例

    • 要求,当按键按下时,流水灯停止流动,再次按下时,流水灯从原来的位置继续流动
    #include<reg52.h>
    #define uchar unsigned char
    #define uint unsigned int
    #define LED P2
    sbit S = P3^2;
    int j;
    uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
    void init();
    void key();
    void delay(uint z);
    void LED_display();
    void main()
    {
    	init();
    	while(1)
    	LED_display();
    }
    
    void init()
    {
    	IT0 = 0; //设置低电平触发外部中断
    	EA = 1;  //开总中断
    	EX0 = 1;//开外部中断
    	j = 0;
    }
    void key()
    {
    	if(S == 0)
    	{
    		delay(8); //按键消抖
    		if(S == 0)
    		{
    			j++;
    			if(j==2)
    			j = 0;
    		}
    	}
    	while(!S);
    }
    void delay(uint z) //延时函数
    {
    	uint x,y;
    	for(x = z;x>0;x--)
    		for(y=110;y>0;y--);
    }
    void LED_display()
    {
    	uint i;
    	for(i=0;i<8;i++)   //数组控制流水灯
    	{
    		LED = table[i];
    		delay(500);
    	}
    }
    void stop() interrupt 0
    {
    	do{
    		key();
    	}while(j == 1);  //中断函数,当按键按下时中断
    
    }
    
    展开全文
  • 单片机中断详解······· 具体内容自测·········真是的还要多于二十个字符 难点 中断优先级控制原则 中断响应过程 要求  掌握: 中断控制的专用寄存器 ...5.3 中断系统应用举例
  • 单片机原理与应用课程;5.4 中断控制;5.4 中断控制;5.4 中断控制;THANKS
  • 1 第6章 中断系统及应用 3.7 中断概述 6.1 80C51单片机中断系统 6.2 中断服务程序的设计 中断系统的应用 6.4 6.3 2 6.1 中断概述 计算机的信息处理系统与人的一般思维有着许多异 曲同工之妙,中断技术就是其中的一例 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,698
精华内容 6,279
热门标签
关键字:

单片机中断系统的应用