Difference between revisions of "PIC32MX: Digital Inputs"
From Mech
Jump to navigationJump to searchAndrew Long (talk | contribs) |
Andrew Long (talk | contribs) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Working with digital inputs and outputs is fundamental to circuit design, and PIC microcontrollers add versatility to design by allowing programming and re-programming of the logic associated with input and output pins. In this way, one PIC microcontroller can take the place of many pre-programmed digital logic ICs. |
Working with digital inputs and outputs is fundamental to circuit design, and PIC microcontrollers add versatility to design by allowing programming and re-programming of the logic associated with input and output pins. In this way, one PIC microcontroller can take the place of many pre-programmed digital logic ICs. |
||
==Available Pins== |
|||
<br><br> |
|||
==Digital Inputs Example== |
==Digital Inputs Example== |
||
This section uses an example to describe how to set up and read digital inputs using a PIC32MX460F512L. |
This section uses an example to describe how to set up and read digital inputs using a PIC32MX460F512L. |
||
Line 7: | Line 5: | ||
Program to display push-button input as LED (on board) output |
Program to display push-button input as LED (on board) output |
||
/******************************************************************** |
|||
First include header files with definitions for generic type definitions, compiler, and for specific PIC. Also include the plib header file. |
|||
Digital Input Code |
|||
Andrew Long |
|||
#include "GenericTypeDefs.h" |
|||
********************************************************************/ |
|||
⚫ | |||
#include "HardwareProfile.h" |
|||
#include "HardwareProfile.h" |
|||
⚫ | |||
NOTE THAT BECAUSE WE USE THE BOOTLOADER, NO CONFIGURATION IS NECESSARY |
// NOTE THAT BECAUSE WE USE THE BOOTLOADER, NO CONFIGURATION IS NECESSARY |
||
// THE BOOTLOADER PROJECT ACTUALLY CONTROLS ALL OF OUR CONFIG BITS |
|||
⚫ | |||
⚫ | |||
// Define a constant INPUT_A9 which reads the digital input. |
|||
⚫ | |||
Begin main body of program. |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
{ |
|||
⚫ | |||
Initialize the LEDs on the board. This function may be different depending on the hardware profile. This function is for UBW32. |
|||
⚫ | |||
⚫ | |||
// Set all analog pins to be digital I/O |
|||
The pin that we want to use as an input must be initialized as an input. TRISx is a register that sets the pin as an input (1) or an output(0). You can set entire ports as inputs / outputs by using TRISG &= Hex number; We use &= hex number to only change the pins that we want to set as inputs / outputs. |
|||
AD1PCFG = 0xFFFF; |
|||
TRISGbits.TRISG0=1; |
|||
//Initialize all of the LED pins |
|||
Use while to set up infinite loop. What we're going to do is blink an LED on the board on and off depending on whether or not the digital input is high or low. |
|||
⚫ | |||
while(1) |
|||
⚫ | |||
// The pin that we want to use as an input must be initialized as an input. |
|||
if (INPUT_G0) |
|||
// TRISx is a register that sets the pin as an input (1) or an output(0). |
|||
{ |
|||
// You can set entire ports as inputs / outputs by using TRISA &= Hex number; |
|||
⚫ | |||
// We use &= hex number to only change the pins that we want to set as inputs / outputs. |
|||
} |
|||
//Set A9 as a digital input |
|||
else |
|||
TRISAbits.TRISA9=1; |
|||
{ |
|||
⚫ | |||
while(1) |
|||
{ |
|||
mLED_2_On(); |
|||
} |
|||
<br> |
|||
// What we're going to do is blink an LED on and off |
|||
===Circuit Diagram=== |
|||
// depending on whether or not digital input is high or low. |
|||
if (INPUT_A9 == 0) |
|||
{ |
|||
⚫ | |||
} |
|||
else |
|||
{ |
|||
⚫ | |||
} |
|||
⚫ | |||
} |
Latest revision as of 13:20, 5 January 2010
Working with digital inputs and outputs is fundamental to circuit design, and PIC microcontrollers add versatility to design by allowing programming and re-programming of the logic associated with input and output pins. In this way, one PIC microcontroller can take the place of many pre-programmed digital logic ICs.
Digital Inputs Example
This section uses an example to describe how to set up and read digital inputs using a PIC32MX460F512L.
Sample Code
Program to display push-button input as LED (on board) output
/******************************************************************** Digital Input Code Andrew Long ********************************************************************/ #include "HardwareProfile.h" #include <plib.h> // NOTE THAT BECAUSE WE USE THE BOOTLOADER, NO CONFIGURATION IS NECESSARY // THE BOOTLOADER PROJECT ACTUALLY CONTROLS ALL OF OUR CONFIG BITS // Define a constant INPUT_A9 which reads the digital input. // PORTx reads on port x the current value of the pin (in this case A9). #define INPUT_A9 PORTAbits.RA9 int main(void) { // Configure the proper PB frequency and the number of wait states SYSTEMConfigPerformance(SYS_FREQ); // Set all analog pins to be digital I/O AD1PCFG = 0xFFFF; //Initialize all of the LED pins mInitAllLEDs(); // The pin that we want to use as an input must be initialized as an input. // TRISx is a register that sets the pin as an input (1) or an output(0). // You can set entire ports as inputs / outputs by using TRISA &= Hex number; // We use &= hex number to only change the pins that we want to set as inputs / outputs. //Set A9 as a digital input TRISAbits.TRISA9=1; while(1) { mLED_2_On(); // What we're going to do is blink an LED on and off // depending on whether or not digital input is high or low. if (INPUT_A9 == 0) { mLED_3_On(); } else { mLED_3_Off(); } } }