找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1602|回復: 3
收起左側

單片機小白被難倒了,為什么我的程序控制不了中斷1

[復制鏈接]
ID:918026 發(fā)表于 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
回復

使用道具 舉報

ID:213173 發(fā)表于 2021-5-9 14:25 | 顯示全部樓層
不是特別需求,中斷函數(shù)里不要寫過多的語句,特別不能有長延時。中斷函數(shù)里只留標識即可,其它任務放在主函數(shù)處理。
  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 發(fā)表于 2021-5-11 16:48 | 顯示全部樓層
wulin 發(fā)表于 2021-5-9 14:25
不是特別需求,中斷函數(shù)里不要寫過多的語句,特別不能有長延時。中斷函數(shù)里只留標識即可,其它任務放在主函 ...

好的,謝謝大佬
回復

使用道具 舉報

ID:919514 發(fā)表于 2021-5-11 17:37 | 顯示全部樓層
中斷不要放太多代碼
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表