I've got the same kit and was playing around with it for some time, so I knew that port 2 was used by the LCD-module (except P2{7]).Sorry that it took so long for me to realize (and to ask you) that you are using a kit. 1 hour ago I set it up and programmed your project (changed ports!) into, and it worked.

The specs for the IMO (Internal Main Oscillator) say 24MHz and +- 50% or so. As such it may be that it runs too fast.

Now you could carefully re-insert the LCD-module again and check that there is NO internal or external connection to any pin of port2.In Designer drop a LCD-Component onto your chip (you will not see it) configure it for Port2 and add some lines into your main.c:

There was an investigation of correlation between Number of keystrokes to solve a given programming problem for different languages.Assembly gained the first place (maximum Keystrokes)followed by COBOL (not astonishingly for any COBOL programmer: "Divide divisor into divident giving quotient remainder MyModulo" is normal/legal COBOL)

You SHOULD know assembly (rather: a few assemblies, they are all different), you SHOULD know about addressing modes and you SHOULD know about memory models.You MUST know what registers are (for), you MUST know what an interrupt is and you MUST know what flags are, how to set, clear and question for them.You ought to know a "Problem-oriented programming language", preferrably C.

To my students I say at the beginning of the programming-lessons:PASCAL assumes you to be a dumb, silly programmer and if you are not telling precisely what you want, you'll get a compile-time-error.C assumes you are a geneous programmer and you know exactly what kind of rubbish you just wrote down, and you'll get a system-crash.ASSEMBLY does what you wrote and you'll get... nothing

I know ASSEMBLIes, C, PASCAL, FORTRAN, ALGOL, COBOL, PL1, PL-M,... and yes, I know BASIC. (BASIC starts with "Bah!" and ends on "sick!").Danadac, there are free(!!) PASCAL compilers (Lazarus) which are on the PC-side pretty good to work with, there is no need to use any basics visual or unvisual.

Whether assembler is better than compiler also depends a lot on the CPU you are targeting.

The M8C (the CPU core used in the PSoC1 devices) is extremely limited, has very few CPU general purpose registers, has limited code space, has limited register size, has separate instructions for accessing RAM or ROM, has an unusual paging structure for RAM, etc. All of these things make it unfriendly to compilers, and compilers will generally generate inefficient code for the processor. I would personally never use a C compiler for my PSoC1 projects, but a lot of people do.

A modern processor like anything in the ARM family has a lot of general purpose registers, has a single memory space for everything, the registers are wide, and in general the processor architecture is very compiler friendly. With a good optimizing compiler, you would often be hard pressed to hand code more efficient assembler code than the compiler can generate, and you are generally much better off leaving that to the compiler.

In either case, your algorithm and general code structure will be far more important than whether you are writing in assembler or C or some other higher level language.

@SlandrumI wrote a Task-context-swith that enables different independent tasks to run simultaneously (up to ~20) on a PSoC1(29466 ) using about 8k Prom.I would never have the slightest idea to write that in assembly. Did you ever get near the limits of Ram or Rom in one of your projects?The major factor of a project is "Costs" and thus of course the time for software - design, coding, testing and integration. Re-usable code in high-level languages reduces the afford of the first three items, design coding and testing. As long as I am not forced to use ASM I would stick to C. And -last, not least- every programmer knows C, but only a few know M8C-Asm.Although I'm not really happy with the C-implementation in PSoC3 I would never write a Project in 8051-Asm (Although I know it) but use C.

I wasn't running out of memory on the 29xxx parts when I used them, but always was running out on the 27xxx or even worse on the 24xxx parts.

4K flash ROM with 256 bytes of RAM is not much to work with, and implementing a task handler would not be appropriate on those parts. Also, the PSoC1 is slow enough that I barely had time for my interrupt handlers, and certainly could not afford any overhead for task switching. Task handling would have been completely inappropriate for the projects I was working on, even for the projects that used the 29xxx parts.

My projects almost always push the capabilities of the system beyond the expected limits. This was not going to be possible if I was writing my code in C.