Buttons and Direct Port Access
https://www.ccsinfo.com/forum/viewtopic.php?t=32211&view=next
Board settings
First connect the board to USB port and switch it ON. Then tutn ON the number 8 bit on SW11 and SW1.
Example Code
Button example
//Include the header for 16F877A.
#include <16F877A.h>
//We use an xtal crystal, no watchdog,
//no low-voltage protection and no code protection.
#fuses XT, NOWDT, NOLVP, NOPROTECT
//The crystal is at 4,000,000 Hz.
#use delay (clock=4M)
//Set button to pin RB0.
#define BUTTON PIN_B0
//Set LED on pin RCO.
#define LED PIN_C0
//This is the starting point of the program.
void main()
{
//Infinite loop.
while(1)
{
//If the button is not pressed switch off the led.
if (input(BUTTON) == 1)
{
output_low(LED);
}
//If the button is pressed switch on the led.
else if (input (BUTTON) == 0)
{
output_high(LED):
}
//Wait for 50 milliseconds.
delay_ms(50);
}
}
Button state example
//Include the header for 16F877A.
#include <16F877A.h>
//We use an xtal crystal, no watchdog,
//no low-voltage protection and no code protection.
#fuses XT, NOWDT, NOLVP, NOPROTECT
//The crystal is at 4,000,000 Hz.
#use delay (clock=4M)
//Set button to pin RB0.
#define BUTTON PIN_B0
//Set LED on pin RCO.
#define LED PIN_C0
//This is the starting point of the program.
void main()
{
//Create a LED state and a Button state.
int1 Led_State = 0, Btn_State = 0;
output_high(LED);
//Infinite loop.
while (1)
{
//Read the RB0 and store it in Button state.
Btn_State = input(BUTTON);
//If LED is off and press the button toggle the LED.
if ((Led_State == 0) && (Btn_State == 1) )
{
output_toggle(LED);
}
//The current LED state is the button state.
Led_State = Btn_State;
//De-bounce delay.
delay_ms(20);
}
}
DPA No.1 example
For this example replace the following line of code in the Button example code
//Set button to pin RB0. #define BUTTON PIN_B0
to
#define BUTTON PIN_B4
For the Direct Port Access N0.1 example you have to connect with a jumper wire the RB4 to RB0.
DPA No.2 example
For this example replace the following lines of code in the Button state example code
//Set button to pin RB0. #define BUTTON PIN_B0
to
#define BUTTON PIN_B4
and
//Set LED on pin RCO. #define LED PIN_C0
to
#define LED PIN_D4
For the Direct Port Access N0.2 example you have to connect with a jumper wire the RD4 to RC0.