找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3723|回复: 2
打印 上一主题 下一主题
收起左侧

单片机多级外部中断控制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)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:194008 发表于 2017-4-26 21:54 | 只看该作者
多谢楼主
回复

使用道具 举报

板凳
ID:632189 发表于 2019-11-5 09:03 来自手机 | 只看该作者
多谢大佬帮助
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表