找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机小白被难倒了,为什么我的程序控制不了中断1

[复制链接]
跳转到指定楼层
楼主
ID:918026 发表于 2021-5-9 13:42 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. uchar L[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
  5. void delay()
  6. {
  7.   int i,j;
  8.   for(i=0;i<183;i++)
  9.         for(j=0;j<500;j++);
  10. }
  11. void main()
  12. {
  13.   uchar i,
  14.   EA=1;
  15.         EX1=1;
  16.         IT1=1;
  17.   PX1=1;
  18.         while(1)
  19.         {
  20.           for(i=0;i<8;i++)
  21.     {
  22.                 P1=L[i];
  23.                 delay();
  24.     }

  25.   }
  26. }
  27. void int1 () interrupt 2
  28. {
  29. uchar i,j=0XFD,a,b=0XFE,k;
  30.   P1=0xff;
  31.         for(k=0;k<5;k++)
  32.          {
  33.   for(i=0;i<4;i++)
  34.     {
  35.           P1=_crol_(j,i*2);
  36.                 delay();
  37.            }

  38.         P1=0xff;
  39.   for(a=0;a<4;a++)
  40.           {
  41.           P1=_crol_(b,a*2);
  42.                 delay();
  43.           }
  44.                 EX1=1;

  45.         }
  46. }
复制代码

-5559161fb0c727c1.png (40.8 KB, 下载次数: 43)

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

使用道具 举报

沙发
ID:213173 发表于 2021-5-9 14:25 | 只看该作者
不是特别需求,中断函数里不要写过多的语句,特别不能有长延时。中断函数里只留标识即可,其它任务放在主函数处理。
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. uchar L[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
  5. bit flag=1;

  6. void delay()
  7. {
  8.         int i,j;
  9.         for(i=0;i<183;i++)
  10.                 for(j=0;j<500;j++);
  11. }
  12. void main()
  13. {
  14.         uchar i,j=0XFD,a,b=0XFE,k;
  15.         IT1 = 1;
  16.         EX1 = 1;
  17.         EA = 1;  
  18.         while(1)
  19.         {
  20.                 if(flag)
  21.                 {
  22.                         for(i=0;i<8;i++)
  23.                         {
  24.                                 P1=L[i];
  25.                                 delay();
  26.                         }
  27.                 }
  28.                 else
  29.                 {
  30.                         P1=0xff;
  31.                         for(k=0;k<5;k++)
  32.                         {
  33.                                 for(i=0;i<4;i++)
  34.                                 {
  35.                                         P1=_crol_(j,i*2);
  36.                                         delay();
  37.                                 }       
  38.                                 P1=0xff;
  39.                                 for(a=0;a<4;a++)
  40.                                 {
  41.                                         P1=_crol_(b,a*2);
  42.                                         delay();
  43.                                 }
  44.                         }
  45.                 }
  46.         }
  47. }

  48. void int1 () interrupt 2
  49. {
  50.         flag=~flag;       
  51. }
复制代码
回复

使用道具 举报

板凳
ID:918026 发表于 2021-5-11 16:48 | 只看该作者
wulin 发表于 2021-5-9 14:25
不是特别需求,中断函数里不要写过多的语句,特别不能有长延时。中断函数里只留标识即可,其它任务放在主函 ...

好的,谢谢大佬
回复

使用道具 举报

地板
ID:919514 发表于 2021-5-11 17:37 | 只看该作者
中断不要放太多代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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