216 lines
5.3 KiB
C
Executable File
216 lines
5.3 KiB
C
Executable File
/**
|
|
Generated Pin Manager File
|
|
|
|
Company:
|
|
Microchip Technology Inc.
|
|
|
|
File Name:
|
|
pin_manager.c
|
|
|
|
Summary:
|
|
This is the Pin Manager file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs
|
|
|
|
Description:
|
|
This header file provides implementations for pin APIs for all pins selected in the GUI.
|
|
Generation Information :
|
|
Product Revision : PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.3
|
|
Device : PIC16F1776
|
|
Driver Version : 2.11
|
|
The generated drivers are tested against the following:
|
|
Compiler : XC8 2.20 and above
|
|
MPLAB : MPLAB X 5.40
|
|
|
|
Copyright (c) 2013 - 2015 released Microchip Technology Inc. All rights reserved.
|
|
*/
|
|
|
|
/*
|
|
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
|
|
|
Subject to your compliance with these terms, you may use Microchip software and any
|
|
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
|
license terms applicable to your use of third party software (including open source software) that
|
|
may accompany Microchip software.
|
|
|
|
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
|
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
|
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
|
FOR A PARTICULAR PURPOSE.
|
|
|
|
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
|
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
|
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
|
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
|
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
|
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
|
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
|
SOFTWARE.
|
|
*/
|
|
|
|
#include "pin_manager.h"
|
|
|
|
|
|
|
|
|
|
void (*IOCBF0_InterruptHandler)(void);
|
|
void (*IOCCF7_InterruptHandler)(void);
|
|
|
|
|
|
void PIN_MANAGER_Initialize(void)
|
|
{
|
|
/**
|
|
LATx registers
|
|
*/
|
|
LATA = 0x00;
|
|
LATB = 0x00;
|
|
LATC = 0x00;
|
|
|
|
/**
|
|
TRISx registers
|
|
*/
|
|
TRISE = 0x08;
|
|
TRISA = 0x39;
|
|
TRISB = 0xED;
|
|
TRISC = 0x8C;
|
|
|
|
/**
|
|
ANSELx registers
|
|
*/
|
|
ANSELC = 0x7C;
|
|
ANSELB = 0x3E;
|
|
ANSELA = 0x3F;
|
|
|
|
/**
|
|
WPUx registers
|
|
*/
|
|
WPUE = 0x00;
|
|
WPUB = 0x00;
|
|
WPUA = 0x00;
|
|
WPUC = 0x00;
|
|
OPTION_REGbits.nWPUEN = 1;
|
|
|
|
/**
|
|
ODx registers
|
|
*/
|
|
ODCONA = 0x00;
|
|
ODCONB = 0x00;
|
|
ODCONC = 0x00;
|
|
|
|
/**
|
|
SLRCONx registers
|
|
*/
|
|
SLRCONA = 0xFF;
|
|
SLRCONB = 0xFF;
|
|
SLRCONC = 0xFF;
|
|
|
|
/**
|
|
INLVLx registers
|
|
*/
|
|
INLVLA = 0x3F;
|
|
INLVLB = 0xF0;
|
|
INLVLC = 0xFF;
|
|
|
|
|
|
/**
|
|
IOCx registers
|
|
*/
|
|
//interrupt on change for group IOCBF - flag
|
|
IOCBFbits.IOCBF0 = 0;
|
|
//interrupt on change for group IOCBN - negative
|
|
IOCBNbits.IOCBN0 = 1;
|
|
//interrupt on change for group IOCBP - positive
|
|
IOCBPbits.IOCBP0 = 0;
|
|
//interrupt on change for group IOCCF - flag
|
|
IOCCFbits.IOCCF7 = 0;
|
|
//interrupt on change for group IOCCN - negative
|
|
IOCCNbits.IOCCN7 = 1;
|
|
//interrupt on change for group IOCCP - positive
|
|
IOCCPbits.IOCCP7 = 0;
|
|
|
|
|
|
|
|
// register default IOC callback functions at runtime; use these methods to register a custom function
|
|
IOCBF0_SetInterruptHandler(IOCBF0_DefaultInterruptHandler);
|
|
IOCCF7_SetInterruptHandler(IOCCF7_DefaultInterruptHandler);
|
|
|
|
// Enable IOCI interrupt
|
|
INTCONbits.IOCIE = 1;
|
|
|
|
}
|
|
|
|
void PIN_MANAGER_IOC(void)
|
|
{
|
|
// interrupt on change for pin IOCBF0
|
|
if(IOCBFbits.IOCBF0 == 1)
|
|
{
|
|
IOCBF0_ISR();
|
|
}
|
|
// interrupt on change for pin IOCCF7
|
|
if(IOCCFbits.IOCCF7 == 1)
|
|
{
|
|
IOCCF7_ISR();
|
|
}
|
|
}
|
|
|
|
/**
|
|
IOCBF0 Interrupt Service Routine
|
|
*/
|
|
void IOCBF0_ISR(void) {
|
|
|
|
// Add custom IOCBF0 code
|
|
|
|
// Call the interrupt handler for the callback registered at runtime
|
|
if(IOCBF0_InterruptHandler)
|
|
{
|
|
IOCBF0_InterruptHandler();
|
|
}
|
|
IOCBFbits.IOCBF0 = 0;
|
|
}
|
|
|
|
/**
|
|
Allows selecting an interrupt handler for IOCBF0 at application runtime
|
|
*/
|
|
void IOCBF0_SetInterruptHandler(void (* InterruptHandler)(void)){
|
|
IOCBF0_InterruptHandler = InterruptHandler;
|
|
}
|
|
|
|
/**
|
|
Default interrupt handler for IOCBF0
|
|
*/
|
|
void IOCBF0_DefaultInterruptHandler(void){
|
|
// add your IOCBF0 interrupt custom code
|
|
// or set custom function using IOCBF0_SetInterruptHandler()
|
|
}
|
|
|
|
/**
|
|
IOCCF7 Interrupt Service Routine
|
|
*/
|
|
void IOCCF7_ISR(void) {
|
|
|
|
// Add custom IOCCF7 code
|
|
|
|
// Call the interrupt handler for the callback registered at runtime
|
|
if(IOCCF7_InterruptHandler)
|
|
{
|
|
IOCCF7_InterruptHandler();
|
|
}
|
|
IOCCFbits.IOCCF7 = 0;
|
|
}
|
|
|
|
/**
|
|
Allows selecting an interrupt handler for IOCCF7 at application runtime
|
|
*/
|
|
void IOCCF7_SetInterruptHandler(void (* InterruptHandler)(void)){
|
|
IOCCF7_InterruptHandler = InterruptHandler;
|
|
}
|
|
|
|
/**
|
|
Default interrupt handler for IOCCF7
|
|
*/
|
|
void IOCCF7_DefaultInterruptHandler(void){
|
|
// add your IOCCF7 interrupt custom code
|
|
// or set custom function using IOCCF7_SetInterruptHandler()
|
|
}
|
|
|
|
/**
|
|
End of File
|
|
*/ |