This is an video through which you all understand my problem in my code PIC 16f877A in while loop 2
Your post is confusing. If you are saying that I thought the TS's code 'looked good', that is not true. My last post was to advise the TS to look at where his 'break' was, study up on what 'break' actually did and to flow out his code and post a flow chart so that we could tell what he in fact wanted his program to do. Besides 'it doesn't work' he did not provide any useful information. But if you can help, bring it.if you change if statement to while and use logical comparison like
JohnInTX said your program look good and many merits too. i will send a demo.
sorry for the trouble. iasked him to avoid if statement and use while loop.Your post is confusing. If you are saying that I thought the TS's code 'looked good', that is not true. My last post was to advise the TS to look at where his 'break' was, study up on what 'break' actually did and to flow out his code and post a flow chart so that we could tell what he in fact wanted his program to do. Besides 'it doesn't work' he did not provide any useful information. But if you can help, bring it.
void main()
{
TRISD.F0 = 1; //Configure 1st bit of PORTD as input
TRISD.F1 = 1; //Configure 1st bit of PORTD as input
TRISD.F2 = 1; //Configure 1st bit of PORTD as input
TRISD.F3 = 1; //Configure 1st bit of PORTD as input
TRISB.F0 = 0; //Makes PORTB0 or RB0 Output Pin
TRISB.F1 = 0; //Makes PORTB1 or RB0 Output Pin
TRISB.F2 = 0; //Makes PORTB0 or RB0 Output Pin
TRISB.F3 = 0; //Makes PORTB1 or RB0 Output Pin
TRISB.F4 = 0; //Makes PORTB0 or RB0 Output Pin
TRISB.F5 = 0; //Makes PORTB1 or RB0 Output Pin
TRISB.F6 = 0; //Makes PORTB0 or RB0 Output Pin
TRISB.F7 = 0; //Makes PORTB1 or RB0 Output Pin
while(1) //Infinite Loop
{
if(PORTD.F1 == 0) //If the switch is pressed
{
PORTB.F0 = 1; //LED ON
PORTB.F1 = 0; //LED OFF
PORTB.F2 = 0; //LED OFF
PORTB.F3 = 1; //LED OFF
PORTB.F4 = 1; //LED ON
PORTB.F5 = 0; //LED OFF
PORTB.F6 = 0; //LED OFF
PORTB.F7 = 1; //LED ON
Delay_ms(2000); //1 Second Delay
PORTB.F0 = 0; //LED OFF
PORTB.F3 = 0; //LED OFF
PORTB.F4 = 0; //LED OFF
PORTB.F5 = 0; //LED OFF
PORTB.F6 = 0; //LED OFF
PORTB.F7 = 0; //LED OFF
}
if(PORTD.F0 == 0) //If the switch is pressed
{
PORTB.F1 = 1; //LED ON
PORTB.F0 = 0; //LED OFF
PORTB.F2 = 1; //LED ON
PORTB.F3 = 0; //LED OFF
PORTB.F4 = 0; //LED OFF
PORTB.F5 = 1; //LED ON
PORTB.F6 = 1; //LED ON
PORTB.F7 = 0; //LED OFF
Delay_ms(2000); //1 Second Delay
PORTB.F1 = 0; //LED OFF
PORTB.F2 = 0; //LED OFF
PORTB.F3 = 0; //LED OFF
PORTB.F4 = 0; //LED OFF
PORTB.F5 = 0; //LED OFF
PORTB.F6 = 0; //LED OFF
PORTB.F7 = 0; //LED OFF
}
if(PORTD.F3 == 0) //If the switch is pressed
{
PORTB.F0 = 0; //LED OFF
PORTB.F1 = 0; //LED OFF
PORTB.F2 = 0; //LED OFF
PORTB.F3 = 0; //LED OFF
PORTB.F4 = 0; //LED OFF
PORTB.F5 = 0; //LED OFF
PORTB.F6 = 0; //LED OFF
PORTB.F7 = 0; //LED OFF
Delay_ms(5000); //1 Second Delay
}
if(PORTD.F2 == 0) //If the switch is pressed
{
while(PORTD.F2 == 0);
while(PORTD.F3 == 1&&PORTD.F2 == 1&&PORTD.F0 == 1&&PORTD.F1 == 1) //Infinite Loop
{
PORTB.F0 = 0; //LED OFF
PORTB.F1 = 1; //LED ON
PORTB.F2 = 0; //LED OFF
PORTB.F3 = 0; //LED OFF
PORTB.F4 = 0; //LED OFF
PORTB.F5 = 0; //LED OFF
PORTB.F6 = 0; //LED OFF
PORTB.F7 = 0; //LED ON
Delay_ms(500); //1 Second Delay
PORTB.F3 = 1; //LED ON
PORTB.F0 = 0; //LED OFF
PORTB.F1 = 1; //LED ON
PORTB.F2 = 0; //LED OFF
PORTB.F4 = 0; //LED OFF
PORTB.F5 = 0; //LED OFF
PORTB.F6 = 0; //LED OFF
PORTB.F7 = 0; //LED OFF
Delay_ms(1000); //1 Second Delay
PORTB.F0 = 1; //LED ON
PORTB.F1 = 0; //LED OFF
PORTB.F2 = 1; //LED ON
PORTB.F3 = 0; //LED OFF
PORTB.F4 = 0; //LED OFF
PORTB.F5 = 0; //LED OFF
PORTB.F6 = 0; //LED OFF
PORTB.F7 = 0; //LED OFF
Delay_ms(100); //1 Second Delay Both legs are off
PORTB.F0 = 0; //LED OFF
PORTB.F1 = 0; //LED OFF
PORTB.F2 = 0; //LED OFF
PORTB.F3 = 0; //LED OFF
PORTB.F4 = 0; //LED OFF
PORTB.F5 = 0; //LED OFF
PORTB.F6 = 0; //LED OFF
PORTB.F7 = 0; //LED OFf
Delay_ms(500); //1 Second Delay second leg Left leg
PORTB.F0 = 0; //LED OFF
PORTB.F1 = 0; //LED OFF
PORTB.F2 = 0; //LED OFF
PORTB.F3 = 0; //LED OFF
PORTB.F4 = 0; //LED OFF
PORTB.F5 = 1; //LED ON
PORTB.F6 = 0; //LED OFF
PORTB.F7 = 0; //LED OFF
Delay_ms(500); //1 Second Delay
PORTB.F0 = 0; //LED OFF
PORTB.F1 = 0; //LED OFF
PORTB.F2 = 0; //LED OFF
PORTB.F3 = 0; //LED OFF
PORTB.F4 = 0; //LED OFF
PORTB.F5 = 1; //LED ON
PORTB.F6 = 0; //LED OFF
PORTB.F7 = 1; //LED ON
Delay_ms(1000); //1 Second Delay
PORTB.F0 = 0; //LED OFF
PORTB.F1 = 0; //LED OFF
PORTB.F2 = 0; //LED OFF
PORTB.F3 = 0; //LED OFF
PORTB.F4 = 1; //LED ON
PORTB.F5 = 0; //LED OFF
PORTB.F6 = 1; //LED ON
PORTB.F7 = 0; //LED OFF
Delay_ms(100); //1 Second Delay Both legs are off
PORTB.F0 = 0; //LED OFF
PORTB.F1 = 0; //LED OFF
PORTB.F2 = 0; //LED OFF
PORTB.F3 = 0; //LED OFF
PORTB.F4 = 0; //LED OFF
PORTB.F5 = 0; //LED OFF
PORTB.F6 = 0; //LED OFF
PORTB.F7 = 0; //LED OFf
Delay_ms(1000); //1 Second Delay
}
}
}
}
This works same as my programCode:void main() { TRISD.F0 = 1; //Configure 1st bit of PORTD as input TRISD.F1 = 1; //Configure 1st bit of PORTD as input TRISD.F2 = 1; //Configure 1st bit of PORTD as input TRISD.F3 = 1; //Configure 1st bit of PORTD as input TRISB.F0 = 0; //Makes PORTB0 or RB0 Output Pin TRISB.F1 = 0; //Makes PORTB1 or RB0 Output Pin TRISB.F2 = 0; //Makes PORTB0 or RB0 Output Pin TRISB.F3 = 0; //Makes PORTB1 or RB0 Output Pin TRISB.F4 = 0; //Makes PORTB0 or RB0 Output Pin TRISB.F5 = 0; //Makes PORTB1 or RB0 Output Pin TRISB.F6 = 0; //Makes PORTB0 or RB0 Output Pin TRISB.F7 = 0; //Makes PORTB1 or RB0 Output Pin while(1) //Infinite Loop { if(PORTD.F1 == 0) //If the switch is pressed { PORTB.F0 = 1; //LED ON PORTB.F1 = 0; //LED OFF PORTB.F2 = 0; //LED OFF PORTB.F3 = 1; //LED OFF PORTB.F4 = 1; //LED ON PORTB.F5 = 0; //LED OFF PORTB.F6 = 0; //LED OFF PORTB.F7 = 1; //LED ON Delay_ms(2000); //1 Second Delay PORTB.F0 = 0; //LED OFF PORTB.F3 = 0; //LED OFF PORTB.F4 = 0; //LED OFF PORTB.F5 = 0; //LED OFF PORTB.F6 = 0; //LED OFF PORTB.F7 = 0; //LED OFF } if(PORTD.F0 == 0) //If the switch is pressed { PORTB.F1 = 1; //LED ON PORTB.F0 = 0; //LED OFF PORTB.F2 = 1; //LED ON PORTB.F3 = 0; //LED OFF PORTB.F4 = 0; //LED OFF PORTB.F5 = 1; //LED ON PORTB.F6 = 1; //LED ON PORTB.F7 = 0; //LED OFF Delay_ms(2000); //1 Second Delay PORTB.F1 = 0; //LED OFF PORTB.F2 = 0; //LED OFF PORTB.F3 = 0; //LED OFF PORTB.F4 = 0; //LED OFF PORTB.F5 = 0; //LED OFF PORTB.F6 = 0; //LED OFF PORTB.F7 = 0; //LED OFF } if(PORTD.F3 == 0) //If the switch is pressed { PORTB.F0 = 0; //LED OFF PORTB.F1 = 0; //LED OFF PORTB.F2 = 0; //LED OFF PORTB.F3 = 0; //LED OFF PORTB.F4 = 0; //LED OFF PORTB.F5 = 0; //LED OFF PORTB.F6 = 0; //LED OFF PORTB.F7 = 0; //LED OFF Delay_ms(5000); //1 Second Delay } if(PORTD.F2 == 0) //If the switch is pressed { while(PORTD.F2 == 0); while(PORTD.F3 == 1&&PORTD.F2 == 1&&PORTD.F0 == 1&&PORTD.F1 == 1) //Infinite Loop { PORTB.F0 = 0; //LED OFF PORTB.F1 = 1; //LED ON PORTB.F2 = 0; //LED OFF PORTB.F3 = 0; //LED OFF PORTB.F4 = 0; //LED OFF PORTB.F5 = 0; //LED OFF PORTB.F6 = 0; //LED OFF PORTB.F7 = 0; //LED ON Delay_ms(500); //1 Second Delay PORTB.F3 = 1; //LED ON PORTB.F0 = 0; //LED OFF PORTB.F1 = 1; //LED ON PORTB.F2 = 0; //LED OFF PORTB.F4 = 0; //LED OFF PORTB.F5 = 0; //LED OFF PORTB.F6 = 0; //LED OFF PORTB.F7 = 0; //LED OFF Delay_ms(1000); //1 Second Delay PORTB.F0 = 1; //LED ON PORTB.F1 = 0; //LED OFF PORTB.F2 = 1; //LED ON PORTB.F3 = 0; //LED OFF PORTB.F4 = 0; //LED OFF PORTB.F5 = 0; //LED OFF PORTB.F6 = 0; //LED OFF PORTB.F7 = 0; //LED OFF Delay_ms(100); //1 Second Delay Both legs are off PORTB.F0 = 0; //LED OFF PORTB.F1 = 0; //LED OFF PORTB.F2 = 0; //LED OFF PORTB.F3 = 0; //LED OFF PORTB.F4 = 0; //LED OFF PORTB.F5 = 0; //LED OFF PORTB.F6 = 0; //LED OFF PORTB.F7 = 0; //LED OFf Delay_ms(500); //1 Second Delay second leg Left leg PORTB.F0 = 0; //LED OFF PORTB.F1 = 0; //LED OFF PORTB.F2 = 0; //LED OFF PORTB.F3 = 0; //LED OFF PORTB.F4 = 0; //LED OFF PORTB.F5 = 1; //LED ON PORTB.F6 = 0; //LED OFF PORTB.F7 = 0; //LED OFF Delay_ms(500); //1 Second Delay PORTB.F0 = 0; //LED OFF PORTB.F1 = 0; //LED OFF PORTB.F2 = 0; //LED OFF PORTB.F3 = 0; //LED OFF PORTB.F4 = 0; //LED OFF PORTB.F5 = 1; //LED ON PORTB.F6 = 0; //LED OFF PORTB.F7 = 1; //LED ON Delay_ms(1000); //1 Second Delay PORTB.F0 = 0; //LED OFF PORTB.F1 = 0; //LED OFF PORTB.F2 = 0; //LED OFF PORTB.F3 = 0; //LED OFF PORTB.F4 = 1; //LED ON PORTB.F5 = 0; //LED OFF PORTB.F6 = 1; //LED ON PORTB.F7 = 0; //LED OFF Delay_ms(100); //1 Second Delay Both legs are off PORTB.F0 = 0; //LED OFF PORTB.F1 = 0; //LED OFF PORTB.F2 = 0; //LED OFF PORTB.F3 = 0; //LED OFF PORTB.F4 = 0; //LED OFF PORTB.F5 = 0; //LED OFF PORTB.F6 = 0; //LED OFF PORTB.F7 = 0; //LED OFf Delay_ms(1000); //1 Second Delay } } } }
I think your idea of flow chart is quite different from everyone else's.This is the flow diagram of my source code
if (switch1 is pressed) { do something}
if ((switch 2 is pressed) and (switch 1 is not pressed)) {do something}
while (switch 3 is pressed) {do something repeatedly}
do {something repeatedly} while (switch 4 is pressed}
YesI think your idea of flow chart is quite different from everyone else's.
Since your code is working, I would suggest that you stay to it as much as you can, and think in terms of "logic":
Or whatever you want to do.Code:if (switch1 is pressed) { do something} if ((switch 2 is pressed) and (switch 1 is not pressed)) {do something} while (switch 3 is pressed) {do something repeatedly} do {something repeatedly} while (switch 4 is pressed}
Thread starter | Similar threads | Forum | Replies | Date |
---|---|---|---|---|
PROGRAMING TRAFFIC LIGHT - PIC 16f877a Using Mplab XC8 | Homework Help | 1 | ||
pic 16f877a code problem,"freq2write"query. | Microcontrollers | 2 | ||
Pic 16f877a | Microcontrollers | 9 | ||
D | spwm using pic 16f877A | Power Electronics | 2 | |
S | water controller using PIC 16F877A | Microcontrollers | 4 |
by Don Wilcher
by Duane Benson
by Jake Hertz
by Jake Hertz