专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

PIC12F508单片机用按键控制LED灯C语言程序

作者:佚名   来源:本站原创   点击数:  更新时间:2012年11月15日   【字体:
#include<htc.h>
#include "main.h"
__CONFIG(MCLRDIS&WDTDIS&UNPROTECT&INTRC);    //设置配置位(MCLR脚复位禁止,看门狗关,无代码保护,内部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)     /*********继电器/传感器端口初始化函数**********/
{
 TRIS = 0x1c;              //继电器和LED_RED设为输出 压力流量设为输入
 OPTION = 0x00;            //OPTION复位值为:0xFF                          
}
void Key_Scan(void)           /*********按键扫描函数**********/
{
 Key_Flag=0;               //扫描键盘之前先将按键标志清零
    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
关闭窗口

相关文章