久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1551|回復: 4
打印 上一主題 下一主題
收起左側

單片機流水燈程序仿真中斷只執行一次,第二次無法執行?

[復制鏈接]
跳轉到指定樓層
樓主
ID:1064239 發表于 2023-4-17 00:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
設置的流水燈按鍵key2啟動后key1對應的P3.2中斷啟動進去后停止了,但是在啟動按鍵key2執行流水燈后中斷就感覺失效了無法停止,并且兩個按鈕同時按下不松開的情況下竟然去執行key2的流水燈了,第二個問題除了main()函數調用使其中斷結束后不執行程序還有什么辦法使中斷結束后不回到程序執行嗎?
單片機源程序如下:
  1. #include<reg51.h>
  2. #include <intrins.h>
  3. sbit key1=P3^2;        //定義P3.2口為按鍵key1
  4. sbit key2=P3^3;        //定義P3.3口為按鍵key2
  5. sbit led1=P1^0;        //定義P1.0口為電源指示燈紅燈
  6. sbit led2=P1^1;        //定義P1.1口為電源指示燈綠燈

  7. char a[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};        //初始化數組對應流水燈端口
  8. int i,k;

  9. void delay(int x)        //延時函數
  10. {char i;
  11.         while(x--)
  12.         {        for(i=0;i<120;i++);        }}

  13. void exint0() interrupt 0        //中斷函數
  14. {
  15. if(key1==0)
  16. {
  17. delay(100);  //按鍵防抖

  18.   if(key1==0)  //判斷執行中斷
  19.   {         
  20.      P2=0Xff; //P2口復位
  21.      led1=0; //紅色電源指示燈亮起
  22.          led2=1; //綠色電源指示燈停止
  23.          key2=1;//初始化P3.3按鍵
  24.          i=0; //初始化數值
  25.          k=0; //初始化數值
  26.          main();//返回主函數。--使其中斷結束后不在回到程序繼續執行                       
  27. }
  28. }
  29. }               

  30. void interr()//中斷函數打開
  31. {
  32.          EA=1;                //開啟總中斷
  33.          EX0=1;                //開啟外部中斷P3.2
  34.          IT0=0;                //設置外部中斷觸發模式,1是下降沿觸發,0是低電平觸發
  35. }

  36. main()
  37. {
  38. interr();//初始化中斷函數
  39. i=k=0;//初始化數值
  40. led1=0; //紅色電源指示燈亮起
  41. led2=1; //綠色電源指示燈停止

  42.                
  43. while(1)//程序循環掃描
  44. {

  45.   if(key2==0)//判斷P3.3接口按鍵是否啟動
  46.   {         
  47.      interr();//初始化中斷函數
  48.            i=0; //初始化數值
  49.             led2=0; //綠色電源指示燈亮起
  50.      led1=1; //紅色電源指示燈停止
  51.      k=1; //初始化數值
  52.          
  53.            while(k)//初始化數值K為1后-開始循環流水燈
  54.          {
  55.          for(i=0; i<8; i++)        //循環判斷         向下循環點亮LED
  56.         {
  57.             P2=a[i];  // 右移數組,點亮下一位LED
  58.            delay(400); //延時函數
  59.        }
  60.       
  61.        for(i=6;i>0; i--)  //循環判斷  向上循環點亮LED
  62.        {
  63.             P2=a[i]; // 左移數組,點亮上一位LED
  64.             delay(400);  //延時函數
  65.        }
  66.     }}
  67. }
  68. }

復制代碼


流水燈仿真.zip

57.7 KB, 下載次數: 2

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2023-4-17 07:22 | 只看該作者
中斷調用主函數?編譯能通過?
回復

使用道具 舉報

板凳
ID:161164 發表于 2023-4-17 09:41 | 只看該作者
  1. #include<reg51.h>
  2. #include <intrins.h>
  3. sbit key1=P3^2;        //定義P3.2口為按鍵key1
  4. sbit key2=P3^3;        //定義P3.3口為按鍵key2
  5. sbit led1=P1^0;        //定義P1.0口為電源指示燈紅燈
  6. sbit led2=P1^1;        //定義P1.1口為電源指示燈綠燈

  7. char a[8]= {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};       //初始化數組對應流水燈端口
  8. int i,j,k;

  9. void delay(int x)        //延時函數
  10. {
  11.         char i;
  12.         while(x--)
  13.         {
  14.                 for(i=0; i<120; i++);
  15.         }
  16. }

  17. void exint0() interrupt 0        //中斷函數
  18. {
  19.         P2=0Xff; //P2口復位
  20.         led1=0; //紅色電源指示燈亮起
  21.         led2=1; //綠色電源指示燈停止
  22.         i=0; //初始化數值
  23.         k=0; //初始化數值
  24. }

  25. void interr()//中斷函數打開
  26. {
  27.         EA=1;                //開啟總中斷
  28.         EX0=1;                //開啟外部中斷P3.2
  29.         IT0=0;                //設置外部中斷觸發模式,1是下降沿觸發,0是低電平觸發
  30. }

  31. main()
  32. {
  33.         int cnt = 0;
  34.         interr();//初始化中斷函數
  35.         i=j=k=0;//初始化數值
  36.         led1=0; //紅色電源指示燈亮起
  37.         led2=1; //綠色電源指示燈停止


  38.         while(1)//程序循環掃描
  39.         {

  40.                 if(key2==0)//判斷P3.3接口按鍵是否啟動
  41.                 {
  42.                         k=1; //初始化數值
  43.                 }
  44.                 if(k)//初始化數值K為1后-開始循環流水燈
  45.                 {
  46.                         if(cnt == 0)
  47.                         {
  48.                                 cnt = 400;
  49.                                 if(!j)
  50.                                 {
  51.                                         P2=a[i];  // 右移數組,點亮下一位LED
  52.                                         i++;
  53.                                         if(i>=8)
  54.                                         {
  55.                                                 i=6;
  56.                                                 j=1;
  57.                                         }
  58.                                 }
  59.                                 else
  60.                                 {
  61.                                         P2=a[i];  // 右移數組,點亮下一位LED
  62.                                         i--;
  63.                                         if(i<=0)
  64.                                         {
  65.                                                 i=0;
  66.                                                 j=0;
  67.                                         }
  68.                                 }
  69.                         }
  70.                         else
  71.                         {
  72.                                 cnt--;
  73.                                 delay(1); //延時函數
  74.                         }
  75.                 }
  76.         }
  77. }

復制代碼


回復

使用道具 舉報

地板
ID:1064239 發表于 2023-4-17 09:52 來自觸屏版 | 只看該作者
wulin 發表于 2023-4-17 07:22
中斷調用主函數?編譯能通過?

主函數不是說不需要聲明可以隨意調用嗎?
回復

使用道具 舉報

5#
ID:1064239 發表于 2023-4-17 09:56 | 只看該作者

謝謝大佬的參考程序,我好好研究一下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品久久久久久久久久 | 亚洲美乳中文字幕 | 久久中文字幕一区 | 久久精品国产99国产精品亚洲 | 国产视频在线观看一区二区三区 | www.嫩草 | 亚洲综合无码一区二区 | 国产成视频在线观看 | jlzzjlzz国产精品久久 | 日韩精品一区二区三区四区 | 午夜亚洲 | 国内精品久久久久久久影视简单 | 国产欧美日韩一区二区三区在线观看 | 中文字幕视频在线观看免费 | 日韩免费av网站 | 欧美中文字幕一区二区 | 久久一本 | 91福利影院| 国产精品1| 成人h动漫精品一区二区器材 | 久久99国产精一区二区三区 | 欧美1页 | 国产成人99久久亚洲综合精品 | 亚洲一区二区视频 | 欧美国产日韩在线 | 国产美女视频黄a视频免费 国产精品福利视频 | 午夜精品久久久久久久久久久久久 | 亚洲激情自拍偷拍 | 日本高清不卡视频 | 亚洲视频免费在线 | www.日韩高清 | 久久久国产一区二区三区 | 久久精品色欧美aⅴ一区二区 | 欧美精品一二三 | 男女羞羞视频在线免费观看 | 中文字幕电影在线观看 | 国产激情一区二区三区 | 国产一区二区日韩 | 蜜桃av一区二区三区 | 国产成人精品一区二区三区四区 | 国产日韩精品视频 |