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

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

QQ登錄

只需一步,快速開始

搜索
查看: 15915|回復(fù): 28
收起左側(cè)

單片機(jī)通過(guò)單個(gè)按鍵按下時(shí)間(長(zhǎng)短按鍵)執(zhí)行不同功能

  [復(fù)制鏈接]
ID:225732 發(fā)表于 2017-11-8 14:46 | 顯示全部樓層 |閱讀模式
如果要節(jié)省單片機(jī)IO口,可以用一個(gè)按鍵,通過(guò)判斷按下的時(shí)間來(lái)執(zhí)行不同的子程序,自己閑來(lái)無(wú)事隨意寫了個(gè),可能不夠精簡(jiǎn),但是功能都有,proteus仿真能出來(lái),三種按鍵時(shí)間,短時(shí)間按下LED1亮,中等長(zhǎng)度時(shí)間LED2亮,長(zhǎng)時(shí)間按下LED3亮,具體按多久,自己稍微體會(huì)下就能把握

單片機(jī)長(zhǎng)短按鍵仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png 0.png

單片機(jī)源程序:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define ulong unsigned long
  6. sbit keyback=P1^0;
  7. sbit k=P1^4;
  8. sbit key1=P1^1;
  9. sbit key2=P1^2;
  10. sbit key3=P1^3;
  11. static uint i=0;
  12. uchar keystay=0x00;
  13. uchar T0RH;
  14. uchar T0RL;

  15. void configtimer0(uchar ms)
  16. {
  17. ulong tmp;
  18. tmp=11059200/12;
  19. tmp=(ms*tmp)/1000;
  20. tmp=65536-tmp+10;
  21. T0RH=(unsigned char)(tmp>>8);
  22. T0RL=(unsigned char)tmp;
  23. TMOD &=0xF0;
  24. TMOD |=0x01;
  25. TH0=T0RH;
  26. TL0=T0RL;
  27. ET0=1;
  28. TR0=1;
  29. }


  30. void Judge(uint num)
  31. {
  32. if((5<num)&&(num<=50))
  33. {                                          
  34. key1=0;
  35. key2=1;
  36. key3=1;
  37. i=0;
  38. }
  39. if((50<num)&&(num<=120))
  40. {
  41. key2=0;
  42. key1=1;
  43. key3=1;
  44. i=0;
  45. }
  46. if(num>120)
  47. {
  48. key3=0;
  49. key1=1;
  50. key2=1;
  51. i=0;
  52. }
  53. }



  54. main()
  55. {
  56. EA=1;
  57. configtimer0(10);
  58. while(1)
  59. {
  60.   if((keystay&0xFF)==0x00)
  61. {
  62. Judge(i);
  63.           }
  64.          }
  65. }



  66. void keyscan()
  67. {
  68. keystay=(keystay<<1) | (!keyback);
  69. }
  70.   
  71. void interrupt_timer0()interrupt 1
  72. {
  73. TH0=T0RH;
  74. TL0=T0RL;
  75. keyscan();
  76. if((keystay&0xFF)==0xFF)
  77. {
  78.   i++;
  79.   
  80.   if(i>400)
  81.   {
  82.    i=0;
  83.          }
  84. …………
  85. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

全部資料51hei下載地址:
長(zhǎng)短按鍵.rar (68.63 KB, 下載次數(shù): 221)


評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2017-11-8 17:27 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:130231 發(fā)表于 2017-11-8 20:39 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:130231 發(fā)表于 2017-11-8 20:45 | 顯示全部樓層
樓主請(qǐng)教一下void configtimer0(uchar ms)是什么函數(shù)。也就是它的作用。
回復(fù)

使用道具 舉報(bào)

ID:247636 發(fā)表于 2017-11-10 09:11 來(lái)自觸屏版 | 顯示全部樓層
好東西,謝謝樓主分享!
回復(fù)

使用道具 舉報(bào)

ID:244951 發(fā)表于 2017-11-12 10:25 | 顯示全部樓層
非常詳細(xì),學(xué)習(xí)了!!!
回復(fù)

使用道具 舉報(bào)

ID:249116 發(fā)表于 2017-11-13 22:21 | 顯示全部樓層
非常詳細(xì),學(xué)習(xí)了!!!
回復(fù)

使用道具 舉報(bào)

ID:247166 發(fā)表于 2017-11-14 00:03 來(lái)自觸屏版 | 顯示全部樓層
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:323951 發(fā)表于 2018-5-28 14:10 | 顯示全部樓層
好東西,謝謝樓主分享!
回復(fù)

使用道具 舉報(bào)

ID:323951 發(fā)表于 2018-5-28 15:51 | 顯示全部樓層
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:292815 發(fā)表于 2018-8-27 10:33 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:403447 發(fā)表于 2018-10-16 08:22 | 顯示全部樓層
對(duì)我等初學(xué)者,有莫大的幫助,感謝樓主。
回復(fù)

使用道具 舉報(bào)

ID:437990 發(fā)表于 2018-12-14 14:31 | 顯示全部樓層
zqy181818 發(fā)表于 2017-11-8 20:45
樓主請(qǐng)教一下void configtimer0(uchar ms)是什么函數(shù)。也就是它的作用。

相當(dāng)于把中斷裝初值 以及各類中斷的啟動(dòng) 寫成一個(gè)函數(shù) 用于中斷初始化 方便調(diào)用
回復(fù)

使用道具 舉報(bào)

ID:437990 發(fā)表于 2018-12-21 19:28 | 顯示全部樓層
void keyscan()
{
keystay=(keystay<<1) | (!keyback);
}

  if((keystay&0xFF)==0x00)

請(qǐng)問(wèn)這兩個(gè)有前輩可以解釋一下嗎?看不太懂。。。
回復(fù)

使用道具 舉報(bào)

ID:429906 發(fā)表于 2018-12-21 19:39 | 顯示全部樓層

好東西,謝謝樓主分享!
回復(fù)

使用道具 舉報(bào)

ID:451762 發(fā)表于 2018-12-21 19:54 | 顯示全部樓層
樓主牛逼
回復(fù)

使用道具 舉報(bào)

ID:262034 發(fā)表于 2018-12-22 09:02 | 顯示全部樓層
謝謝分享。
回復(fù)

使用道具 舉報(bào)

ID:446902 發(fā)表于 2018-12-22 13:23 | 顯示全部樓層
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:164189 發(fā)表于 2019-2-21 14:12 | 顯示全部樓層
來(lái)學(xué)習(xí)的
回復(fù)

使用道具 舉報(bào)

ID:462433 發(fā)表于 2019-3-7 21:08 | 顯示全部樓層
程序中的i是干嘛的呀?
回復(fù)

使用道具 舉報(bào)

ID:166284 發(fā)表于 2019-4-18 11:58 | 顯示全部樓層
掃描函數(shù) 能解釋一下嗎
回復(fù)

使用道具 舉報(bào)

ID:166284 發(fā)表于 2019-4-18 11:58 | 顯示全部樓層
s26250 發(fā)表于 2018-12-21 19:28
void keyscan()
{
keystay=(keystay

這個(gè)我也沒看懂,同求
回復(fù)

使用道具 舉報(bào)

ID:634487 發(fā)表于 2019-11-3 16:39 | 顯示全部樓層
謝謝  下個(gè)學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

ID:634898 發(fā)表于 2019-11-3 20:18 | 顯示全部樓層
這個(gè)很高端  謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:230975 發(fā)表于 2019-11-4 10:11 | 顯示全部樓層
zqy181818 發(fā)表于 2017-11-8 20:45
樓主請(qǐng)教一下void configtimer0(uchar ms)是什么函數(shù)。也就是它的作用。

給定時(shí)器初始化,賦值
回復(fù)

使用道具 舉報(bào)

ID:85743 發(fā)表于 2019-11-14 01:19 | 顯示全部樓層

非常詳細(xì),學(xué)習(xí)了!!!51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:91521 發(fā)表于 2019-11-14 11:19 | 顯示全部樓層
不實(shí)用,不能實(shí)現(xiàn)到達(dá)時(shí)間不松按鍵也相應(yīng)
回復(fù)

使用道具 舉報(bào)

ID:76612 發(fā)表于 2021-10-17 09:17 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:6467 發(fā)表于 2023-11-6 17:00 | 顯示全部樓層
好資料,51黑有你更精彩!!! 就是需要這方面的指導(dǎo);謝謝!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久久久久影视 | 日韩av在线免费 | 国产在线精品一区二区三区 | 成人精品免费视频 | 成人无遮挡毛片免费看 | 亚洲一区二区网站 | 精品久久99 | 在线不卡视频 | 日韩精品久久久久久 | 国产日韩一区二区 | www.9191.com | 中文字幕第二十页 | 久久久国产精品视频 | 久久国产成人 | 欧美男人天堂 | 中文字幕视频三区 | 日韩超碰在线 | 狠狠干综合视频 | 免费看91 | 亚洲最新在线视频 | 久久久久99 | 中文字幕影院 | 国产有码| 成人免费视频在线观看 | 国产精品欧美一区喷水 | 国产精品美女久久久久aⅴ国产馆 | 亚洲精品视频在线播放 | 午夜电影福利 | 福利社午夜影院 | 欧美九九九 | 国产乱码一二三区精品 | 久久久久久久综合 | 一区二区三区欧美在线 | 在线看片福利 | 天天操夜夜看 | 国产精品视频网 | 国产视频一区二区 | 黄色片在线免费看 | 五月激情综合 | 日韩av在线不卡 | 91电影在线播放 |