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

QQ登錄

只需一步,快速開始

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

51單片機(jī)和PIC 按鍵按一次燈亮,再按一次燈滅 程序源碼

[復(fù)制鏈接]
ID:103513 發(fā)表于 2016-1-17 02:35 | 顯示全部樓層 |閱讀模式

這個(gè)是我自己diy的單片機(jī)開發(fā)板:http://www.torrancerestoration.com/bbs/dpj-42590-1.html

  1. //--------------------------------下面為板上運(yùn)行通過的,更為簡潔--------------------------------------------------------------

  2. //這個(gè)程序適用于天祥、淘寶上面買的開發(fā)板,我自已做的板子也是和它們的腳位一樣,好處是立馬可以20181031    18:05

  3. /*按一下燈亮再一下燈滅+松手檢測*/
  4. #include<reg52.h>
  5. #define uchar unsigned char
  6. sbit P10=P1^0;
  7. void delay(int x)
  8. {
  9. int a,b;
  10. for(a=x;a>0;a--)
  11. for(b=110;b>0;b--);
  12. }
  13. void main()
  14. {
  15. uchar temp=0;
  16. P10=0;
  17. while(1)
  18. {
  19. if(T0==0)
  20.   {
  21.   delay(5);   //延時(shí)去抖
  22.   if(T0==0)     //確實(shí)被按下了
  23.    {
  24.    temp=!temp;
  25.    P10=temp;    //燈的狀態(tài)取反了
  26.    while(!T0);    //松手檢測,燈取反后就停在這里了直到松手T0=0后退出循環(huán)
  27.    delay(500);    //燈持續(xù)亮500ms以便我們?nèi)庋塾^察
  28.    }
  29.   }
  30. }
  31. }


復(fù)制代碼


  1. /*此為自已寫的,
  2. 功能:實(shí)現(xiàn)按一次按鍵燈亮,再按一次燈滅
  3. 歡迎仿問我的空間里頭有好多單片機(jī)C語言代碼
  4. 2018年10月24于廈門軟件園二期
  5. */
  6. #include <pic.h>  //此為pic的代碼
  7. #define uint unsigned int
  8. #define uchar unsigned char
  9. void delay(uint x)  //延時(shí)函數(shù)
  10. {
  11. uint a,b;
  12. for(a=x;a>0;a--)
  13.   for(b=110;b>0;b--);
  14. }

  15. void main()   //主函數(shù)
  16. {
  17. static bit temp; //定義一個(gè)靜態(tài)的位變量,注意得放在第一行,否則會(huì)提示一堆的錯(cuò)誤
  18. TRISB=0;PORTB=0xff;
  19. TRISD=0;PORTD=0x00;
  20. temp=RD0;   //把RD0 LED燈的當(dāng)前狀態(tài)賦給變量temp
  21. while(1)
  22. {
  23. if(RB0==0)  //判斷按鍵是否有被按下,有則為0
  24.   {
  25.   delay(10); //去抖
  26.   if(RB0==0) //去抖完得再判斷一次
  27.    {
  28.    temp=!temp;  //每按一次,位變量temp取反一次
  29.    while(!RB0)  //松手檢測,按下時(shí)為0取反為1,一直循環(huán)直至松手為1取反后為0退出循環(huán)
  30.    RD0=temp;  //把取反后的temp值賦給RD0即LED燈
  31.    }
  32.   }
  33. }
  34. }



  35. //-----------------------下面為51的代碼----------------------------------------------------
  36. /*
  37. #include <reg52.h>  //此為51單片機(jī)的代碼
  38. #define uint unsigned int
  39. #define uchar unsigned char
  40. void delay(uint x)  //延時(shí)函數(shù)
  41. {
  42. uint a,b;
  43. for(a=x;a>0;a--)
  44.   for(b=110;b>0;b--);
  45. }

  46. void main()   //主函數(shù)
  47. {
  48. static bit temp; //定義一個(gè)靜態(tài)的位變量,注意得放在第一行,否則會(huì)提示一堆的錯(cuò)誤
  49. sbit RD0=P1^1;  //定義LED燈為RD0
  50. sbit RB0=p3^2;  //定義INT0為RB0(按鍵)
  51. temp=RD0;   //把RD0 LED燈的當(dāng)前狀態(tài)賦給變量temp
  52. while(1)
  53. {
  54. if(RB0==0)  //判斷按鍵是否有被按下,有則為0
  55.   {
  56.   delay(10); //去抖
  57.   if(RB0==0) //去抖完得再判斷一次
  58.    {
  59.    temp=!temp;  //每按一次,位變量temp取反一次
  60.    while(!RB0)  //松手檢測,按下時(shí)為0取反為1,一直循環(huán)直至松手為1取反后為0退出循環(huán)
  61.    RD0=temp;  //把取反后的temp值賦給RD0即LED燈
  62.    }
  63.   }
  64. }
  65. }
  66. */
復(fù)制代碼





相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:160143 發(fā)表于 2017-1-5 15:39 來自手機(jī) | 顯示全部樓層
感謝樓主,能不能把開發(fā)版的制作給我發(fā)一個(gè),謝謝,56155909@qq.com.樓主辛苦了…
回復(fù)

使用道具 舉報(bào)

ID:160143 發(fā)表于 2017-1-5 15:40 來自手機(jī) | 顯示全部樓層
能不能把開發(fā)區(qū)分制作給我發(fā)一個(gè)?56155909@qq.com
回復(fù)

使用道具 舉報(bào)

ID:183120 發(fā)表于 2017-4-15 21:02 | 顯示全部樓層
請(qǐng)問T0指的是按鍵嗎?
回復(fù)

使用道具 舉報(bào)

ID:113894 發(fā)表于 2017-4-22 13:26 | 顯示全部樓層
彬Lsl 發(fā)表于 2017-4-15 21:02
請(qǐng)問T0指的是按鍵嗎?

你看下手冊(cè)上的P3^4端口
回復(fù)

使用道具 舉報(bào)

ID:183120 發(fā)表于 2017-4-22 13:46 | 顯示全部樓層
蘭亭序 發(fā)表于 2017-4-22 13:26
你看下手冊(cè)上的P3^4端口

原來如此
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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