|
- /*
- 51怎么是實現(xiàn)兩個自鎖開關(guān)控制一個LED燈? 就像家用的雙向控制開關(guān)一樣的!
- 怎么把自鎖開關(guān)轉(zhuǎn)換為按鍵?
- */
- #include<reg52.h> //包含頭文件,一般情況不需要改動,
- //頭文件包含特殊功能寄存器的定義
- sbit KEY_A=P3^3; //定義按鍵輸入端口
- sbit KEY_B=P3^4;
- sbit LED=P2^0;// LED
- /*------------------------------------------------
- 函數(shù)聲明
- ------------------------------------------------*/
- void DelayMs(unsigned char t); //函數(shù)聲明
- /*------------------------------------------------
- 主函數(shù)
- ------------------------------------------------*/
- void main (void)
- {
-
- KEY_A=1; //按鍵輸入端口電平置高
- KEY_B=1;
- while (1) //主循環(huán)
- {
- if(!KEY_A) //如果檢測到低電平,說明按鍵按下
- {
- DelayMs(10); //延時去抖,一般10-20ms
- if(!KEY_A) //再次確認按鍵是否按下,沒有按下則退出
- {
- while(!KEY_A);//如果確認按下按鍵等待按鍵釋放,沒有釋放則一直等待
- {
- LED = ~LED;
- }
- }
- }
- if(!KEY_B) //如果檢測到低電平,說明按鍵按下
- {
- DelayMs(10); //延時去抖,一般10-20ms
- if(!KEY_B) //再次確認按鍵是否按下,沒有按下則退出
- {
- while(!KEY_B);//如果確認按下按鍵等待按鍵釋放,沒有釋放則一直等待
- {
- LED = ~LED;
- }
- }
- }
- //主循環(huán)中添加其他需要一直工作的程序
- }
- }
- /*------------------------------------------------
- mS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
- unsigned char 是定義無符號字符變量,其值的范圍是
- 0~255 這里使用晶振12M,精確延時請使用匯編
- ------------------------------------------------*/
- void DelayMs(unsigned char t)
- {
-
- while(t--)
- {
- //大致延時1mS
- DelayUs2x(245);
- DelayUs2x(245);
- }
- }
復(fù)制代碼 |
|