Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[PIC] [Help] PIC 16F886 with 9 button program with CCS

Status
Not open for further replies.

didoe

Newbie level 4
Joined
Aug 26, 2009
Messages
6
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
Viet Nam
Activity points
1,308
Hi all. I'm a newbie in PIC and i do this project

Input :

Port A0-A5
Port C0-C2

Output :

PortB

When i push a button form 1-9 Pic will output random on PortB. This is program i have written. I have simulation on Proteus, it working but sometime when i push button, output is blinking, not constant. Is there wrong in this program?

And when I download program to real chip PIC 16F886, it not working. Pls help me make good and clear program. Many thanks !

Code:
#include <16F886.h>

#use delay(crystal=20000000)

#define sw1 PIN_A0
#define sw2 PIN_A1
#define sw3 PIN_A2
#define sw4 PIN_A3
#define sw5 PIN_A4
#define sw6 PIN_A5

#define sw7 PIN_C0
#define sw8 PIN_C1
#define sw9 PIN_C2

#FUSES NOWDT //No Watch Dog Timer
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

void main()
{

while(TRUE)
{
//sw1
if(!input(sw1))
OUTPUT_B(0x70);

///sw2
else if(!input(sw2))
OUTPUT_B(0x0C);

///sw3
else if(!input(sw3))
OUTPUT_B(0x04);

///sw4
else if (!input(sw4))
OUTPUT_B(0x07);

///sw5
else if (!input(sw5))
OUTPUT_B(0x02);

///sw6
else if (!input(sw6))
OUTPUT_B(0x05);


///sw7
else if (!input(sw7))
OUTPUT_B(0x0E);

///sw8
else if (!input(sw8))
OUTPUT_B(0x0B);

///sw9
else if (!input(sw9))
OUTPUT_B(0x0A);

else
OUTPUT_B(0x00);
}

}

USE FORUM ADD IMAGE FEATURE, NOT THIRD PARTY
 
Last edited by a moderator:

Anyone can help. Output blinking when no input signal
 

use some kinda delay in your program (as debounce time) after you detect the key is pressed. it will solved problem.
 

if((!input(sw1)) && (input(sw2)) && (input(sw3)) && (input(sw4)) && (input(sw5)) && (input(sw6)) && (input(sw7)) && (input(sw8)) && (input(sw9)))OUTPUT_B(0x70);

//and similar if() conditions...

PORTA and C might have ADC, Comparator, etc... So, Configure, ANSELx, ADCONx, VRCON, CVRCON, CMCON, CM1CON0, CM2CON0 resistors if they exist in your uC. Both SWx and LEDx pins should be digital I/O. SWx pins should be Input and LEDx pins should be output type.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top