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

PIC12F508單片機用按鍵控制LED燈C語言程序

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2012年11月15日   【字體:
#include<htc.h>
#include "main.h"
__CONFIG(MCLRDIS&WDTDIS&UNPROTECT&INTRC);    //設(shè)置配置位(MCLR腳復(fù)位禁止,看門狗關(guān),無代碼保護,內(nèi)部RC振蕩)
uint count=0;
uchar Key_Flag=0;
void Delay_US(uchar delay)
{
   while(delay--);
}
void Delay_Ms(uchar delay)
{
   uchar i;
   while(delay--)
   {
    for(i=0;i<165;i++);
   }
}
void Delay_Sec(uchar delay)
{
 uchar i;
 for(i=0;i<delay;i++)
 {
  Delay_Ms(251);
  Delay_Ms(251);
  Delay_Ms(251);
  Delay_Ms(252);
 }
}

void GPIO_Port_Init(void)     /*********繼電器/傳感器端口初始化函數(shù)**********/
{
 TRIS = 0x1c;              //繼電器和LED_RED設(shè)為輸出 壓力流量設(shè)為輸入
 OPTION = 0x00;            //OPTION復(fù)位值為:0xFF                          
}
void Key_Scan(void)           /*********按鍵掃描函數(shù)**********/
{
 Key_Flag=0;               //掃描鍵盤之前先將按鍵標(biāo)志清零
    if(Key==0)
 {
  Delay_Ms(10);         //延時去抖
  if(Key==0)
  {
   while(!Key);      //等待K1鍵釋放
   Key_Flag=1;
  }
 }
}
void main()
{
 Delay_Ms(200);
 GPIO_Port_Init();
 Delay_Sec(2);
 Relay_Out=1;
 
 while(1)
 {
  Key_Scan();
  Red_Led=1;
  
  if(Key_Flag==1)
  {
   while(1)
   {
    Red_Led=0;
       Delay_Ms(200);
       Red_Led=1;
       Delay_Ms(200);
   } 
  }
  
 }
}
 
#ifndef     __MAIN_H__
#define     __MAIN_H__
#define uchar unsigned char
#define uint unsigned int
#define Relay_Out  GP0
#define Red_Led    GP1
#define Fluid_In   GP2
#define Press_In   GP3
#define Key        GP4
void Delay_US(uchar delay);
void Delay_Ms(uchar delay);
void Delay_Sec(uint delay);
void GPIO_Port_Init(void);
void Key_Scan(void);

#endif
關(guān)閉窗口

相關(guān)文章