專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

按一次按鍵燈亮,再按一次燈滅

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2011年10月24日   【字體:
/*此為自已寫的,
功能:實(shí)現(xiàn)按一次按鍵燈亮,再按一次燈滅
歡迎仿問我的空間http://378621667.qzone.qq.com里頭有好多單片機(jī)C語言代碼
2011年10月24于廈門軟件園二期
*/
#include <pic.h>  //此為pic的代碼
#define uint unsigned int
#define uchar unsigned char
void delay(uint x)  //延時(shí)函數(shù)
{
 uint a,b;
 for(a=x;a>0;a--)
  for(b=110;b>0;b--);
}
 
void main()   //主函數(shù)
{
static bit temp; //定義一個(gè)靜態(tài)的位變量,注意得放在第一行,否則會(huì)提示一堆的錯(cuò)誤
TRISB=0;PORTB=0xff;
TRISD=0;PORTD=0x00;
temp=RD0;   //把RD0 LED燈的當(dāng)前狀態(tài)賦給變量temp
while(1)
 {
 if(RB0==0)  //判斷按鍵是否有被按下,有則為0
  {
  delay(10); //去抖
  if(RB0==0) //去抖完得再判斷一次
   {
   temp=!temp;  //每按一次,位變量temp取反一次
   while(!RB0)  //松手檢測(cè),按下時(shí)為0取反為1,一直循環(huán)直至松手為1取反后為0退出循環(huán)
   RD0=temp;  //把取反后的temp值賦給RD0即LED燈
   }
  }
 }
}

 

//-----------------------下面為51的代碼----------------------------------------------------
/*
#include <reg52.h>  //此為51單片機(jī)的代碼
#define uint unsigned int
#define uchar unsigned char
void delay(uint x)  //延時(shí)函數(shù)
{
 uint a,b;
 for(a=x;a>0;a--)
  for(b=110;b>0;b--);
}
 
void main()   //主函數(shù)
{
static bit temp; //定義一個(gè)靜態(tài)的位變量,注意得放在第一行,否則會(huì)提示一堆的錯(cuò)誤
sbit RD0=P1^1;  //定義LED燈為RD0
sbit RB0=p3^2;  //定義INT0為RB0(按鍵)
temp=RD0;   //把RD0 LED燈的當(dāng)前狀態(tài)賦給變量temp
while(1)
 {
 if(RB0==0)  //判斷按鍵是否有被按下,有則為0
  {
  delay(10); //去抖
  if(RB0==0) //去抖完得再判斷一次
   {
   temp=!temp;  //每按一次,位變量temp取反一次
   while(!RB0)  //松手檢測(cè),按下時(shí)為0取反為1,一直循環(huán)直至松手為1取反后為0退出循環(huán)
   RD0=temp;  //把取反后的temp值賦給RD0即LED燈
   }
  }
 }
}


*/
關(guān)閉窗口

相關(guān)文章