標題: 單片機按鍵長按,短按,連按的程序,希望對新手有所幫助~ [打印本頁]

作者: 渴望壯大    時間: 2017-8-25 16:55
標題: 單片機按鍵長按,短按,連按的程序,希望對新手有所幫助~
畢業(yè)不久的我,分享一個按鍵實現(xiàn)單擊、雙擊、長按


單片機源程序如下:
  1. #include <define.h>

  2. bit b_1ms_t;

  3. void PWM_led(void);
  4. void deplay(void);
  5. void key_on(void);
  6. void PWM_Int(void);
  7. void ad_int(void);
  8. void ad_on(void);

  9. void Init_System(void)
  10. {
  11.         WDTR = 0x5A;
  12.         CLKSEL = 0x06;
  13.         CLKCMD = 0x69;
  14.         CKCON = 0x10;
  15.        
  16.         P0M = 0xd0;
  17.         P0UR = 0x00;
  18.        
  19.         P1M = 0xe0;
  20.         P1UR = 0x05;
  21.        
  22.         P2M = 0x03;
  23.         P2UR = 0x00;
  24.        
  25.         led = 0;
  26. }

  27. void Time_int(void)
  28. {
  29.         TMOD = 0x55;
  30.         TCON0 = 0x22;
  31.        
  32.         TH0 = 0xff;
  33.         TL0 = 0xce;
  34.        
  35.         TH1 = 0xfc;
  36.         TL1 = 0x18;
  37.        
  38.         EAL = 1;
  39.         ET0 = 1;
  40.         TR0 = 1;
  41.         ET1 = 1;
  42.         TR1 = 1;
  43. }

  44. void PWM_Int(void)
  45. {
  46.         PW1M |= 0x20;
  47.         PW1CH = 0x20;
  48.        
  49.         PW1YH = 0x1f;    //T
  50.         PW1YL = 0x40;
  51.        
  52.         PW1DH = 0x00;    //duty
  53.         PW1DL = 0x00;
  54.        
  55.         PW1BH = PW1DH;
  56.     PW1BL = PW1DL;
  57. }

  58. void ad_int(void)
  59. {
  60.         P1CON = 0x08;
  61.         VREFH = 0x03;
  62.         ADR = 0x50;
  63.         ADM |= 0x03;
  64. }

  65. void main(void)
  66. {
  67.         Init_System();
  68.         Time_int();
  69.         PWM_Int();
  70.         ad_int();
  71.         while(1)
  72.         {
  73.                 if(b_1ms_t)     
  74.                 {
  75.                         b_1ms_t = 0;
  76.                         WDTR = 0x5A;
  77.                         deplay();     
  78.                         key_on();
  79.                         PWM_led();
  80.                         ad_on();
  81.                 }   
  82.         }
  83. }

  84. void Time0_Init() interrupt ISRTimer0
  85. ……………………

  86. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:







anjian(dan shuang chang).zip

74.84 KB, 下載次數(shù): , 下載積分: 黑幣 -5


作者: 渴望壯大    時間: 2017-8-25 16:55
標題: 畢業(yè)不久的我,分享一個按鍵長按,短按,連按的程序,希望對新手有所幫助~
畢業(yè)不久的我,分享一個按鍵長按,短按,連按的程序,希望對新手有所幫助~

作者: 打雜的    時間: 2017-8-30 08:13
這個很,好,一直不知道怎么寫這個按鍵的問題,謝謝
作者: 渴望壯大    時間: 2017-8-31 11:13
打雜的 發(fā)表于 2017-8-30 08:13
這個很,好,一直不知道怎么寫這個按鍵的問題,謝謝

不客氣,互相學(xué)習(xí)
作者: imxuheng    時間: 2017-8-31 16:33
用定時器?感覺用狀態(tài)機好些
作者: 渴望壯大    時間: 2017-9-1 08:51
imxuheng 發(fā)表于 2017-8-31 16:33
用定時器?感覺用狀態(tài)機好些

狀態(tài)機?
作者: shuangxi    時間: 2017-12-6 19:23
用定時器?感覺用狀態(tài)機好些
作者: taoghua    時間: 2017-12-13 01:54
不客氣,互相學(xué)習(xí)
作者: 黎明即起    時間: 2017-12-13 10:04
不錯,感謝樓主
作者: 18749206190    時間: 2017-12-13 10:26
不錯不錯
作者: tieq1952    時間: 2017-12-13 17:38
這個很有用
作者: 45e67    時間: 2017-12-28 10:20
用定時器?感覺用狀態(tài)機好些
作者: tzcl    時間: 2018-1-9 09:32
很好,就是沒有幣
作者: dffgf    時間: 2018-2-7 08:11
謝謝樓主
作者: lncu    時間: 2019-4-19 16:45
新人初到貴寶地,如果樓主能在后面加個注解就更加完美了。
作者: wy13043207006    時間: 2023-9-5 17:02
很棒的文章,我是個新手急需學(xué)習(xí),謝謝




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1