PIC12F508A一个开关控制一个灯的亮灭程序

PIC12F508A一个开关控制一个灯的亮灭程序,默认开机全部不亮。

/*
 * File:   main.c
 * Author: li fengjun
 * 开发环境:MPLAB X IDE v4.15
 * 操作系统:Windows 10
 * NAME:PIC12F509A_LED3_Light
 * 功能:点亮LED的记忆控制程序,K1控制LED2长亮,再按一下K1控制LED2灭。(锁存)
 * 日期: 20210701, 09:16
 */
#include <xc.h>
#include <stdint.h>

// CONFIG
#pragma config OSC = IntRC      // Oscillator Selection bits (internal RC oscillator)
#pragma config WDT = OFF        // Watchdog Timer Enable bit (WDT disabled)
#pragma config CP = OFF         // Code Protection bit (Code protection off)
#pragma config MCLRE = ON       // GP3/MCLR Pin Function Select bit (GP3/MCLR pin function is MCLR)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#define LED2 GP0
//#define LED3 GP1
//#define key_low5 GP4 //K5
#define K1 GP5 //K1

//#define TMCLR GP3
//#define ICSCLK GP1
//#define ICSDATA GP0

#typedef signed char   int8_t
#typedef short int    int16_t

/*******************************************************************************
* 函 数 名       : delay()                                                       *
* 函数功能         : 延时函数                                                     *
* 功    能       : 当i=1时,大约延时10us                                           *
* 输    入       : 无                                                           *
* 输    出         : 无                                                           *
********************************************************************************/

void delay(int16_t i)
{
    while(i--);
}
/*******************************************************************************
* 函 数 名       : keypros()                                                       *
* 函数功能         : 按键处理函数                                                 *
* 功    能       : 判断按键是否按下                                               *
* 输    入       : 无                                                           *
* 输    出         : 无                                                           *
********************************************************************************/

void keypros()
{
        if(K1==0)          //检测按键K1是否按下
        {
             delay(1000);  //消除抖动 一般大约10ms
             if(K1==0)     //再次判断按键是否按下
             {
               LED2=~LED2;     //LED2状态变化一次
             }
             while(!K1);       //检测按键是否松开
        }
}
 
/*******************************************************************************
* 函 数 名       : main()                                                       *
* 函数功能         : 主函数                                                      *
* 功    能       :                                                                *
* 输    入       : 无                                                           *
* 输    出         : 无                                                           *
********************************************************************************/
void main()
{
    OPTION = 0x40; //TOCS=0;选择定时器模式,让GP2为普通I/O。
    TRIS = 0xFC;   //GP0,GP1设置为OUTPUT,其他设置为INPUT。
    while(1)
    {
     keypros();//按键处理函数
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值