标题: 单片机多级外部中断控制LED灯移动实验 Proteus仿真加源程序 [打印本页]

作者: 51黑电子happy    时间: 2017-3-29 22:08
标题: 单片机多级外部中断控制LED灯移动实验 Proteus仿真加源程序
单片机多级外部中断控制LED灯移动的仿真原理图(proteus工程文件可到本帖附件下载):


单片机源程序:

  1. //---------------------------------------------------------------------------------------------------------------
  2. // 程序名:  ZD5-5.c
  3. // 程序功能:多级外部中断控制灯移动   
  4. //---------------------------------------------------------------------------------------------------------------

  5. #include<reg51.h>                             // 头文件
  6. char sum =0;                                  // 声明sum为字符变量并赋初始值0
  7. delay ();                                     // 延时函数

  8. // ----------------------------------------------- 主函数  --------------------------------------------------

  9. void main()
  10. {
  11.    EA=1;                                       // 允许总中断
  12.    EX0=1;                                      // 允许外部中断0中断
  13.    EX1=1;                                      // 允许外部中断1中断
  14.    PX1=1;                                      // 外部中断1高优先级
  15.   
  16.    while(1)                                    // 无限循环
  17.      {     
  18.        delay ();
  19.        P1=0xff;
  20.        delay ();
  21.        P1=0x00;
  22.      }
  23. }

  24. // -------------------------------------------- INT0 中断函数  ----------------------------------------------

  25. void EX_INT0() interrupt 0   
  26.    {
  27.       while(sum<15)                            // 循环15次
  28.         {
  29.               delay ();                            // 调用延时函数
  30.           P1=0x0f;                             // P1输出0x0f
  31.           delay ();                            // 调用延时函数
  32.           P1=0xf0;                             // P1输出0xf0
  33.               sum ++;                              // sum 加1  
  34.                 }
  35.            sum=0;                                  // sum 清零,以便重新计数
  36.     }

  37. // -------------------------------------------- INT1 中断函数  -----------------------------------------------       

  38.   void EX_INT1() interrupt 2   
  39.    {
  40.     while(sum<15)                                // 循环15次         
  41.         {
  42.               delay ();                              // 调用延时函数
  43.           P1=0xc3;                               // P1输出0xc3
  44.           delay ();                              // 调用延时函数
  45.           P1=0x3c;                               // P1输出0x3c
  46.               sum ++;                                // sum 加1           
  47.                 }
  48.            sum=0;                                    // sum 清零,以便重新计数
  49.    }

  50. //-------------------------------------------------- 延时函数 -------------------------------------------------
  51.    delay ()
  52.     {
  53.       int a=50000;
  54.       while (a--);
  55.     }
  56. //---------------------------------------------------------------------------------------------------------------------

复制代码




该系列源码包含有很多非常经典,代码风格十分规范,而且注释详细的单片机例程,还带仿真,对于MCU学习特别是初学者是很有帮助的,全部源码下载(共25个项目):http://www.51hei.com/bbs/dpj-79328-1.html

本例程下载(含proteus仿真工程文件与源码):
5-5单片机多级外部中断控制LED灯移动实验.rar (40.01 KB, 下载次数: 31)



作者: asd122    时间: 2017-4-26 21:54
多谢楼主
作者: 27477655    时间: 2019-11-5 09:03
多谢大佬帮助




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1