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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2940|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

CC2530中斷方式按鍵控制燈,單擊和長(zhǎng)按效果 源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:850546 發(fā)表于 2020-11-30 08:45 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
IAR, 中斷方式按鍵控制燈,單擊和長(zhǎng)按效果

CC2530源程序如下:
  1. /*
  2. 如果按鍵按下時(shí)間小于1秒,則切換燈的閃爍效果
  3. 如果按鍵按下時(shí)間大于1秒,則保持常亮
  4. */
  5. #include <ioCC2530.h>

  6. #define K4 P0_1
  7. #define K5 P0_4

  8. #define D2 P1_0
  9. #define D1 P1_1


  10. unsigned char flag=0;

  11. static inline void delay(unsigned int time)  //因?yàn)橹袛嗾{(diào)用了此函數(shù),
  12.                                       //所以要使用內(nèi)聯(lián)函數(shù)inline修飾
  13. {
  14.   unsigned int i,j;
  15.   for(i=0;i<time;i++)
  16.   {
  17.     for(j=0;j<500;j++);
  18.   }
  19. }


  20. void main(void)
  21. {
  22.   P1DIR |= 1<<0|1<<1;
  23.   
  24.   IEN1 |= 1<<5;   //使能P0中斷
  25.   P0IEN |= 1<<1;  //P0_1中斷使能
  26.   PICTL |= 1<<0;  //下降沿觸發(fā)
  27.   EA = 1;         //使能總中斷
  28.   
  29.   while(1)
  30.   {
  31.     if(flag==0)
  32.     {
  33.       D1=~D1;
  34.       delay(500);
  35.     }
  36.     else
  37.     {
  38.       D1=~D1;
  39.       delay(100);
  40.     }
  41.   }
  42. }

  43. #pragma vector=P0INT_VECTOR  //vector小寫,結(jié)尾不能加分號(hào)
  44. __interrupt void P0INT(void)
  45. {
  46.   if((P0IFG&(1<<1))!=0) //P0IFG寄存器:P0口引腳中斷標(biāo)志位寄存器,
  47.                       //當(dāng)對(duì)應(yīng)引腳有上升或下降沿后標(biāo)志位變1
  48.   {
  49.     unsigned int i=0;
  50.     for(i=0;i<50;i++)//500ms內(nèi)判斷50次,如果按鍵抬起馬上跳出
  51.     {
  52.       delay(10);
  53.       if(K4==1) break;
  54.     }
  55.     if(i>1)//如果不是抬起的抖動(dòng)(因?yàn)殚L(zhǎng)按抬起時(shí)的抖動(dòng)會(huì)再次觸發(fā)中斷)
  56.     {
  57.       if(i!=50)//單擊
  58.       {
  59.         flag=0;
  60.       }
  61.       else    //長(zhǎng)按
  62.       {
  63.         flag=1;
  64.       }
  65.     }
  66.    

  67.     P0IFG &= ~(1<<1);//清除對(duì)應(yīng)中斷標(biāo)志位
  68.   }
  69.   P0IF = 0; //P0IF位:為P0口中斷申請(qǐng)標(biāo)志位,
  70.             //當(dāng)P0IFG中斷標(biāo)志寄存器有位為1,并且開啟了此位的中斷時(shí),P0IF位變1
  71. }










































  72. /*
  73. 如果按鍵按下時(shí)間小于1秒,則切換燈的閃爍效果
  74. 如果按鍵按下時(shí)間大于1秒,則保持常亮
  75. */

  76. /*
  77. #include <ioCC2530.h>

  78. #define K4 P0_1
  79. #define K5 P0_4

  80. #define D2 P1_0
  81. #define D1 P1_1


  82. unsigned char flag=0;

  83. static inline void delay(unsigned int time)  //因?yàn)橹袛嗾{(diào)用了此函數(shù),
  84.                                       //所以要使用內(nèi)聯(lián)函數(shù)inline修飾
  85. {
  86.   unsigned int i,j;
  87.   for(i=0;i<time;i++)
  88.   {
  89.     for(j=0;j<500;j++);
  90.   }
  91. }


  92. void main(void)
  93. {
  94.   P1DIR |= 1<<0|1<<1;
  95.   
  96.   IEN1 |= 1<<5;   //使能P0中斷
  97.   P0IEN |= 1<<1;  //P0_1中斷使能
  98.   PICTL |= 1<<0;  //下降沿觸發(fā)
  99.   EA = 1;         //使能總中斷
  100.   
  101.   while(1)
  102.   {
  103.     if(flag==0)
  104.     {
  105.       D1=~D1;
  106.       delay(500);
  107.     }
  108.     else
  109.     {
  110.      D1=~D1;
  111.       delay(100);
  112.     }
  113.   }
  114.   
  115. }

  116. #pragma vector=P0INT_VECTOR  //vector小寫,結(jié)尾不能加分號(hào)
  117. __interrupt void P0INT(void)
  118. {
  119.   if((P0IFG&(1<<1))!=0) //P0IFG寄存器:P0口引腳中斷標(biāo)志位寄存器,
  120.                       //當(dāng)對(duì)應(yīng)引腳有上升或下降沿后標(biāo)志位變1
  121.   {
  122.     unsigned int i=0;
  123.     delay(10);
  124.     if(K4==0)
  125.     {
  126.       for(i=0;i<50;i++)
  127.       {
  128.         delay(10);
  129.         if(K4==1) break;
  130.       }
  131.       if(i!=50)
  132.       {
  133.         flag = 0;
  134.       }
  135.       else
  136.       {
  137.         flag = 1;
  138.       }
  139.     }
  140.     P0IFG &= ~(1<<1);//清除對(duì)應(yīng)中斷標(biāo)志位
  141.   }


  142.   P0IF = 0; //P0IF位:為P0口中斷申請(qǐng)標(biāo)志位,
  143.             //當(dāng)P0IFG中斷標(biāo)志寄存器有位為1,并且開啟了此位的中斷時(shí),P0IF位變1
  144. }

  145. */
復(fù)制代碼

所有程序51hei提供下載:
03-2. 中斷方式按鍵控制燈,單擊和長(zhǎng)按效果.zip (29.48 KB, 下載次數(shù): 6)


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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品成人一区二区三区 | 美女张开腿露出尿口 | 中文字幕日韩在线 | 99亚洲国产精品 | 伊人久久免费 | 夜夜夜操 | 精品成人一区二区 | 国产精品毛片 | 亚洲一区二区在线播放 | 欧美黄色免费网站 | 亚洲国产精品一区二区三区 | 久久久久久久国产 | 中文字幕在线视频一区二区三区 | 91社区在线观看播放 | 91av视频在线| 91在线综合| 色综合成人网 | 国产一区二区三区在线 | 亚洲国产精品人人爽夜夜爽 | 一级毛片视频免费观看 | 中文字幕av在线播放 | 中文字幕乱码亚洲精品一区 | 中文字幕视频在线观看免费 | 欧美激情久久久 | 欧美视频福利 | 亚洲人成人一区二区在线观看 | 亚洲人a| 久久久久久一区 | 夜操| 日本理论片好看理论片 | 国产视频在线一区二区 | 国产精品美女久久久久aⅴ国产馆 | 久久久久亚洲 | 又爽又黄axxx片免费观看 | 久久久精品一区 | 国产探花在线精品一区二区 | 精品国产欧美一区二区 | 国产成人精品综合 | 视频三区 | 日韩av在线不卡 | 99看片网|