Hi.
I am a new to C. I have an application where i get different inputs on a PIC16F724 which i then use to light up some leds and set outputs.
The problem is that when i have a high on a input for a short period of time i wan't my output to stay on until i press a button that resets all the led's.
I need a set reset function for all my inputs. I just can't ind a way to do it
If you think the code is messy and not optimised, i just say it again, I AM NEW TO C
The comments in the code are in danish, so just ignore them.
The PIC drives two 74hc4515 decoder/demultiplexers which drives 30 led's. It should have been shift registers instead I guess, but now it's demultiplexers...
Code:
#include <htc.h>
#define _XTAL_FREQ 16000000
int led1;
int led2;
int led3;
int led4;
int led5;
main(void){
/*Opsætning af inputs og outputs på de forskellige pins*/
TRISC = 0xFF; /*Hele portC er input, I1-8*/
TRISD = 0xFF; /*Hele portD er input, I9-16*/
TRISE = 0x01; /*RE0 på portE er input I17 og de to sidste pin's er output's*/
TRISA = 0; /*Hele portA er outputs, bruges internt til dioderne*/
/*Sæt output 1 til relæ hvis en af input 1-8 er aktive*/
if (PORTC >0){RE1=1;}
else RE1=0;
/*Lampetest*/
if(RC7>0){lampetest();}
/*Læsning af inputs*/
if(RC0>0){led1=1;}
if(RC1>0){led2=1;}
if(RC2>0){led3=1;}
if(RC3>0){led4=1;}
if(RC4>0){led5=1;}
if(RC6>0){led1=0; led2=0; led3=0; led4=0; led5=0;}
/*Sæt dioder*/
if(led1>0){PORTA = 0x40;}
PORTA = 0xD0;
if(led2>0){PORTA = 0x41;}
PORTA = 0xD0;
if(led3>0){PORTA = 0x42;}
PORTA = 0xD0;
if(led4>0){PORTA = 0x43;}
PORTA = 0xD0;
if(led5>0){PORTA = 0x44;}
PORTA = 0xD0;
}
lampetest(void){
PORTA = 0xD0;
PORTA = 0x40;
PORTA = 0x41;
PORTA = 0x42;
PORTA = 0x43;
PORTA = 0x44;
PORTA = 0x45;
PORTA = 0x46;
PORTA = 0x47;
PORTA = 0x48;
PORTA = 0x49;
PORTA = 0x4A;
PORTA = 0x4B;
PORTA = 0x4C;
PORTA = 0x4D;
PORTA = 0x4E;
}
Help