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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機程序 按下按鍵觸發變換模式問題

查看數: 2086 | 評論數: 6 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2023-5-29 09:38

正文摘要:

如圖,一個按鍵接P3.2中斷口,一排LED接P1口 要求每一下按鍵,LED循環切換流水燈和全閃燈模式 問題來了,我用外部中斷的模式,希望按下按鍵后,馬上就切換模式 實際上,卻總要執行完一個子程序才會改變,不知道代 ...

回復

ID:647261 發表于 2023-5-29 17:22
wulin 發表于 2023-5-29 13:58
把各種花樣流水燈用數組排列好,按下按鍵立即切換。

謝謝,這個方法對流水燈來說還是挺實用的
ID:647261 發表于 2023-5-29 17:21

謝謝,學到了。
這個方法很巧妙
縮短子程序的執行時間
在主程序不停地檢測count值,對按鍵反應很快
ID:647261 發表于 2023-5-29 17:16
leave323 發表于 2023-5-29 10:38
count放到兩個函數體里面檢測,不符合就退出。整體閃爍函數可以加一個循環。兩個函數之間再重新給LED賦0, ...

謝謝!
這個實現起來比較簡單,只要在每個子程序的循環中再加上count檢測就行了,反應時間最長的只不過是延時那點時間。
ID:213173 發表于 2023-5-29 13:58
把各種花樣流水燈用數組排列好,按下按鍵立即切換。
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit key = P3^2;

  6. unsigned char code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  7. unsigned char code table2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  8. unsigned char code table3[]={0x7e,0xbd,0xdb,0xe7,0x7e,0xbd,0xdb,0xe7};
  9. unsigned char code table4[]={0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa};
  10. uchar count = 0;
  11. uchar LED = 0xff;
  12. uchar i;

  13. void delay10ms(uint n)
  14. {
  15.    uchar i,j;
  16.    for(;n>0;n--)
  17.    {
  18.       for(i=0;i<18;i++)
  19.       {
  20.          for(j=0;j<184;j++){;}
  21.       }
  22.    }
  23. }


  24. void main(void)
  25. {
  26.    IT0 = 1;
  27.    EX0 = 1;
  28.    EA  = 1;
  29.    while(1)
  30.    {
  31.                 switch(count)
  32.                 {
  33.                         case 1: P1=table1[i]; break;
  34.                         case 2: P1=table2[i]; break;
  35.                         case 3: P1=table3[i]; break;
  36.                         case 4: P1=table4[i]; break;
  37.                         default:P1=0xff; break;
  38.                 }
  39.                 i=++i%8;
  40.                 delay10ms(50);
  41.    }
  42. }

  43. void key_check(void) interrupt 0
  44. {
  45.    if(key == 0)
  46.    {
  47.       delay10ms(1);
  48.       if(key == 0)
  49.       {
  50.          ++count;
  51.          if(count == 5)
  52.          count = 1;
  53.       }
  54.    }  
  55. }
復制代碼
ID:161164 發表于 2023-5-29 11:55

ID:1077017 發表于 2023-5-29 10:38
count放到兩個函數體里面檢測,不符合就退出。整體閃爍函數可以加一個循環。兩個函數之間再重新給LED賦0,防止從流水燈函數出來時LED不為0

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久草久| 天天精品在线 | 亚洲免费在线观看视频 | 日日骚网| 在线观看日韩精品视频 | 精品久久久久久国产 | 日一区二区 | 日日操视频 | 精品二区| 日韩色图在线观看 | 一区二区三区视频在线观看 | 亚洲精品天堂 | 亚洲激情综合网 | 国产精品成人品 | 亚洲成人三区 | 狠狠婷婷综合久久久久久妖精 | 成人免费视频观看视频 | 国产精品一区二区免费 | 成人亚洲视频 | 日韩成人 | 国产美女黄色片 | 亚洲一区 | av在线一区二区三区 | 欧美视频二区 | 亚洲国产一区二区在线 | 日本精品视频在线观看 | 欧美视频第二页 | 青青草精品视频 | 一级黄色毛片 | 玖玖视频网 | 欧美日韩不卡合集视频 | 国产你懂的在线观看 | 在线观看成人小视频 | 91麻豆精品国产91久久久更新资源速度超快 | 91麻豆精品国产91久久久久久久久 | 久久久免费观看视频 | 免费成人在线网站 | 视频1区2区 | 又黄又爽的网站 | 亚洲精品一区在线观看 | 日韩中文欧美 |