[SOLVED] Simplifying C script for controlling 64 LEDs

Status
Not open for further replies.

anschau

Newbie level 4
Joined
Jun 14, 2011
Messages
7
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,333
Hello, i am currently trying to make a led matrix. I am running all the leds off of 8 74HC595 shift registers linked together. my problem is that i have 64 leds to control and to set each led high or low i have to do something like this.

PORTA = 0b00000001;
PORTA = 0b00000010;
PORTA = 0b00000100;

that is to set one led to high, and doing that 64 times for one image takes a lot of time. I know there is a simpler way to this. I tried using a function like this.

PIN_HIGH {
PORTA = 0b00000001;
PORTA = 0b00000010;
PORTA = 0b00000100;
}

but it did not work. I am not sure what i am doing wrong here. Any help would be much appreciated.
 

Re: simplifying C Script

You can do
Code:
for(i=0;i<=7;i++) PORTA = 0b00000001 << i;
 

Re: simplifying C Script

Thank you for your suggestion, but is it possible to use a function to do it? because i was looking for something simple. say i have function A and function B. i was hoping i could just do something like ABBBABBBAAAAABBBBABBB etc. to simplify making an entire animation on the matrix.
 

Re: simplifying C Script

I don't understand what are you going to do. Maybe you should share schematic. This is example 48X8 dot matrix.
 

Re: simplifying C Script

... and C source code.. (moste important part of it)
 

Re: simplifying C Script

Thank you for your suggestion, but is it possible to use a function to do it?
Sure, your function should look like this:

Code:
void PIN_HIGH() {
PORTA = 0b00000001;
PORTA = 0b00000010;
PORTA = 0b00000100;
}
 

Re: simplifying C Script

Okay thank you. That is what i wanted to know, i guess i just left a few things out. thank you for all your help everyone!
 

Re: simplifying C Script

If you are not sending or receiving anything I don't see the reason to use a function
You can simply define a macro

Code:
#define PIN_HIGH PORTA = 0b00000001; PORTA = 0b00000010; PORTA = 0b00000100;

whenever you write PIN_HIGH it will be the same as writing PORTA = 0b00000001; PORTA = 0b00000010; PORTA = 0b00000100;

Alex
 

Re: simplifying C Script

Wow thank you that worked, and it was so much easier than trying to call a function later in the program.
 

Re: simplifying C Script

I don't see how using "PIN_HIGH" is "so much easier" than "PIN_HIGH()"..
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…