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

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

QQ登錄

只需一步,快速開始

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

STC8單片機(jī)單擊,雙擊,長按代碼,純邏輯語法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:834124 發(fā)表于 2023-3-12 12:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)初學(xué)入門寫的,沒用定時(shí)器計(jì)數(shù)器,純粹的邏輯代碼,高手請(qǐng)路過。
  1. #include <STC8Gxx.H>        

  2. //--聲明全局函數(shù)--//
  3. void Delay10ms(unsigned int c);   //延時(shí)10ms
  4. unsigned int i, y, z, key_on;

  5. //--定義要使用的IO口--//
  6. sbit out_1 = P5^4;  //定義使用的IO口1
  7. sbit out_2 = P5^5;  //定義使用的IO口2
  8. sbit out_3 = P3^3;  //定義使用的IO口3
  9. sbit k1    = P3^2;  //定義按鍵使用的IO口


  10. void Delay10ms(unsigned int c)   //延時(shí)函數(shù)
  11. {
  12.     unsigned char a, b
  13.     for (;c>0;c--)
  14.         {
  15.                 for (b=162;b>0;b--)
  16.                 {
  17.                         for (a=235;a>0;a--);
  18.                 }
  19.         }      
  20. }

  21. void main()
  22. {                          
  23.         P5M0 = 0x18;
  24.         P5M1 = 0x00;        
  25.         P3M0 = 0x08;
  26.         P3M1 = 0x00;                //設(shè)置需要端口模式

  27.         out_1 = 0;
  28.         out_2 = 0;
  29.         out_3 = 0;                        //端口上電狀態(tài)

  30.         i = 0; y = 0; z = 0; key_on = 0;        //變量初始化
  31.                
  32.         while(1)
  33.         {                        
  34.                 if((!k1 || z) && i<15)                //按鍵按下,并只會(huì)執(zhí)行1.5S
  35.                 {                                          
  36.                         Delay10ms(2);
  37.                         if(!k1)                //按下
  38.                         {                                          
  39.                                 key_on = 1;        //標(biāo)志位,允許計(jì)時(shí)開始
  40.                                 z = 1;        //狀態(tài)鎖定
  41.                         }
  42.                         if(z==1 && k1==1)        //松開
  43.                         {
  44.                                 y ++;        //y次數(shù)+1
  45.                                 z = 0;        //狀態(tài)解鎖
  46.                         }
  47.                 }

  48.                 if(key_on==1 && i<16)                //限制總時(shí)長1.6S
  49.                 {
  50.                         i ++;        //循環(huán)i次數(shù)+1
  51.                         Delay10ms(10);
  52.                 }

  53.                 /*
  54.                 1次:按y=0,z=0 ;松y=1,z=0
  55.                 2次:按y=1,z=1 ;松y=2,z=0  
  56.                 3次:按y=2,z=1 ;松y=3,z=0
  57.                 4次:按y=3,z=1 ;松y=4,z=0
  58.                 長按:按松均為 y=0,z=1
  59.                 */

  60.                 if(k1 && i>=15)                //松開后處理
  61.                 {                                                  
  62.                         if(y==0 && z==1)                //長按
  63.                         {
  64.                                 out_1 = 0; out_2 = 0; out_3 = 0;
  65.                         }
  66.                         else if(z==0 && y>0)
  67.                         {
  68.                                 if(y==1)     //單擊
  69.                                 {
  70.                                         //out_3 = ~out_3;
  71.                                 }
  72.                                 else if(y==2)     //雙擊
  73.                                 {
  74.                                         out_1 = ~out_1;
  75.                                 }                                                
  76.                                 else if(y==3)     //三擊
  77.                                 {
  78.                                         out_2 = ~out_2;
  79.                                 }
  80.                                 else     //4擊及以上為長按
  81.                                 {                 
  82.                                         out_1 = 0; out_2 = 0; out_3 = 0;
  83.                                 }  
  84.                         }
  85.                         i = 0; y = 0; z = 0; key_on = 0;
  86.                 }
  87.         }
  88. }
復(fù)制代碼

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:483407 發(fā)表于 2023-3-14 12:51 | 只看該作者
時(shí)鐘是多少?
回復(fù)

使用道具 舉報(bào)

板凳
ID:1040201 發(fā)表于 2023-3-14 14:23 | 只看該作者
這個(gè)方法可以借用一下,感覺有點(diǎn)意思。
回復(fù)

使用道具 舉報(bào)

地板
ID:1040201 發(fā)表于 2023-3-14 14:24 | 只看該作者

這個(gè)是用延時(shí)來做的 ,沒用定時(shí)器 ,時(shí)間頻率可以按自己的來算
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲另类自拍 | 精产国产伦理一二三区 | 欧美精品久久久久 | 国产在线小视频 | 国产电影一区二区 | 国产1区在线 | 午夜免费福利影院 | 欧洲性生活视频 | www久久爱| 国产精品色婷婷久久58 | 中文字幕国产精品 | 亚洲一区二区三区四区五区午夜 | 成人免费毛片片v | 亚洲人va欧美va人人爽 | 91大神新作在线观看 | 久久精品亚洲 | 一级高清 | 日本精品视频 | 天天干在线播放 | 日本在线精品视频 | 免费日韩网站 | 日韩中文字幕2019 | 午夜99 | 狠狠干网站 | 亚洲视频免费在线观看 | 在线观看国产三级 | 久久久久国产一区二区三区四区 | 国内精品视频在线观看 | 成人精品一区二区户外勾搭野战 | 精品国产乱码久久久久久丨区2区 | 精品区 | 国产一区二区观看 | 亚洲欧美精品国产一级在线 | 激情网站在线 | 国产成人在线视频 | 亚洲一区二区三区免费视频 | 精品国产乱码久久久久久88av | 成人精品在线观看 | 999久久久久久久久6666 | 久久久久久国产精品 | 亚洲欧美在线一区 |