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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1978|回復: 0
收起左側

STC8單片機一個IO檢測兩個按鍵+LED 源程序

[復制鏈接]
ID:1014008 發表于 2022-3-29 15:30 | 顯示全部樓層 |閱讀模式
  1. #include<all.h>
  2. sbit LED=P1^0;
  3. sbit k=P1^1;
  4. bit led1=0,led2=0;
  5. u8 value=0;
  6. void GPIO_Init()
  7. {
  8.                 P7M0=0X00;
  9.                 P7M1=0X00;
  10.                 P6M0=0X00;
  11.                 P6M1=0X00;
  12.                 P5M0=0x00;
  13.                 P5M1=0X00;
  14.                 P4M0=0X00;
  15.                 P4M1=0X00;
  16.                 P3M0=0X00;
  17.                 P3M1=0X00;
  18.                 P2M0=0x00;
  19.                 P2M1=0X00;
  20.                 P1M0=0X00;
  21.                 P1M1=0X00;
  22.                 P0M0=0X00;
  23.                 P0M1=0X00;
  24. }
  25. void LEDRY(u8 a)
  26. {
  27.         switch(a)
  28.         {
  29.                 case 0:P1M1|=0X01;break;//高阻,全滅
  30.                 case 1:P1M1&=0XFE;LED=1;break;//上拉,一個亮
  31.                 case 2:P1M1&=0XFE;LED=0;break;//上拉,一個亮
  32.                 case 3:P1M1&=0XFE;LED=~LED;break;//上拉模式
  33.         }
  34. }
  35. void key_scan(u8 c)
  36. {
  37.                 switch(c)
  38.                 {
  39.                         case 0://k=0;
  40.                                                 P1M0=0X00;
  41.                                                 P1M1|=0X02;//高阻模式
  42.                                                 //if(k==1)//一定是正按鍵按下
  43.                                                 break;
  44.                         case 1:k=1;        
  45.                                                 P1M0=0X00;
  46.                                                 P1M1&=0XFD;//上拉模式
  47.                                                 //if(k==0)//一定是負按鍵按下
  48.                                                 break;
  49.                 }
  50. }
  51. void Key_Enter()
  52. {
  53.                 static bit k12=0,flag=1,flag2=1;
  54.                 static u16 count=0;
  55.                 if(flag)//掃描檢測
  56.                 {
  57.                                 k12=~k12;
  58.                                 key_scan(k12);
  59.                 }
  60.                 if((k12&&k==0&&flag2)||(k12==0&&k==1&&flag2))
  61.                 {
  62.                                 flag=0;//停止掃描
  63.                                 count++;
  64.                                 if(count>=1000)
  65.                                 {
  66.                                                 count=0;
  67.                                                 flag2=0;//禁止再次進入
  68.                                                 if(k)
  69.                                                         led2=~led2;
  70.                                                 else
  71.                                                         led1=~led1;
  72.                                 }
  73.                 }
  74.                 if((k12&&k)||(k12==0&&k==0))
  75.                 {
  76.                                 flag=1;//允許掃描
  77.                                 count=0;
  78.                                 flag2=1;//
  79.                 }
  80.         
  81.         
  82.         
  83. }
  84. void main()
  85. {               
  86.                 u16 count=0,i=0;
  87.                 u8 xdata j=0;
  88.                 GPIO_Init();
  89.                 UartInit();
  90.                 while(1)
  91.                 {        
  92.                                 value=0;
  93.                                 if(led1)
  94.                                         value+=2;
  95.                                 if(led2)
  96.                                         value++;
  97.                                 LEDRY(value);
  98.                                 Key_Enter();
  99.                                 
  100.                                 
  101.                                 count++;
  102.                                 if(count>=500)
  103.                                 {
  104.                                                 count=0;
  105.                                                 i++;
  106.                                                 if(i>=1000)
  107.                                                 {
  108.                                                         i=0;
  109.                                                         j++;
  110.                                                         j%=4;
  111.                                                 }
  112.                                 }        
  113.                 }
  114. }
復制代碼

Keil代碼下載: STC8-一個IO檢測兩個按鍵 LED.rar (51.87 KB, 下載次數: 16)

評分

參與人數 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久亚洲 | 成人性生交大片免费看r链接 | 色吊丝在线 | 在线国产一区二区 | 亚洲欧美日韩精品久久亚洲区 | 四虎在线播放 | 人人九九精 | 91tv在线观看| 91视频18 | 成人国产精品免费观看 | 成人片免费看 | 精品美女视频在线观看免费软件 | 动漫www.被爆羞羞av44 | 一区二区三区亚洲视频 | 久久久久久精 | 国产精品视频在线免费观看 | 粉嫩高清一区二区三区 | 日韩在线视频一区 | 一区二区在线 | 国产午夜精品一区二区三区嫩草 | 毛片软件| 久久久久久久久久久久久久国产 | 91精品国产自产精品男人的天堂 | 男人的天堂中文字幕 | 亚洲一区在线观看视频 | 天天操天天插 | 青青久久 | 亚洲国产一区二区三区在线观看 | 中文字幕不卡在线观看 | 羞羞视频在线免费 | 最新中文字幕在线 | 国产高清视频一区 | 亚洲黄色一级毛片 | 在线观看精品 | 日本精品久久 | www.887色视频免费 | 国产精品久久久久久久久 | 蜜桃在线一区二区三区 | 欧美色综合一区二区三区 | 欧美激情精品久久久久 | 日韩欧美二区 |