• Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

software stack on 16f57

Not open for further replies.


I have now successfully programmed such a software stack.
8 levels are possible. each call requires 62 cycles.

A while ago i had difficulties on 8-level PIC, particulary when using I2C EEPROM, but did not have the knowledge to implement software stack.

so the 16f57 5x5 LED matrix was the first prototype to try this technique.

I consider the baseline PICs very suitable to make experiment: particulary nothing must be initialized, and they do not cost so much.

I have many other PICs, including 18f13k50, 16f884, 18f45k20, 16f716.

this project is shown a little on my new web page:
PIC projects - microcontroller - 2009 - BBS on yuku.com

the plan is to program a dox matrix scrolling clock!

yesterday i connected a 32.768 KHz quartz clock generator, built from 2n3904 transistors. I've searched nearly two years for a suitable circuit!

Anyone here who has ever used software stacks, in RISC assembly, not via embedded OS?
I have a little 8086 background so the implementation was not that unusual.
however I was surprized it takes 62 cycles each time, due to neccessary shifting, and to control banking/paging bits.

the LED dot matrix clock was designed with as little components as possible, for instance, no multiplex transistors/base resistors, all done using just one LCX244 buffer IC.

there are more projects to be added in the next few months.

also i was thinking to access I2C EEPROM on the 16f57, now since there are 8 stack levels, this should be possible (however it could be a little lengthy, and slow).

anyone ever used I2C devices on 16f5X?

remember I do not have to use them, it is just for demonstration/exercise.
but i think the dot matrix clock is a real-world application, not just an absurd showcase prototype.

most of my questions are about design, or analog electronics, not so much technical programming, tough i also try to advance in programming.
since I have it already executing, it is not a "how-to" question.

Mike - K8LH

Well-Known Member
Schematic is where on that site?


Thanks for PM and for adding schematic to site. Do you feel there is some advantage using the '244 IC as a row driver?

Regards, Mike
Last edited:


There is no schematic, however, it will be added soon, please wait.

I have written scrolling code for 12f509:
and experienced it considerably uncomfortable, due to stack level limitation.

the software stack will be used to gain one or two levels!

if you have explanation of scrolling methods, please write about it.
I am not limited to the 16f57, as outlined in the 1st post.

I also wrote a dot matrix scroller for 16f690, based on a non-proportional font:
YouTube - microcontroller LED matrix scroller - generic RISC code
actually I am afraid to implement the final "wires", means to send the font data to the matrix.
in the simulator, the text scroll works fine, but who can know it?

If there is some good feedback, I may consider to complete this code.


initially i've drawn the resistors on the sink side, not on the drive side.

using the LCX244 can have advantages:
-2.4 volts operation since it is CMOS
-faster assembly compared to transistors
-price can be considerably low if you buy a reel of SMD ICs, or a part of a reel (for instance 200 ICs).
-bit lines can be bundled
-about 1/2 of PCB space compared to transistors (there are also special SMD transistors which include base resistors already).

I am for instance using 1x LCX244 to drive a complete 4-digit 7-segment display, for this purpose, it is required to use two bitlines for each digit.

I have used transistors previously, particulary the 2n3906/2n3904.
Last edited:
Not open for further replies.

Latest threads

EE World Online Articles