欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2336|回復: 1
收起左側

新手51單片機設置紅綠燈等問題,一個疑惑,跪求解答!

[復制鏈接]
ID:289777 發表于 2018-3-9 18:39 | 顯示全部樓層 |閱讀模式
我現在設計紅綠燈程序,要設計一個按鍵,按一下三燈全亮,在按一下繼續執行原來的讀秒。 比如現在倒計時從20開始,到了10的時候我按下鍵在松開,紅綠燈三燈一直亮,我再按一下,繼續從10開始倒計時。 我現在遇到的的問題就是 再按一下,繼續從10開始倒計時 這一步驟寫不出來,不知道怎么利用中斷寫出來,求解答。不知道如何改,我的程序如下: 直接從main主函數往下看就行了,中斷函數也在下面,純新手,求解答,在線等
QQ圖片20180309183636.png
單片機源程序如下:
  1. #include <reg52.h>
  2. sbit red=P2^0;
  3. sbit yellow=P2^1;  
  4. sbit green=P2^2;
  5. sbit red1=P2^3;
  6. sbit yellow1=P2^4;
  7. sbit green1=P2^5;
  8.   
  9. #define DATA1 P0
  10. #define DATA2 P1
  11. void delay(long n)
  12. {
  13. while(n--);
  14. }
  15. void numb_test1()
  16. {   char e;
  17. for(e=5;e>=0;e--)
  18. {
  19. yellow1=0;
  20. DATA1=((e/10)<<4)+e%10;
  21. DATA2=((e/10)<<4)+e%10;
  22. delay(7500) ;
  23. yellow1=1;
  24. delay(7500) ;
  25. }
  26. }

  27. void numb_test2()
  28. {char y;
  29. for(y=5;y>=0;y--)
  30. {    yellow=0;
  31. DATA1=((y/10)<<4)+y%10;
  32. DATA2=((y/10)<<4)+y%10;
  33. delay(7500) ;
  34. yellow=1;
  35. delay(7500) ;
  36. }
  37. }

  38. void numb_test()
  39. {char x,q;
  40. for(x=30,q=35;x>=0,q>=0;x--,q--)
  41. {
  42.       if(x<0)
  43.    {
  44.    green=1;
  45. numb_test2() ;
  46.     break;  
  47.   }
  48.   
  49. DATA1=((x/10)<<4)+x%10;
  50. DATA2=((q/10)<<4)+q%10;
  51. delay(15000) ;
  52. }
  53. }


  54.    
  55. numb_test3 ()
  56. {char z,w;
  57. for(w=15,z=20;w>=0,z>=0;w--,z--)
  58. {
  59. if(w<0)
  60. {
  61. green1=1;
  62.   numb_test1();
  63. break;
  64. }
  65. DATA1=((z/10)<<4)+z%10;
  66. DATA2=((w/10)<<4)+w%10;
  67. delay(15000) ;
  68. }
  69. }
  70.    
  71.   char t=0;
  72. void main()
  73. {   
  74. EA=1;
  75. EX0=1;
  76. IT0=1;
  77. while(1)
  78. {

  79.     green=0;
  80.     red1=0;
  81.     numb_test();
  82.     green=1;
  83. red1=1;
  84. green1=0;
  85.     red=0;
  86.     numb_test3();
  87.     red=1;
  88.     red1=0;
  89.   
  90. }
  91. }  
  92. void interrupt_0() interrupt 0
  93.   { char r ;
  94.   while(1)
  95.    { r=99;
  96.     red=1;
  97.     green=0  ;
  98.     yellow=1;
  99.     DATA1=((r/10)<<4)+r%10;
  100.     DATA2=((r/10)<<4)+r%10;
  101.      
  102.      
  103.       }
  104.   
  105.      }  
  106.       
復制代碼
回復

使用道具 舉報

ID:158375 發表于 2018-3-10 08:59 | 顯示全部樓層
中斷保護現場,再次中斷回復現場。。。。。。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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