diff options
author | Matt Strapp <msattr@gmail.com> | 2020-02-28 11:20:34 -0600 |
---|---|---|
committer | Matt Strapp <msattr@gmail.com> | 2020-02-28 11:20:34 -0600 |
commit | 9416d720e118e4b5508ad17d64af0c9b69ff3a2f (patch) | |
tree | 8377222e117bcf97829713cce37c6525a2e50222 | |
parent | Merge origin/master (diff) | |
download | ee2361-9416d720e118e4b5508ad17d64af0c9b69ff3a2f.tar ee2361-9416d720e118e4b5508ad17d64af0c9b69ff3a2f.tar.gz ee2361-9416d720e118e4b5508ad17d64af0c9b69ff3a2f.tar.bz2 ee2361-9416d720e118e4b5508ad17d64af0c9b69ff3a2f.tar.lz ee2361-9416d720e118e4b5508ad17d64af0c9b69ff3a2f.tar.xz ee2361-9416d720e118e4b5508ad17d64af0c9b69ff3a2f.tar.zst ee2361-9416d720e118e4b5508ad17d64af0c9b69ff3a2f.zip |
Redo numpad
-rw-r--r-- | Lab3.X/Makefile | 113 | ||||
-rw-r--r-- | Lab3.X/display.c | 12 | ||||
-rw-r--r-- | Lab3.X/display.h | 17 | ||||
-rw-r--r-- | Lab3.X/dist/default/production/memoryfile.xml | 18 | ||||
-rw-r--r-- | Lab3.X/lab3_main_MAYA_C.c | 245 | ||||
-rw-r--r-- | Lab3.X/lab3_main_c.c | 24 | ||||
-rw-r--r-- | Lab3.X/nbproject/Makefile-default.mk | 189 | ||||
-rw-r--r-- | Lab3.X/nbproject/Makefile-genesis.properties | 10 | ||||
-rw-r--r-- | Lab3.X/nbproject/Makefile-impl.mk | 69 | ||||
-rw-r--r-- | Lab3.X/nbproject/Makefile-local-default.mk | 38 | ||||
-rw-r--r-- | Lab3.X/nbproject/Makefile-variables.mk | 13 | ||||
-rw-r--r-- | Lab3.X/nbproject/Package-default.bash | 73 | ||||
-rw-r--r-- | Lab3.X/nbproject/configurations.xml | 654 | ||||
-rw-r--r-- | Lab3.X/nbproject/private/configurations.xml | 25 | ||||
-rw-r--r-- | Lab3.X/nbproject/private/private.xml | 10 | ||||
-rw-r--r-- | Lab3.X/nbproject/project.xml | 29 | ||||
-rw-r--r-- | Lab3.X/numpad.c | 150 | ||||
-rw-r--r-- | Lab3.X/numpad.h | 4 |
18 files changed, 1566 insertions, 127 deletions
diff --git a/Lab3.X/Makefile b/Lab3.X/Makefile new file mode 100644 index 0000000..fca8e2c --- /dev/null +++ b/Lab3.X/Makefile @@ -0,0 +1,113 @@ +# +# There exist several targets which are by default empty and which can be +# used for execution of your targets. These targets are usually executed +# before and after some main targets. They are: +# +# .build-pre: called before 'build' target +# .build-post: called after 'build' target +# .clean-pre: called before 'clean' target +# .clean-post: called after 'clean' target +# .clobber-pre: called before 'clobber' target +# .clobber-post: called after 'clobber' target +# .all-pre: called before 'all' target +# .all-post: called after 'all' target +# .help-pre: called before 'help' target +# .help-post: called after 'help' target +# +# Targets beginning with '.' are not intended to be called on their own. +# +# Main targets can be executed directly, and they are: +# +# build build a specific configuration +# clean remove built files from a configuration +# clobber remove all built files +# all build all configurations +# help print help mesage +# +# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and +# .help-impl are implemented in nbproject/makefile-impl.mk. +# +# Available make variables: +# +# CND_BASEDIR base directory for relative paths +# CND_DISTDIR default top distribution directory (build artifacts) +# CND_BUILDDIR default top build directory (object files, ...) +# CONF name of current configuration +# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration) +# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration) +# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration) +# CND_PACKAGE_DIR_${CONF} directory of package (current configuration) +# CND_PACKAGE_NAME_${CONF} name of package (current configuration) +# CND_PACKAGE_PATH_${CONF} path to package (current configuration) +# +# NOCDDL + + +# Environment +MKDIR=mkdir +CP=cp +CCADMIN=CCadmin +RANLIB=ranlib + + +# build +build: .build-post + +.build-pre: +# Add your pre 'build' code here... + +.build-post: .build-impl +# Add your post 'build' code here... + + +# clean +clean: .clean-post + +.clean-pre: +# Add your pre 'clean' code here... +# WARNING: the IDE does not call this target since it takes a long time to +# simply run make. Instead, the IDE removes the configuration directories +# under build and dist directly without calling make. +# This target is left here so people can do a clean when running a clean +# outside the IDE. + +.clean-post: .clean-impl +# Add your post 'clean' code here... + + +# clobber +clobber: .clobber-post + +.clobber-pre: +# Add your pre 'clobber' code here... + +.clobber-post: .clobber-impl +# Add your post 'clobber' code here... + + +# all +all: .all-post + +.all-pre: +# Add your pre 'all' code here... + +.all-post: .all-impl +# Add your post 'all' code here... + + +# help +help: .help-post + +.help-pre: +# Add your pre 'help' code here... + +.help-post: .help-impl +# Add your post 'help' code here... + + + +# include project implementation makefile +include nbproject/Makefile-impl.mk + +# include project make variables +include nbproject/Makefile-variables.mk diff --git a/Lab3.X/display.c b/Lab3.X/display.c index 5ad9c4f..d456b49 100644 --- a/Lab3.X/display.c +++ b/Lab3.X/display.c @@ -2,9 +2,13 @@ #include "display.h"
//Functions used for Display
-void init7seg(void) {
- TRISB = 0b0000000000000011; //and port B to outputs
- LATB = 0x0000; //and all of port B to LOW
+void init7seg(void) {
+ CLKDIVbits.RCDIV = 0; //Set RCDIV=1:1 (default 2:1) 32MHz or FCY/2=16M
+ AD1PCFG = 0x9fff; //sets all pins to digital I/O
+ TRISA = 0b0000000000011111; //set port A to inputs,
+ TRISB = 0b0000000000000011; //and port B to outputs
+ LATA = 0x0000; //Set all of port A to LOW
+ LATB = 0x0000; //and all of port B to LOW
}
void showChar7seg(char myChar, enum DIGIT myDigit) {
@@ -61,6 +65,6 @@ void showChar7seg(char myChar, enum DIGIT myDigit) { default:
LATB ^= (0b11111111 << 2);
break;
- } //END OF SWITCH
+ } //END OF SWITCH
LATB |= myDigit;
}
\ No newline at end of file diff --git a/Lab3.X/display.h b/Lab3.X/display.h index fa2dfa1..893eea1 100644 --- a/Lab3.X/display.h +++ b/Lab3.X/display.h @@ -7,14 +7,15 @@ extern "C" {
#endif /* __cplusplus */
- // Insert declarations
-enum DIGIT {
- MSB = (0b1 << 11),
- LSB = (0b1 << 10)
-};
-void init7seg(void);
-void showChar7seg(char myChar, enum DIGIT myDigit);
-void delay(long num);
+ // Insert declarations
+
+ enum DIGIT {
+ MSB = (0b1 << 11),
+ LSB = (0b1 << 10)
+ };
+ void init7seg(void);
+ void showChar7seg(char myChar, enum DIGIT myDigit);
+ void delay(long num);
#ifdef __cplusplus
}
diff --git a/Lab3.X/dist/default/production/memoryfile.xml b/Lab3.X/dist/default/production/memoryfile.xml new file mode 100644 index 0000000..508df7f --- /dev/null +++ b/Lab3.X/dist/default/production/memoryfile.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+ <executable name="dist/default/production/Lab3.X.production.elf">
+ <memory name="data">
+ <units>bytes</units>
+ <length>8192</length>
+ <used>0</used>
+ <free>8192</free>
+ </memory>
+ <memory name="program">
+ <units>bytes</units>
+ <length>65274</length>
+ <used>2034</used>
+ <free>63240</free>
+ </memory>
+ </executable>
+</project>
diff --git a/Lab3.X/lab3_main_MAYA_C.c b/Lab3.X/lab3_main_MAYA_C.c new file mode 100644 index 0000000..bd12cf7 --- /dev/null +++ b/Lab3.X/lab3_main_MAYA_C.c @@ -0,0 +1,245 @@ +#include "xc.h"
+#include "numpad.h"
+#include "display.h"
+
+// CW1: FLASH CONFIGURATION WORD 1 (see PIC24 Family Reference Manual 24.1)
+#pragma config ICS = PGx1 // Comm Channel Select (Emulator EMUC1/EMUD1 pins are shared with PGC1/PGD1)
+#pragma config FWDTEN = OFF // Watchdog Timer Enable (Watchdog Timer is disabled)
+#pragma config GWRP = OFF // General Code Segment Write Protect (Writes to program memory are allowed)
+#pragma config GCP = OFF // General Code Segment Code Protect (Code protection is disabled)
+#pragma config JTAGEN = OFF // JTAG Port Enable (JTAG port is disabled)
+
+
+// CW2: FLASH CONFIGURATION WORD 2 (see PIC24 Family Reference Manual 24.1)
+#pragma config I2C1SEL = PRI // I2C1 Pin Location Select (Use default SCL1/SDA1 pins)
+#pragma config IOL1WAY = OFF // IOLOCK Protection (IOLOCK may be changed via unlocking seq)
+#pragma config OSCIOFNC = ON // Primary Oscillator I/O Function (CLKO/RC15 functions as I/O pin)
+#pragma config FCKSM = CSECME // Clock Switching and Monitor (Clock switching is enabled,
+// Fail-Safe Clock Monitor is enabled)
+#pragma config FNOSC = FRCPLL // Oscillator Select (Fast RC Oscillator with PLL module (FRCPLL))
+
+#define NOKEY 255
+
+void delay(long d) {
+ for (d=d; d > 0; d--) {
+ asm("nop");
+ }
+}
+char cycle();
+
+
+//============================================================================//
+
+int main(void) {
+ init7seg();
+ initKeyPad();
+ char key = 'N';
+ char right, left;
+ int debounce = 250;
+ //RB<9:2> will drive the cathodes of the seven-segment display
+ //RB<11:10> will drive the right and left anodes respectively
+ //RA<3:0> will drive inputs of keypad
+ //RB<15:12> will cycle to sense RA inputs
+ while (1) {
+ if (debounce == 0) {
+ key = cycle();
+ if (key != 'N') {
+ left = right;
+ right = key;
+ }
+ debounce = 250;
+ }
+
+ showChar7seg(right, MSB);
+ delay(500);
+ showChar7seg(left, LSB);
+ delay(200);
+
+ debounce--;
+// while (!IFS0bits.T1IF);
+// IFS0bits.T1IF = 0;
+ }
+}
+
+//============================================================================//
+
+
+//void test7seg(void) {
+// long int wait = 500000;
+// showChar7seg('1', 0);
+// delay(wait);
+// showChar7seg('1', 1);
+// delay(wait);
+// showChar7seg('2', 0);
+// delay(wait);
+// showChar7seg('2', 1);
+// delay(wait);
+// showChar7seg('3', 0);
+// delay(wait);
+// showChar7seg('3', 1);
+// delay(wait);
+// showChar7seg('4', 0);
+// delay(wait);
+// showChar7seg('4', 1);
+// delay(wait);
+// showChar7seg('5', 0);
+// delay(wait);
+// showChar7seg('5', 1);
+// delay(wait);
+// showChar7seg('6', 0);
+// delay(wait);
+// showChar7seg('6', 1);
+// delay(wait);
+// showChar7seg('7', 0);
+// delay(wait);
+// showChar7seg('7', 1);
+// delay(wait);
+// showChar7seg('8', 0);
+// delay(wait);
+// showChar7seg('8', 1);
+// delay(wait);
+// showChar7seg('9', 0);
+// delay(wait);
+// showChar7seg('9', 1);
+// delay(wait);
+// showChar7seg('0', 0);
+// delay(wait);
+// showChar7seg('0', 1);
+// delay(wait);
+// showChar7seg('A', 0);
+// delay(wait);
+// showChar7seg('A', 1);
+// delay(wait);
+// showChar7seg('b', 0);
+// delay(wait);
+// showChar7seg('b', 1);
+// delay(wait);
+// showChar7seg('C', 0);
+// delay(wait);
+// showChar7seg('C', 1);
+// delay(wait);
+// showChar7seg('d', 0);
+// delay(wait);
+// showChar7seg('d', 1);
+// delay(wait);
+// showChar7seg('E', 0);
+// delay(wait);
+// showChar7seg('E', 1);
+// delay(wait);
+// showChar7seg('F', 0);
+// delay(wait);
+// showChar7seg('F', 1);
+// delay(wait);
+// return;
+//}
+
+//void showChar7seg(char myChar, int myDigit) {
+// //1,2,3,4,5,6,7,8,9,0,A,b,C,d,E, and F
+// LATB &= 0xF000;
+// if (myDigit == 1) {
+// if (myChar == '1') {
+// LATB |= 0x067F;
+// } else if (myChar == '2') {
+// LATB |= 0x0497;
+// } else if (myChar == '3') {
+// LATB |= 0x0437;
+// } else if (myChar == '4') {
+// LATB |= 0x0667;
+// } else if (myChar == '5') {
+// LATB |= 0x0527;
+// } else if (myChar == '6') {
+// LATB |= 0x0507;
+// } else if (myChar == '7') {
+// LATB |= 0x047F;
+// } else if (myChar == '8') {
+// LATB |= 0x0407;
+// } else if (myChar == '9') {
+// LATB |= 0x0427;
+// } else if (myChar == '0') {
+// LATB |= 0x040F;
+// } else if (myChar == 'A') {
+// LATB |= 0x0447;
+// } else if (myChar == 'b') {
+// LATB |= 0x0707;
+// } else if (myChar == 'C') {
+// LATB |= 0x058F;
+// } else if (myChar == 'd') {
+// LATB |= 0x0617;
+// } else if (myChar == 'E') {
+// LATB |= 0x0587;
+// } else if (myChar == 'F') {
+// LATB |= 0x05C7;
+// }
+// } else if (myDigit == 0) {
+// if (myChar == '1') {
+// LATB |= 0x0A7F;
+// } else if (myChar == '2') {
+// LATB |= 0x0897;
+// } else if (myChar == '3') {
+// LATB |= 0x0837;
+// } else if (myChar == '4') {
+// LATB |= 0x0A67;
+// } else if (myChar == '5') {
+// LATB |= 0x0927;
+// } else if (myChar == '6') {
+// LATB |= 0x0907;
+// } else if (myChar == '7') {
+// LATB |= 0x087F;
+// } else if (myChar == '8') {
+// LATB |= 0x0807;
+// } else if (myChar == '9') {
+// LATB |= 0x0827;
+// } else if (myChar == '0') {
+// LATB |= 0x080F;
+// } else if (myChar == 'A') {
+// LATB |= 0x0847;
+// } else if (myChar == 'b') {
+// LATB |= 0x0B07;
+// } else if (myChar == 'C') {
+// LATB |= 0x098F;
+// } else if (myChar == 'd') {
+// LATB |= 0x0A17;
+// } else if (myChar == 'E') {
+// LATB |= 0x0987;
+// } else if (myChar == 'F') {
+// LATB |= 0x09C7;
+// }
+// }
+// return;
+//}
+
+
+
+char cycle() {
+ int i = 0;
+ char key = 'N';
+ while (i < 4) {
+ if (i == 0) {
+ LATBbits.LATB12 = 0;
+ LATBbits.LATB13 = 1;
+ LATBbits.LATB14 = 1;
+ LATBbits.LATB15 = 1;
+ } else if (i == 1) {
+ LATBbits.LATB12 = 1;
+ LATBbits.LATB13 = 0;
+ LATBbits.LATB14 = 1;
+ LATBbits.LATB15 = 1;
+ } else if (i == 2) {
+ LATBbits.LATB12 = 1;
+ LATBbits.LATB13 = 1;
+ LATBbits.LATB14 = 0;
+ LATBbits.LATB15 = 1;
+ } else if (i == 3) {
+ LATBbits.LATB12 = 1;
+ LATBbits.LATB13 = 1;
+ LATBbits.LATB14 = 1;
+ LATBbits.LATB15 = 0;
+ }
+ key = readKeyPadRAW();
+ if (key != 'N') {
+ return key;
+ }
+ i++;
+ }
+ return key;
+}
\ No newline at end of file diff --git a/Lab3.X/lab3_main_c.c b/Lab3.X/lab3_main_c.c index f917f4c..bf99269 100644 --- a/Lab3.X/lab3_main_c.c +++ b/Lab3.X/lab3_main_c.c @@ -14,23 +14,23 @@ #pragma config IOL1WAY = OFF // IOLOCK Protection (IOLOCK may be changed via unlocking seq)
#pragma config OSCIOFNC = ON // Primary Oscillator I/O Function (CLKO/RC15 functions as I/O pin)
#pragma config FCKSM = CSECME // Clock Switching and Monitor (Clock switching is enabled,
- // Fail-Safe Clock Monitor is enabled)
+// Fail-Safe Clock Monitor is enabled)
#pragma config FNOSC = FRCPLL // Oscillator Select (Fast RC Oscillator with PLL module (FRCPLL))
void delay(long n) {
- for (n=n; n>0; n--) {
- asm("nop");
- }
+ for (n = n; n > 0; n--) {
+ asm("nop");
+ }
}
void setup(void) {
- CLKDIVbits.RCDIV = 0; //Set RCDIV=1:1 (default 2:1) 32MHz or FCY/2=16M
- AD1PCFG = 0x9fff; //sets all pins to digital I/O
-// T1CON = 0;
-// PR1 = 15999;
-// TMR1 = 0;
-// IFS0bits.T1IF = 0;
-// T1CONbits.TON = 1;
+ CLKDIVbits.RCDIV = 0; //Set RCDIV=1:1 (default 2:1) 32MHz or FCY/2=16M
+ AD1PCFG = 0x9fff; //sets all pins to digital I/O
+ // T1CON = 0;
+ // PR1 = 15999;
+ // TMR1 = 0;
+ // IFS0bits.T1IF = 0;
+ // T1CONbits.TON = 1;
init7seg();
initKeyPad();
}
@@ -49,7 +49,7 @@ int main(void) { right = temp;
}
showChar7seg(right, MSB);
- delay(200);
+ delay(200);
showChar7seg(left, LSB);
delay(200);
debounce++;
diff --git a/Lab3.X/nbproject/Makefile-default.mk b/Lab3.X/nbproject/Makefile-default.mk new file mode 100644 index 0000000..7c32e70 --- /dev/null +++ b/Lab3.X/nbproject/Makefile-default.mk @@ -0,0 +1,189 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Include project Makefile +ifeq "${IGNORE_LOCAL}" "TRUE" +# do not include local makefile. User is passing all local related variables already +else +include Makefile +# Include makefile containing local settings +ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk" +include nbproject/Makefile-local-default.mk +endif +endif + +# Environment +MKDIR=gnumkdir -p +RM=rm -f +MV=mv +CP=cp + +# Macros +CND_CONF=default +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +IMAGE_TYPE=debug +OUTPUT_SUFFIX=elf +DEBUGGABLE_SUFFIX=elf +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/Lab3.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +else +IMAGE_TYPE=production +OUTPUT_SUFFIX=hex +DEBUGGABLE_SUFFIX=elf +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/Lab3.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +endif + +ifeq ($(COMPARE_BUILD), true) +COMPARISON_BUILD=-mafrlcsj +else +COMPARISON_BUILD= +endif + +ifdef SUB_IMAGE_ADDRESS +SUB_IMAGE_ADDRESS_COMMAND=--image-address $(SUB_IMAGE_ADDRESS) +else +SUB_IMAGE_ADDRESS_COMMAND= +endif + +# Object Directory +OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE} + +# Distribution Directory +DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} + +# Source Files Quoted if spaced +SOURCEFILES_QUOTED_IF_SPACED=display.c numpad.c lab3_main_MAYA_C.c + +# Object Files Quoted if spaced +OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/display.o ${OBJECTDIR}/numpad.o ${OBJECTDIR}/lab3_main_MAYA_C.o +POSSIBLE_DEPFILES=${OBJECTDIR}/display.o.d ${OBJECTDIR}/numpad.o.d ${OBJECTDIR}/lab3_main_MAYA_C.o.d + +# Object Files +OBJECTFILES=${OBJECTDIR}/display.o ${OBJECTDIR}/numpad.o ${OBJECTDIR}/lab3_main_MAYA_C.o + +# Source Files +SOURCEFILES=display.c numpad.c lab3_main_MAYA_C.c + + + +CFLAGS= +ASFLAGS= +LDLIBSOPTIONS= + +############# Tool locations ########################################## +# If you copy a project from one host to another, the path where the # +# compiler is installed may be different. # +# If you open this project with MPLAB X in the new host, this # +# makefile will be regenerated and the paths will be corrected. # +####################################################################### +# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build +FIXDEPS=fixDeps + +.build-conf: ${BUILD_SUBPROJECTS} +ifneq ($(INFORMATION_MESSAGE), ) + @echo $(INFORMATION_MESSAGE) +endif + ${MAKE} -f nbproject/Makefile-default.mk dist/${CND_CONF}/${IMAGE_TYPE}/Lab3.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} + +MP_PROCESSOR_OPTION=24FJ64GA002 +MP_LINKER_FILE_OPTION=,--script=p24FJ64GA002.gld +# ------------------------------------------------------------------------------------ +# Rules for buildStep: compile +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +${OBJECTDIR}/display.o: display.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}" + @${RM} ${OBJECTDIR}/display.o.d + @${RM} ${OBJECTDIR}/display.o + ${MP_CC} $(MP_EXTRA_CC_PRE) display.c -o ${OBJECTDIR}/display.o -c -mcpu=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/display.o.d" -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1 -omf=elf -DXPRJ_default=$(CND_CONF) -legacy-libc $(COMPARISON_BUILD) -O0 -msmart-io=1 -Wall -msfr-warn=off -mdfp=${DFP_DIR}/xc16 + @${FIXDEPS} "${OBJECTDIR}/display.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ + +${OBJECTDIR}/numpad.o: numpad.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}" + @${RM} ${OBJECTDIR}/numpad.o.d + @${RM} ${OBJECTDIR}/numpad.o + ${MP_CC} $(MP_EXTRA_CC_PRE) numpad.c -o ${OBJECTDIR}/numpad.o -c -mcpu=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/numpad.o.d" -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1 -omf=elf -DXPRJ_default=$(CND_CONF) -legacy-libc $(COMPARISON_BUILD) -O0 -msmart-io=1 -Wall -msfr-warn=off -mdfp=${DFP_DIR}/xc16 + @${FIXDEPS} "${OBJECTDIR}/numpad.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ + +${OBJECTDIR}/lab3_main_MAYA_C.o: lab3_main_MAYA_C.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}" + @${RM} ${OBJECTDIR}/lab3_main_MAYA_C.o.d + @${RM} ${OBJECTDIR}/lab3_main_MAYA_C.o + ${MP_CC} $(MP_EXTRA_CC_PRE) lab3_main_MAYA_C.c -o ${OBJECTDIR}/lab3_main_MAYA_C.o -c -mcpu=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/lab3_main_MAYA_C.o.d" -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1 -omf=elf -DXPRJ_default=$(CND_CONF) -legacy-libc $(COMPARISON_BUILD) -O0 -msmart-io=1 -Wall -msfr-warn=off -mdfp=${DFP_DIR}/xc16 + @${FIXDEPS} "${OBJECTDIR}/lab3_main_MAYA_C.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ + +else +${OBJECTDIR}/display.o: display.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}" + @${RM} ${OBJECTDIR}/display.o.d + @${RM} ${OBJECTDIR}/display.o + ${MP_CC} $(MP_EXTRA_CC_PRE) display.c -o ${OBJECTDIR}/display.o -c -mcpu=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/display.o.d" -g -omf=elf -DXPRJ_default=$(CND_CONF) -legacy-libc $(COMPARISON_BUILD) -O0 -msmart-io=1 -Wall -msfr-warn=off -mdfp=${DFP_DIR}/xc16 + @${FIXDEPS} "${OBJECTDIR}/display.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ + +${OBJECTDIR}/numpad.o: numpad.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}" + @${RM} ${OBJECTDIR}/numpad.o.d + @${RM} ${OBJECTDIR}/numpad.o + ${MP_CC} $(MP_EXTRA_CC_PRE) numpad.c -o ${OBJECTDIR}/numpad.o -c -mcpu=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/numpad.o.d" -g -omf=elf -DXPRJ_default=$(CND_CONF) -legacy-libc $(COMPARISON_BUILD) -O0 -msmart-io=1 -Wall -msfr-warn=off -mdfp=${DFP_DIR}/xc16 + @${FIXDEPS} "${OBJECTDIR}/numpad.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ + +${OBJECTDIR}/lab3_main_MAYA_C.o: lab3_main_MAYA_C.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}" + @${RM} ${OBJECTDIR}/lab3_main_MAYA_C.o.d + @${RM} ${OBJECTDIR}/lab3_main_MAYA_C.o + ${MP_CC} $(MP_EXTRA_CC_PRE) lab3_main_MAYA_C.c -o ${OBJECTDIR}/lab3_main_MAYA_C.o -c -mcpu=$(MP_PROCESSOR_OPTION) -MMD -MF "${OBJECTDIR}/lab3_main_MAYA_C.o.d" -g -omf=elf -DXPRJ_default=$(CND_CONF) -legacy-libc $(COMPARISON_BUILD) -O0 -msmart-io=1 -Wall -msfr-warn=off -mdfp=${DFP_DIR}/xc16 + @${FIXDEPS} "${OBJECTDIR}/lab3_main_MAYA_C.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ + +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assemble +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assemblePreproc +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: link +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +dist/${CND_CONF}/${IMAGE_TYPE}/Lab3.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_CC} $(MP_EXTRA_LD_PRE) -o dist/${CND_CONF}/${IMAGE_TYPE}/Lab3.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} -mcpu=$(MP_PROCESSOR_OPTION) -D__DEBUG=__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1 -omf=elf -DXPRJ_default=$(CND_CONF) -legacy-libc $(COMPARISON_BUILD) -Wl,,,--defsym=__MPLAB_BUILD=1,--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,-D__DEBUG=__DEBUG,--defsym=__MPLAB_DEBUGGER_SIMULATOR=1,$(MP_LINKER_FILE_OPTION),--stack=16,--check-sections,--data-init,--pack-data,--handles,--isr,--no-gc-sections,--fill-upper=0,--stackguard=16,--no-force-link,--smart-io,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--report-mem,--memorysummary,dist/${CND_CONF}/${IMAGE_TYPE}/memoryfile.xml$(MP_EXTRA_LD_POST) -mdfp=${DFP_DIR}/xc16 + +else +dist/${CND_CONF}/${IMAGE_TYPE}/Lab3.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_CC} $(MP_EXTRA_LD_PRE) -o dist/${CND_CONF}/${IMAGE_TYPE}/Lab3.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} -mcpu=$(MP_PROCESSOR_OPTION) -omf=elf -DXPRJ_default=$(CND_CONF) -legacy-libc $(COMPARISON_BUILD) -Wl,,,--defsym=__MPLAB_BUILD=1,$(MP_LINKER_FILE_OPTION),--stack=16,--check-sections,--data-init,--pack-data,--handles,--isr,--no-gc-sections,--fill-upper=0,--stackguard=16,--no-force-link,--smart-io,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--report-mem,--memorysummary,dist/${CND_CONF}/${IMAGE_TYPE}/memoryfile.xml$(MP_EXTRA_LD_POST) -mdfp=${DFP_DIR}/xc16 + ${MP_CC_DIR}\\xc16-bin2hex dist/${CND_CONF}/${IMAGE_TYPE}/Lab3.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} -a -omf=elf -mdfp=${DFP_DIR}/xc16 + +endif + + +# Subprojects +.build-subprojects: + + +# Subprojects +.clean-subprojects: + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r build/default + ${RM} -r dist/default + +# Enable dependency checking +.dep.inc: .depcheck-impl + +DEPFILES=$(shell mplabwildcard ${POSSIBLE_DEPFILES}) +ifneq (${DEPFILES},) +include ${DEPFILES} +endif diff --git a/Lab3.X/nbproject/Makefile-genesis.properties b/Lab3.X/nbproject/Makefile-genesis.properties new file mode 100644 index 0000000..babf995 --- /dev/null +++ b/Lab3.X/nbproject/Makefile-genesis.properties @@ -0,0 +1,10 @@ +#
+#Fri Feb 28 11:09:32 CST 2020
+default.Pack.dfplocation=C\:\\Program Files (x86)\\Microchip\\MPLABX\\v5.30\\packs\\Microchip\\PIC24F-GA-GB_DFP\\1.1.74
+default.com-microchip-mplab-nbide-toolchainXC16-XC16LanguageToolchain.md5=3de759bc6af06f5ee7453ec146192402
+default.languagetoolchain.dir=C\:\\Program Files (x86)\\Microchip\\xc16\\v1.41\\bin
+configurations-xml=a484db181b70bf7bdb9ff81073d3f011
+com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=7cd2eead2ea6964989cbf02efe721a76
+default.languagetoolchain.version=1.41
+host.platform=windows
+conf.ids=default
diff --git a/Lab3.X/nbproject/Makefile-impl.mk b/Lab3.X/nbproject/Makefile-impl.mk new file mode 100644 index 0000000..5ac92a5 --- /dev/null +++ b/Lab3.X/nbproject/Makefile-impl.mk @@ -0,0 +1,69 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a pre- and a post- target defined where you can add customization code. +# +# This makefile implements macros and targets common to all configurations. +# +# NOCDDL + + +# Building and Cleaning subprojects are done by default, but can be controlled with the SUB +# macro. If SUB=no, subprojects will not be built or cleaned. The following macro +# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf +# and .clean-reqprojects-conf unless SUB has the value 'no' +SUB_no=NO +SUBPROJECTS=${SUB_${SUB}} +BUILD_SUBPROJECTS_=.build-subprojects +BUILD_SUBPROJECTS_NO= +BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} +CLEAN_SUBPROJECTS_=.clean-subprojects +CLEAN_SUBPROJECTS_NO= +CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} + + +# Project Name +PROJECTNAME=Lab3.X + +# Active Configuration +DEFAULTCONF=default +CONF=${DEFAULTCONF} + +# All Configurations +ALLCONFS=default + + +# build +.build-impl: .build-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf + + +# clean +.clean-impl: .clean-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf + +# clobber +.clobber-impl: .clobber-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean + + + +# all +.all-impl: .all-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build + + + +# dependency checking support +.depcheck-impl: +# @echo "# This code depends on make tool being used" >.dep.inc +# @if [ -n "${MAKE_VERSION}" ]; then \ +# echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \ +# echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ +# echo "include \$${DEPFILES}" >>.dep.inc; \ +# echo "endif" >>.dep.inc; \ +# else \ +# echo ".KEEP_STATE:" >>.dep.inc; \ +# echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ +# fi diff --git a/Lab3.X/nbproject/Makefile-local-default.mk b/Lab3.X/nbproject/Makefile-local-default.mk new file mode 100644 index 0000000..214e7fa --- /dev/null +++ b/Lab3.X/nbproject/Makefile-local-default.mk @@ -0,0 +1,38 @@ +# +# Generated Makefile - do not edit! +# +# +# This file contains information about the location of compilers and other tools. +# If you commmit this file into your revision control server, you will be able to +# to checkout the project and build it from the command line with make. However, +# if more than one person works on the same project, then this file might show +# conflicts since different users are bound to have compilers in different places. +# In that case you might choose to not commit this file and let MPLAB X recreate this file +# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at +# least once so the file gets created and the project can be built. Finally, you can also +# avoid using this file at all if you are only building from the command line with make. +# You can invoke make with the values of the macros: +# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ... +# +SHELL=cmd.exe +PATH_TO_IDE_BIN=C:/Program Files (x86)/Microchip/MPLABX/v5.30/mplab_platform/platform/../mplab_ide/modules/../../bin/ +# Adding MPLAB X bin directory to path. +PATH:=C:/Program Files (x86)/Microchip/MPLABX/v5.30/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH) +# Path to java used to run MPLAB X when this makefile was created +MP_JAVA_PATH="C:\Program Files (x86)\Microchip\MPLABX\v5.30\sys\java\jre1.8.0_181/bin/" +OS_CURRENT="$(shell uname -s)" +MP_CC="C:\Program Files (x86)\Microchip\xc16\v1.41\bin\xc16-gcc.exe" +# MP_CPPC is not defined +# MP_BC is not defined +MP_AS="C:\Program Files (x86)\Microchip\xc16\v1.41\bin\xc16-as.exe" +MP_LD="C:\Program Files (x86)\Microchip\xc16\v1.41\bin\xc16-ld.exe" +MP_AR="C:\Program Files (x86)\Microchip\xc16\v1.41\bin\xc16-ar.exe" +DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files (x86)/Microchip/MPLABX/v5.30/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar" +MP_CC_DIR="C:\Program Files (x86)\Microchip\xc16\v1.41\bin" +# MP_CPPC_DIR is not defined +# MP_BC_DIR is not defined +MP_AS_DIR="C:\Program Files (x86)\Microchip\xc16\v1.41\bin" +MP_LD_DIR="C:\Program Files (x86)\Microchip\xc16\v1.41\bin" +MP_AR_DIR="C:\Program Files (x86)\Microchip\xc16\v1.41\bin" +# MP_BC_DIR is not defined +DFP_DIR="C:/Program Files (x86)/Microchip/MPLABX/v5.30/packs/Microchip/PIC24F-GA-GB_DFP/1.1.74" diff --git a/Lab3.X/nbproject/Makefile-variables.mk b/Lab3.X/nbproject/Makefile-variables.mk new file mode 100644 index 0000000..6d2747c --- /dev/null +++ b/Lab3.X/nbproject/Makefile-variables.mk @@ -0,0 +1,13 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +CND_BASEDIR=`pwd` +# default configuration +CND_ARTIFACT_DIR_default=dist/default/production +CND_ARTIFACT_NAME_default=Lab3.X.production.hex +CND_ARTIFACT_PATH_default=dist/default/production/Lab3.X.production.hex +CND_PACKAGE_DIR_default=${CND_DISTDIR}/default/package +CND_PACKAGE_NAME_default=lab3.x.tar +CND_PACKAGE_PATH_default=${CND_DISTDIR}/default/package/lab3.x.tar diff --git a/Lab3.X/nbproject/Package-default.bash b/Lab3.X/nbproject/Package-default.bash new file mode 100644 index 0000000..dbb0551 --- /dev/null +++ b/Lab3.X/nbproject/Package-default.bash @@ -0,0 +1,73 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_CONF=default +CND_DISTDIR=dist +TMPDIR=build/${CND_CONF}/${IMAGE_TYPE}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=dist/${CND_CONF}/${IMAGE_TYPE}/Lab3.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +OUTPUT_BASENAME=Lab3.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +PACKAGE_TOP_DIR=lab3.x/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/package +rm -rf ${TMPDIR} +mkdir -p ${TMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory ${TMPDIR}/lab3.x/bin +copyFileToTmpDir "${OUTPUT_PATH}" "${TMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/package/lab3.x.tar +cd ${TMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/package/lab3.x.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${TMPDIR} diff --git a/Lab3.X/nbproject/configurations.xml b/Lab3.X/nbproject/configurations.xml new file mode 100644 index 0000000..fa82250 --- /dev/null +++ b/Lab3.X/nbproject/configurations.xml @@ -0,0 +1,654 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<configurationDescriptor version="65">
+ <logicalFolder name="root" displayName="root" projectFiles="true">
+ <logicalFolder name="HeaderFiles"
+ displayName="Header Files"
+ projectFiles="true">
+ <itemPath>display.h</itemPath>
+ <itemPath>numpad.h</itemPath>
+ </logicalFolder>
+ <logicalFolder name="LinkerScript"
+ displayName="Linker Files"
+ projectFiles="true">
+ </logicalFolder>
+ <logicalFolder name="SourceFiles"
+ displayName="Source Files"
+ projectFiles="true">
+ <itemPath>lab3_main_c.c</itemPath>
+ <itemPath>display.c</itemPath>
+ <itemPath>numpad.c</itemPath>
+ <itemPath>lab3_main_MAYA_C.c</itemPath>
+ </logicalFolder>
+ <logicalFolder name="ExternalFiles"
+ displayName="Important Files"
+ projectFiles="false">
+ <itemPath>Makefile</itemPath>
+ </logicalFolder>
+ </logicalFolder>
+ <sourceRootList>
+ <Elem>.</Elem>
+ </sourceRootList>
+ <projectmakefile>Makefile</projectmakefile>
+ <confs>
+ <conf name="default" type="2">
+ <toolsSet>
+ <developmentServer>localhost</developmentServer>
+ <targetDevice>PIC24FJ64GA002</targetDevice>
+ <targetHeader></targetHeader>
+ <targetPluginBoard></targetPluginBoard>
+ <platformTool>Simulator</platformTool>
+ <languageToolchain>XC16</languageToolchain>
+ <languageToolchainVersion>1.41</languageToolchainVersion>
+ <platform>3</platform>
+ </toolsSet>
+ <packs>
+ <pack name="PIC24F-GA-GB_DFP" vendor="Microchip" version="1.1.74"/>
+ </packs>
+ <compileType>
+ <linkerTool>
+ <linkerLibItems>
+ </linkerLibItems>
+ </linkerTool>
+ <archiverTool>
+ </archiverTool>
+ <loading>
+ <useAlternateLoadableFile>false</useAlternateLoadableFile>
+ <parseOnProdLoad>false</parseOnProdLoad>
+ <alternateLoadableFile></alternateLoadableFile>
+ </loading>
+ <subordinates>
+ </subordinates>
+ </compileType>
+ <makeCustomizationType>
+ <makeCustomizationPreStepEnabled>false</makeCustomizationPreStepEnabled>
+ <makeCustomizationPreStep></makeCustomizationPreStep>
+ <makeCustomizationPostStepEnabled>false</makeCustomizationPostStepEnabled>
+ <makeCustomizationPostStep></makeCustomizationPostStep>
+ <makeCustomizationPutChecksumInUserID>false</makeCustomizationPutChecksumInUserID>
+ <makeCustomizationEnableLongLines>false</makeCustomizationEnableLongLines>
+ <makeCustomizationNormalizeHexFile>false</makeCustomizationNormalizeHexFile>
+ </makeCustomizationType>
+ <C30>
+ <property key="code-model" value="default"/>
+ <property key="const-model" value="default"/>
+ <property key="data-model" value="default"/>
+ <property key="disable-instruction-scheduling" value="false"/>
+ <property key="enable-all-warnings" value="true"/>
+ <property key="enable-ansi-std" value="false"/>
+ <property key="enable-ansi-warnings" value="false"/>
+ <property key="enable-fatal-warnings" value="false"/>
+ <property key="enable-large-arrays" value="false"/>
+ <property key="enable-omit-frame-pointer" value="false"/>
+ <property key="enable-procedural-abstraction" value="false"/>
+ <property key="enable-short-double" value="false"/>
+ <property key="enable-symbols" value="true"/>
+ <property key="enable-unroll-loops" value="false"/>
+ <property key="extra-include-directories" value=""/>
+ <property key="isolate-each-function" value="false"/>
+ <property key="keep-inline" value="false"/>
+ <property key="oXC16gcc-align-arr" value="false"/>
+ <property key="oXC16gcc-cnsts-mauxflash" value="false"/>
+ <property key="oXC16gcc-data-sects" value="false"/>
+ <property key="oXC16gcc-errata" value=""/>
+ <property key="oXC16gcc-fillupper" value=""/>
+ <property key="oXC16gcc-large-aggregate" value="false"/>
+ <property key="oXC16gcc-mauxflash" value="false"/>
+ <property key="oXC16gcc-mpa-lvl" value=""/>
+ <property key="oXC16gcc-name-text-sec" value=""/>
+ <property key="oXC16gcc-near-chars" value="false"/>
+ <property key="oXC16gcc-no-isr-warn" value="false"/>
+ <property key="oXC16gcc-sfr-warn" value="false"/>
+ <property key="oXC16gcc-smar-io-lvl" value="1"/>
+ <property key="oXC16gcc-smart-io-fmt" value=""/>
+ <property key="optimization-level" value="0"/>
+ <property key="post-instruction-scheduling" value="default"/>
+ <property key="pre-instruction-scheduling" value="default"/>
+ <property key="preprocessor-macros" value=""/>
+ <property key="scalar-model" value="default"/>
+ <property key="use-cci" value="false"/>
+ <property key="use-iar" value="false"/>
+ </C30>
+ <C30-AR>
+ <property key="additional-options-chop-files" value="false"/>
+ </C30-AR>
+ <C30-AS>
+ <property key="assembler-symbols" value=""/>
+ <property key="expand-macros" value="false"/>
+ <property key="extra-include-directories-for-assembler" value=""/>
+ <property key="extra-include-directories-for-preprocessor" value=""/>
+ <property key="false-conditionals" value="false"/>
+ <property key="keep-locals" value="false"/>
+ <property key="list-assembly" value="false"/>
+ <property key="list-section-info" value="false"/>
+ <property key="list-source" value="false"/>
+ <property key="list-symbols" value="false"/>
+ <property key="oXC16asm-extra-opts" value=""/>
+ <property key="oXC16asm-list-to-file" value="false"/>
+ <property key="omit-debug-dirs" value="false"/>
+ <property key="omit-forms" value="false"/>
+ <property key="preprocessor-macros" value=""/>
+ <property key="relax" value="false"/>
+ <property key="warning-level" value="emit-warnings"/>
+ </C30-AS>
+ <C30-CO>
+ <property key="coverage-enable" value=""/>
+ </C30-CO>
+ <C30-LD>
+ <property key="additional-options-use-response-files" value="false"/>
+ <property key="boot-eeprom" value="no_eeprom"/>
+ <property key="boot-flash" value="no_flash"/>
+ <property key="boot-ram" value="no_ram"/>
+ <property key="boot-write-protect" value="no_write_protect"/>
+ <property key="enable-check-sections" value="false"/>
+ <property key="enable-data-init" value="true"/>
+ <property key="enable-default-isr" value="true"/>
+ <property key="enable-handles" value="true"/>
+ <property key="enable-pack-data" value="true"/>
+ <property key="extra-lib-directories" value=""/>
+ <property key="fill-flash-options-addr" value=""/>
+ <property key="fill-flash-options-const" value=""/>
+ <property key="fill-flash-options-how" value="0"/>
+ <property key="fill-flash-options-inc-const" value="1"/>
+ <property key="fill-flash-options-increment" value=""/>
+ <property key="fill-flash-options-seq" value=""/>
+ <property key="fill-flash-options-what" value="0"/>
+ <property key="general-code-protect" value="no_code_protect"/>
+ <property key="general-write-protect" value="no_write_protect"/>
+ <property key="generate-cross-reference-file" value="false"/>
+ <property key="heap-size" value=""/>
+ <property key="input-libraries" value=""/>
+ <property key="linker-stack" value="true"/>
+ <property key="linker-symbols" value=""/>
+ <property key="map-file" value="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map"/>
+ <property key="no-ivt" value="false"/>
+ <property key="oXC16ld-extra-opts" value=""/>
+ <property key="oXC16ld-fill-upper" value="0"/>
+ <property key="oXC16ld-force-link" value="false"/>
+ <property key="oXC16ld-no-smart-io" value="false"/>
+ <property key="oXC16ld-nostdlib" value="false"/>
+ <property key="oXC16ld-stackguard" value="16"/>
+ <property key="preprocessor-macros" value=""/>
+ <property key="remove-unused-sections" value="false"/>
+ <property key="report-memory-usage" value="true"/>
+ <property key="secure-eeprom" value="no_eeprom"/>
+ <property key="secure-flash" value="no_flash"/>
+ <property key="secure-ram" value="no_ram"/>
+ <property key="secure-write-protect" value="no_write_protect"/>
+ <property key="stack-size" value="16"/>
+ <property key="symbol-stripping" value=""/>
+ <property key="trace-symbols" value=""/>
+ <property key="warn-section-align" value="false"/>
+ </C30-LD>
+ <C30Global>
+ <property key="common-include-directories" value=""/>
+ <property key="dual-boot-partition" value="0"/>
+ <property key="fast-math" value="false"/>
+ <property key="generic-16-bit" value="false"/>
+ <property key="legacy-libc" value="true"/>
+ <property key="mpreserve-all" value="false"/>
+ <property key="oXC16glb-macros" value=""/>
+ <property key="output-file-format" value="elf"/>
+ <property key="preserve-all" value="false"/>
+ <property key="preserve-file" value=""/>
+ <property key="relaxed-math" value="false"/>
+ <property key="save-temps" value="false"/>
+ </C30Global>
+ <PK3OBPlatformTool>
+ <property key="AutoSelectMemRanges" value="auto"/>
+ <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>
+ <property key="ToolFirmwareFilePath"
+ value="Press to browse for a specific firmware version"/>
+ <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>
+ <property key="memories.bootflash" value="true"/>
+ <property key="memories.configurationmemory" value="true"/>
+ <property key="memories.dataflash" value="true"/>
+ <property key="memories.eeprom" value="true"/>
+ <property key="memories.id" value="true"/>
+ <property key="memories.programmemory" value="true"/>
+ <property key="memories.programmemory.ranges"
+ value="${memories.programmemory.ranges}"/>
+ <property key="memories.userotp" value="true"/>
+ <property key="poweroptions.powerenable" value="false"/>
+ <property key="programoptions.eraseb4program" value="true"/>
+ <property key="programoptions.preservedataflash" value="false"/>
+ <property key="programoptions.preservedataflash.ranges"
+ value="${programoptions.preservedataflash.ranges}"/>
+ <property key="programoptions.preserveeeprom" value="false"/>
+ <property key="programoptions.preserveeeprom.ranges"
+ value="${programoptions.preserveeeprom.ranges}"/>
+ <property key="programoptions.preserveprogram.ranges" value=""/>
+ <property key="programoptions.preserveprogramrange" value="false"/>
+ <property key="programoptions.usehighvoltageonmclr" value="false"/>
+ <property key="programoptions.uselvpprogramming" value="false"/>
+ <property key="voltagevalue" value="3.25"/>
+ </PK3OBPlatformTool>
+ <Simulator>
+ <property key="codecoverage.enabled" value="Disable"/>
+ <property key="codecoverage.enableoutputtofile" value="false"/>
+ <property key="codecoverage.outputfile" value=""/>
+ <property key="oscillator.auxfrequency" value="120"/>
+ <property key="oscillator.auxfrequencyunit" value="Mega"/>
+ <property key="oscillator.frequency" value="16"/>
+ <property key="oscillator.frequencyunit" value="Mega"/>
+ <property key="oscillator.rcfrequency" value="250"/>
+ <property key="oscillator.rcfrequencyunit" value="Kilo"/>
+ <property key="periphADC1.altscl" value="false"/>
+ <property key="periphADC1.minTacq" value=""/>
+ <property key="periphADC1.tacqunits" value="microseconds"/>
+ <property key="periphADC2.altscl" value="false"/>
+ <property key="periphADC2.minTacq" value=""/>
+ <property key="periphADC2.tacqunits" value="microseconds"/>
+ <property key="periphComp1.gte" value="gt"/>
+ <property key="periphComp2.gte" value="gt"/>
+ <property key="periphComp3.gte" value="gt"/>
+ <property key="periphComp4.gte" value="gt"/>
+ <property key="periphComp5.gte" value="gt"/>
+ <property key="periphComp6.gte" value="gt"/>
+ <property key="reset.scl" value="false"/>
+ <property key="reset.type" value="MCLR"/>
+ <property key="tracecontrol.include.timestamp" value="summarydataenabled"/>
+ <property key="tracecontrol.select" value="0"/>
+ <property key="tracecontrol.stallontracebufferfull" value="false"/>
+ <property key="tracecontrol.timestamp" value="0"/>
+ <property key="tracecontrol.tracebufmax" value="546000"/>
+ <property key="tracecontrol.tracefile" value="defmplabxtrace.log"/>
+ <property key="tracecontrol.traceresetonrun" value="false"/>
+ <property key="uart0io.output" value="window"/>
+ <property key="uart0io.outputfile" value=""/>
+ <property key="uart0io.uartioenabled" value="false"/>
+ <property key="uart10io.output" value="window"/>
+ <property key="uart10io.outputfile" value=""/>
+ <property key="uart10io.uartioenabled" value="false"/>
+ <property key="uart1io.output" value="window"/>
+ <property key="uart1io.outputfile" value=""/>
+ <property key="uart1io.uartioenabled" value="false"/>
+ <property key="uart2io.output" value="window"/>
+ <property key="uart2io.outputfile" value=""/>
+ <property key="uart2io.uartioenabled" value="false"/>
+ <property key="uart3io.output" value="window"/>
+ <property key="uart3io.outputfile" value=""/>
+ <property key="uart3io.uartioenabled" value="false"/>
+ <property key="uart4io.output" value="window"/>
+ <property key="uart4io.outputfile" value=""/>
+ <property key="uart4io.uartioenabled" value="false"/>
+ <property key="uart5io.output" value="window"/>
+ <property key="uart5io.outputfile" value=""/>
+ <property key="uart5io.uartioenabled" value="false"/>
+ <property key="uart6io.output" value="window"/>
+ <property key="uart6io.outputfile" value=""/>
+ <property key="uart6io.uartioenabled" value="false"/>
+ <property key="uart7io.output" value="window"/>
+ <property key="uart7io.outputfile" value=""/>
+ <property key="uart7io.uartioenabled" value="false"/>
+ <property key="uart8io.output" value="window"/>
+ <property key="uart8io.outputfile" value=""/>
+ <property key="uart8io.uartioenabled" value="false"/>
+ <property key="uart9io.output" value="window"/>
+ <property key="uart9io.outputfile" value=""/>
+ <property key="uart9io.uartioenabled" value="false"/>
+ <property key="warningmessagebreakoptions.W0001_CORE_BITREV_MODULO_EN"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0002_CORE_SECURE_MEMORYACCESS"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0003_CORE_SW_RESET" value="report"/>
+ <property key="warningmessagebreakoptions.W0004_CORE_WDT_RESET" value="report"/>
+ <property key="warningmessagebreakoptions.W0005_CORE_IOPUW_RESET"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0006_CORE_CODE_GUARD_PFC_RESET"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0007_CORE_DO_LOOP_STACK_UNDERFLOW"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0008_CORE_DO_LOOP_STACK_OVERFLOW"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0009_CORE_NESTED_DO_LOOP_RANGE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0010_CORE_SIM32_ODD_WORDACCESS"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0011_CORE_SIM32_UNIMPLEMENTED_RAMACCESS"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0012_CORE_STACK_OVERFLOW_RESET"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0013_CORE_STACK_UNDERFLOW_RESET"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0014_CORE_INVALID_OPCODE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0015_CORE_INVALID_ALT_WREG_SET"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0016_CORE_STACK_ERROR"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0017_CORE_ODD_RAMWORDACCESS"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0018_CORE_UNIMPLEMENTED_RAMACCESS"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0019_CORE_UNIMPLEMENTED_PROMACCESS"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0020_CORE_ACCESS_NOTIN_X_SPACE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0021_CORE_ACCESS_NOTIN_Y_SPACE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0022_CORE_XMODEND_LESS_XMODSRT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0023_CORE_YMODEND_LESS_YMODSRT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0024_CORE_BITREV_MOD_IS_ZERO"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0025_CORE_HARD_TRAP" value="report"/>
+ <property key="warningmessagebreakoptions.W0026_CORE_UNIMPLEMENTED_MEMORYACCESS"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0027_CORE_UNIMPLEMENTED_EDSACCESS"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0028_TBLRD_WORM_CONFIG_MEMORY"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0029_TBLRD_DEVICE_ID" value="report"/>
+ <property key="warningmessagebreakoptions.W0030_CORE_UNIMPLEMENTED_MEMORY_ACCESS"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0031_BSLIM_INSUFFICIENT_BOOT_SEGMENT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0032_BSLIM_LIMITS_EXCEEDS_PROG_MEMORY"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0033_CORE_UNPREDICTABLE_OPCODE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0034_CORE_UNALIGNED_MEMORY_ACCESS"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0035_CORE_UNIMPLEMENTED_RAMACCESS_NOTRAP"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0040_FPU_DIFF_CP10_CP11"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0041_FPU_ACCESS_DENIED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0042_FPU_PRIVILEGED_ACCESS_ONLY"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0043_FPU_CP_RESERVED_VALUE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0044_FPU_OUT_OF_RANGE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0051_INSTRUCTION_DIV_NOT_ENOUGH_REPEAT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0052_INSTRUCTION_DIV_TOO_MANY_REPEAT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0053_INVALID_INTCON_VS_FIELD_VALUE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0101_SIM_UPDATE_FAILED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0102_SIM_PERIPH_MISSING"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0103_SIM_PERIPH_FAILED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0104_SIM_FAILED_TO_INIT_TOOL"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0105_SIM_INVALID_FIELD"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0106_SIM_PERIPH_PARTIAL_SUPPORT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0107_SIM_NOT_SUPPORTED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0108_SIM_RESERVED_SETTING"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0109_SIM_PERIPHERAL_IN_DEVELOPMENT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0110_SIM_UNEXPECTED_EVENT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0111_SIM_UNSUPPORTED_SELECTION"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0112_SIM_INVALID_OPERATION"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0113_SIM_WRITE_TO_PROTECTED_SFR"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0114_SIM_INVALID_KEY" value="report"/>
+ <property key="warningmessagebreakoptions.W0115_SIM_FAILED_TO_PARSE_DEVICE_FILE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0116_SIM_STACK_OVERFLOW"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0117_SIM_STACK_UNDERFLOW"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0118_SIM_INVALID_FIELD_VALUE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0119_SIM_SAMPLING_RATE_VIOLATION"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0201_ADC_NO_STIMULUS_FILE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0202_ADC_GO_DONE_BIT" value="report"/>
+ <property key="warningmessagebreakoptions.W0203_ADC_MINIMUM_2_TAD"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0204_ADC_TAD_TOO_SMALL"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0205_ADC_UNEXPECTED_TRANSITION"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0206_ADC_SAMP_TIME_TOO_SHORT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0207_ADC_NO_PINS_SCANNED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0208_ADC_UNSUPPORTED_CLOCK_SOURCE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0209_ADC_ANALOG_CHANNEL_DIGITAL"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0210_ADC_ANALOG_CHANNEL_OUTPUT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0211_ADC_PIN_INVALID_CHANNEL"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0212_ADC_BAND_GAP_NOT_SUPPORTED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0213_ADC_RESERVED_SSRC"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0214_ADC_POSITIVE_INPUT_DIGITAL"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0215_ADC_POSITIVE_INPUT_OUTPUT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0216_ADC_NEGATIVE_INPUT_DIGITAL"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0217_ADC_NEGATIVE_INPUT_OUTPUT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0218_ADC_REFERENCE_HIGH_DIGITAL"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0219_ADC_REFERENCE_HIGH_OUTPUT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0220_ADC_REFERENCE_LOW_DIGITAL"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0221_ADC_REFERENCE_LOW_OUTPUT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0222_ADC_OVERFLOW" value="report"/>
+ <property key="warningmessagebreakoptions.W0223_ADC_UNDERFLOW" value="report"/>
+ <property key="warningmessagebreakoptions.W0224_ADC_CTMU_NOT_SUPPORTED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0225_ADC_INVALID_CH0S"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0226_ADC_VBAT_NOT_SUPPORTED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0227_ADC_INVALID_ADCS"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0228_ADC_INVALID_ADCS"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0229_ADC_INVALID_ADCS"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0230_ADC_TRIGSEL_NOT_SUPPORTED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0231_ADC_NOT_WARMED" value="report"/>
+ <property key="warningmessagebreakoptions.W0232_ADC_CALIBRATION_ABORTED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0233_ADC_CORE_POWERED_EARLY"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0234_ADC_ALREADY_CALIBRATING"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0235_ADC_CAL_TYPE_CHANGED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0236_ADC_CAL_INVALIDATED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0237_ADC_UNKNOWN_DATASHEET"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0238_ADC_INVALID_SFR_FIELD_VALUE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0239_ADC_UNSUPPORTED_INPUT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0240_ADC_NOT_CALIBRATED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0241_ADC_FRACTIONAL_NOT_ALLOWED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0242_ADC_BG_INT_BEFORE_PWR"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0243_ADC_INVALID_TAD" value="report"/>
+ <property key="warningmessagebreakoptions.W0244_ADC_CONVERSION_ABORTED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0245_ADC_BUFREGEN_NOT_ALLOWED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0400_PWM_PWM_FASTER_THAN_FOSC"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0600_WDT_2ND_WDT_MR_WRITE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0601_WDT_EXPIRED" value="report"/>
+ <property key="warningmessagebreakoptions.W0601_WDT_RESET_OUTSIDE_WINDOW"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0700_CLC_GENERAL_WARNING"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0701_CLC_CLCOUT_AS_INPUT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0702_CLC_CIRCULAR_LOOP"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0800_ACC_INPUT_INVALID_CONFIG"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0801_ACC_INPUT_NOT_SUPPORTED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0802_ACC_INVERTED_WINDOW_LIMITS"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0803_ACC_MISMATCHED_POS_INPUTS"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0804_ACC_WINDOW_COMP_DISABLED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0805_ACC_WINDOW_COMPS_MODES"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W0806_ACC_FEATURE_NOT_SUPPORTED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W10001_RESERVED_IRQ_HANDLER_INVOKED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W10002_UNSUPPORTED_CLK_SOURCE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W10101_UNSUPPORTED_CHANNEL_MODE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W10102_UNSUPPORTED_CLK_SOURCE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W10103_UNSUPPORTED_RECEIVER_FILTER"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W10301_NO_PORT_PINS_FOUND"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W10500_UNSUPPORTED_SOURCE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W1201_DATAFLASH_MEM_OUTSIDE_RANGE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W1202_DATAFLASH_ERASE_WHILE_LOCKED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W1203_DATAFLASH_WRITE_WHILE_LOCKED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W1401_DMA_PERIPH_NOT_AVAIL"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W1402_DMA_INVALID_IRQ" value="report"/>
+ <property key="warningmessagebreakoptions.W1403_DMA_INVALID_SFR" value="report"/>
+ <property key="warningmessagebreakoptions.W1404_DMA_INVALID_DMA_ADDR"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W1405_DMA_IRQ_DIR_MISMATCH"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W1600_PPS_INVALID_MAP" value="report"/>
+ <property key="warningmessagebreakoptions.W1601_PPS_INVALID_PIN_DESCRIPTION"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W1800_PWM_TIMER_SELECTION_NOT_AVIALABLE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W1801_PWM_TIMER_SELECTION_BAD_CLOCK_INPUT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W1802_PWM_TIMER_MISSING_PERSCALER_INFO"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W2001_INPUTCAPTURE_TMR3_UNAVAILABLE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W2002_INPUTCAPTURE_CAPTURE_EMPTY"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W2003_INPUTCAPTURE_SYNCSEL_NOT_AVIALABLE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W2004_INPUTCAPTURE_BAD_SYNC_SOURCE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W2501_OUTPUTCOMPARE_SYNCSEL_NOT_AVIALABLE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W2502_OUTPUTCOMPARE_BAD_SYNC_SOURCE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W2503_OUTPUTCOMPARE_BAD_TRIGGER_SOURCE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W2700_MPU_ILLEGAL_DREGION"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W2701_MPU_INVALID_REGION"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W3000_LPM_READ_PROTECTION_SECTION"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W3010_SPM_WRITE_PROTECTION_SECTION"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W6001_RTT_FORBIDDEN_RTPRES"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W6002_RTT_BAD_WRITING_ALMV"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W6003_RTT_BAD_WRITING_RTPRES"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W7001_SMT_CLK_SELECTION_NOT_SUPPORT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W7002_SMT_SIG_SELECTION_NOT_SUPPORT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W7003_SMT_WIN_SELECTION_NOT_SUPPORT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W8001_OSC_INVALID_CLOCK_SOURCE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9001_TMR_GATE_AND_EXTCLOCK_ENABLED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9002_TMR_NO_PIN_AVAILABLE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9003_TMR_INVALID_CLOCK_SOURCE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9201_UART_TX_OVERFLOW"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9202_UART_TX_CAPTUREFILE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9203_UART_TX_INVALIDINTERRUPTMODE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9204_UART_RX_EMPTY_QUEUE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9205_UART_TX_BADFILE" value="report"/>
+ <property key="warningmessagebreakoptions.W9206_UART_RESERVED_MODE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9207_UART_UNABLETOCLOSE_FILE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9401_CVREF_INVALIDSOURCESELECTION"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9402_CVREF_INPUT_OUTPUTPINCONFLICT"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9601_COMP_FVR_SOURCE_UNAVAILABLE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9602_COMP_DAC_SOURCE_UNAVAILABLE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9603_COMP_CVREF_SOURCE_UNAVAILABLE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9604_COMP_SLOPE_SOURCE_UNAVAILABLE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9605_COMP_PRG_SOURCE_UNAVAILABLE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9607_COMP_DGTL_FLTR_OPTION_UNAVAILABLE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9609_COMP_DGTL_FLTR_CLK_UNAVAILABLE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9801_FVR_INVALID_MODE_SELECTION"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9801_SCL_BAD_SUBTYPE_INDICATION"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9802_SCL_FILE_NOT_FOUND"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9803_SCL_FAILED_TO_READ_FILE"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9804_SCL_UNRECOGNIZED_LABEL"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9805_SCL_UNRECOGNIZED_VAR"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9901_RTSP_INVALID_OPERATION_SELECTION"
+ value="report"/>
+ <property key="warningmessagebreakoptions.W9902_RTSP_FLASH_PROGRAM_WRITE_PROTECTED"
+ value="report"/>
+ <property key="warningmessagebreakoptions.displaywarningmessagesoption"
+ value=""/>
+ <property key="warningmessagebreakoptions.warningmessages" value="holdstate"/>
+ </Simulator>
+ <item path="lab3_main_c.c" ex="true" overriding="false">
+ </item>
+ </conf>
+ </confs>
+</configurationDescriptor>
diff --git a/Lab3.X/nbproject/private/configurations.xml b/Lab3.X/nbproject/private/configurations.xml new file mode 100644 index 0000000..74e2a26 --- /dev/null +++ b/Lab3.X/nbproject/private/configurations.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<configurationDescriptor version="65">
+ <projectmakefile>Makefile</projectmakefile>
+ <defaultConf>0</defaultConf>
+ <confs>
+ <conf name="default" type="2">
+ <platformToolSN></platformToolSN>
+ <languageToolchainDir>C:\Program Files (x86)\Microchip\xc16\v1.41\bin</languageToolchainDir>
+ <mdbdebugger version="1">
+ <placeholder1>place holder 1</placeholder1>
+ <placeholder2>place holder 2</placeholder2>
+ </mdbdebugger>
+ <runprofile version="6">
+ <args></args>
+ <rundir></rundir>
+ <buildfirst>true</buildfirst>
+ <console-type>0</console-type>
+ <terminal-type>0</terminal-type>
+ <remove-instrumentation>0</remove-instrumentation>
+ <environment>
+ </environment>
+ </runprofile>
+ </conf>
+ </confs>
+</configurationDescriptor>
diff --git a/Lab3.X/nbproject/private/private.xml b/Lab3.X/nbproject/private/private.xml index c10361e..d82f0d3 100644 --- a/Lab3.X/nbproject/private/private.xml +++ b/Lab3.X/nbproject/private/private.xml @@ -3,11 +3,11 @@ <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group>
- <file>file:/C:/Users/Ross/MPLABXProjects/EE2361Projects/Lab3.X/display.h</file>
- <file>file:/C:/Users/Ross/MPLABXProjects/EE2361Projects/Lab3.X/numpad.h</file>
- <file>file:/C:/Users/Ross/MPLABXProjects/EE2361Projects/Lab3.X/display.c</file>
- <file>file:/C:/Users/Ross/MPLABXProjects/EE2361Projects/Lab3.X/numpad.c</file>
- <file>file:/C:/Users/Ross/MPLABXProjects/EE2361Projects/Lab3.X/lab3_main_c.c</file>
+ <file>file:/C:/Users/MSatt/MPLABXProjects/EE2361Projects/Lab3.X/numpad.h</file>
+ <file>file:/C:/Users/MSatt/MPLABXProjects/EE2361Projects/Lab3.X/lab3_main_c.c</file>
+ <file>file:/C:/Users/MSatt/MPLABXProjects/EE2361Projects/Lab3.X/display.c</file>
+ <file>file:/C:/Users/MSatt/MPLABXProjects/EE2361Projects/Lab3.X/numpad.c</file>
+ <file>file:/C:/Users/MSatt/MPLABXProjects/EE2361Projects/Lab3.X/display.h</file>
</group>
</open-files>
</project-private>
diff --git a/Lab3.X/nbproject/project.xml b/Lab3.X/nbproject/project.xml new file mode 100644 index 0000000..8f58032 --- /dev/null +++ b/Lab3.X/nbproject/project.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>com.microchip.mplab.nbide.embedded.makeproject</type>
+ <configuration>
+ <data xmlns="http://www.netbeans.org/ns/make-project/1">
+ <name>Lab3</name>
+ <creation-uuid>87ceaaaa-2d11-4659-ab7c-7b12fe00629e</creation-uuid>
+ <make-project-type>0</make-project-type>
+ <c-extensions>c</c-extensions>
+ <cpp-extensions/>
+ <header-extensions>h</header-extensions>
+ <asminc-extensions/>
+ <sourceEncoding>ISO-8859-1</sourceEncoding>
+ <make-dep-projects/>
+ <sourceRootList>
+ <sourceRootElem>.</sourceRootElem>
+ </sourceRootList>
+ <confList>
+ <confElem>
+ <name>default</name>
+ <type>2</type>
+ </confElem>
+ </confList>
+ <formatting>
+ <project-formatting-style>false</project-formatting-style>
+ </formatting>
+ </data>
+ </configuration>
+</project>
diff --git a/Lab3.X/numpad.c b/Lab3.X/numpad.c index 455ef19..5c2c924 100644 --- a/Lab3.X/numpad.c +++ b/Lab3.X/numpad.c @@ -1,106 +1,64 @@ #include "xc.h"
+
void initKeyPad(void) {
- TRISA = 0b0000000000011111; //set port A to inputs,
- LATA = 0x0000; //Set all of port A to LOW
- CNPU1bits.CN11PUE = 1;
- CNPU1bits.CN12PUE = 1;
- CNPU1bits.CN13PUE = 1;
- CNPU1bits.CN14PUE = 1;
+ AD1PCFG = 0x9fff; //sets all pins to digital I/O
+ TRISA = 0b0000000000011111; //set port A to inputs,
+ TRISB = 0b0000000000000011; //and port B to outputs
+ LATA = 0xFFFF; //Set all of port A to HIGH
+ LATB = 0xF000; //Set RB12-15 to high, no touch rest of RB
+ CNPU1bits.CN2PUE = 1; //RA0
+ CNPU1bits.CN3PUE = 1; //RA1
+ CNPU2bits.CN30PUE = 1; //RA2
+ CNPU2bits.CN29PUE = 1; //RA3
+ T1CON = 0;
+ PR1 = 15999;
+ TMR1 = 0;
+ IFS0bits.T1IF = 0;
+ T1CONbits.TON = 1;
}
+
void padDelay(long n) {
- for (n=n; n>0; n--) {
- asm("nop");
- }
+ for (n = n; n > 0; n--) {
+ asm("nop");
+ }
}
// 1 2 3 4 5 6 7 8
// RA0 RA1 RA2 RA3 RB15 RB14 RB13 RB12
+
char readKeyPadRAW(void) {
- int i;
- char num;
-//0
- num = (_RA0 << 3) | (_RA1 << 2) | (_RA2 << 1) | _RA3;
- LATB |= (0b1111 << 12);
- padDelay(5);
- for (i = 0; i < 4; i++) {
- LATB ^= 0b1 << (15 - i);
- padDelay(10);
- switch (i) {
- case 0:
- switch (num) {
- case 0b1110:
- return 'A';
- break;
- case 0b1101:
- return '3';
- break;
- case 0b1011:
- return '2';
- break;
- case 0b0111:
- return '1';
- break;
- } break;
- case 1:
- switch (num) {
- case 0b1110:
- return 'b';
- break;
- case 0b1101:
- return '6';
- break;
- case 0b1011:
- return '5';
- break;
- case 0b0111:
- return '4';
- break;
- } break;
- case 2:
- switch (num) {
- case 0b1110:
- return 'C';
- break;
- case 0b1101:
- return '9';
- break;
- case 0b1011:
- return '8';
- break;
- case 0b0111:
- return '7';
- break;
- } break;
- case 3:
- switch (num) {
- case 0b1110:
- return 'd';
- break;
- case 0b1101:
- return 'E';
- break;
- case 0b1011:
- return '0';
- break;
- case 0b0111:
- return 'F';
- break;
- } break;
- } //END switch(i);
- LATB |= (0b1111 << 12);
+ if ((PORTAbits.RA0 || LATBbits.LATB12) == 0) {
+ return 'A';
+ } else if ((PORTAbits.RA1 || LATBbits.LATB12) == 0) {
+ return '3';
+ } else if ((PORTAbits.RA2 || LATBbits.LATB12) == 0) {
+ return '2';
+ } else if ((PORTAbits.RA3 || LATBbits.LATB12) == 0) {
+ return '1';
+ } else if ((PORTAbits.RA0 || LATBbits.LATB13) == 0) {
+ return 'b';
+ } else if ((PORTAbits.RA1 || LATBbits.LATB13) == 0) {
+ return '6';
+ } else if ((PORTAbits.RA2 || LATBbits.LATB13) == 0) {
+ return '5';
+ } else if ((PORTAbits.RA3 || LATBbits.LATB13) == 0) {
+ return '4';
+ } else if ((PORTAbits.RA0 || LATBbits.LATB14) == 0) {
+ return 'C';
+ } else if ((PORTAbits.RA1 || LATBbits.LATB14) == 0) {
+ return '9';
+ } else if ((PORTAbits.RA2 || LATBbits.LATB14) == 0) {
+ return '8';
+ } else if ((PORTAbits.RA3 || LATBbits.LATB14) == 0) {
+ return '7';
+ } else if ((PORTAbits.RA0 || LATBbits.LATB15) == 0) {
+ return 'd';
+ } else if ((PORTAbits.RA1 || LATBbits.LATB15) == 0) {
+ return 'F';
+ } else if ((PORTAbits.RA2 || LATBbits.LATB15) == 0) {
+ return '0';
+ } else if ((PORTAbits.RA3 || LATBbits.LATB15) == 0) {
+ return 'E';
+ } else {
+ return 'N';
}
- return '\0';
}
-/*
-Outputs<8:5> = 0b0111; // Set Row 1 output Low
-delay(1us); // this delay could be lower, probably 2-3 cycles
-RowOne = Inputs<4:1>; // returns 0b1111 (no buttons pressed in row 1)
-
-Outputs<8:5> = 0b1011; // Set Row 2 output Low
-delay(1us);
-RowTwo = Inputs<4:1>; // returns 0b1101 (the ?6? key was pressed!)
-...
-Outputs<8:5> = 0b1110; // Set Row 4 output Low
-delay(1us);
-RowFour = Inputs<4:1>; // returns 0b1111 (no buttons pressed in row 4)
-
- */
diff --git a/Lab3.X/numpad.h b/Lab3.X/numpad.h index d94bf42..057ee69 100644 --- a/Lab3.X/numpad.h +++ b/Lab3.X/numpad.h @@ -7,9 +7,9 @@ extern "C" {
#endif /* __cplusplus */
- // Insert declarations
+ // Insert declarations
void initKeyPad(void);
- unsigned int readKeyPadRAW(void);
+ char readKeyPadRAW(void);
#ifdef __cplusplus
}
|