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

QQ登錄

只需一步,快速開始

帖子
查看: 14893|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)按鍵長(zhǎng)按,短按,連按的程序,希望對(duì)新手有所幫助~

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
畢業(yè)不久的我,分享一個(gè)按鍵實(shí)現(xiàn)單擊、雙擊、長(zhǎng)按


單片機(jī)源程序如下:
  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. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:







anjian(dan shuang chang).zip

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

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
tieq1952 + 5 贊一個(gè)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:218360 發(fā)表于 2017-8-30 08:13 | 只看該作者
這個(gè)很,好,一直不知道怎么寫這個(gè)按鍵的問題,謝謝
回復(fù)

使用道具 舉報(bào)

板凳
ID:188935 發(fā)表于 2017-8-31 11:13 | 只看該作者
打雜的 發(fā)表于 2017-8-30 08:13
這個(gè)很,好,一直不知道怎么寫這個(gè)按鍵的問題,謝謝

不客氣,互相學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

地板
ID:151348 發(fā)表于 2017-8-31 16:33 | 只看該作者
用定時(shí)器?感覺用狀態(tài)機(jī)好些
回復(fù)

使用道具 舉報(bào)

5#
ID:188935 發(fā)表于 2017-9-1 08:51 | 只看該作者
imxuheng 發(fā)表于 2017-8-31 16:33
用定時(shí)器?感覺用狀態(tài)機(jī)好些

狀態(tài)機(jī)?
回復(fù)

使用道具 舉報(bào)

6#
ID:64017 發(fā)表于 2017-12-6 19:23 | 只看該作者
用定時(shí)器?感覺用狀態(tài)機(jī)好些
回復(fù)

使用道具 舉報(bào)

7#
ID:30057 發(fā)表于 2017-12-13 01:54 | 只看該作者
不客氣,互相學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

8#
ID:241686 發(fā)表于 2017-12-13 10:04 | 只看該作者
不錯(cuò),感謝樓主
回復(fù)

使用道具 舉報(bào)

9#
ID:248373 發(fā)表于 2017-12-13 10:26 來自觸屏版 | 只看該作者
不錯(cuò)不錯(cuò)
回復(fù)

使用道具 舉報(bào)

10#
ID:253767 發(fā)表于 2017-12-13 17:38 | 只看該作者
這個(gè)很有用
回復(fù)

使用道具 舉報(bào)

11#
ID:99056 發(fā)表于 2017-12-28 10:20 來自觸屏版 | 只看該作者
用定時(shí)器?感覺用狀態(tài)機(jī)好些
回復(fù)

使用道具 舉報(bào)

12#
ID:70953 發(fā)表于 2018-1-9 09:32 | 只看該作者
很好,就是沒有幣
回復(fù)

使用道具 舉報(bào)

13#
ID:275345 發(fā)表于 2018-2-7 08:11 | 只看該作者
謝謝樓主
回復(fù)

使用道具 舉報(bào)

14#
ID:508457 發(fā)表于 2019-4-19 16:45 | 只看該作者
新人初到貴寶地,如果樓主能在后面加個(gè)注解就更加完美了。
回復(fù)

使用道具 舉報(bào)

15#
ID:59300 發(fā)表于 2023-9-5 17:02 | 只看該作者
很棒的文章,我是個(gè)新手急需學(xué)習(xí),謝謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表