For serial communication programming, can I simply use getchar() as in CSample or do I have to use interrupt-driven one as in INTSIO? What is the difference between these 2 sample projects? In CSample, the serial port interrupt is even not enabled(?), so I wonder if it can really capture input stream from serial port, or it justs simulate keyboard input as serial port. If I use interrupt, can I bypass getchar(), and check the serial buffer directly? Can anybody please tell me what is the function of getchar() in serial port programming and how to correctly use it? I am a beginner of C51 development, any comments will be greatly appreciated. Thanks.
I don't use the '51 so I'm not sure but the source code for getchar() is probably included with your Keil tools. Look in the Keil subdirectories for 'GETCHAR.A51 or GETCHAR.c51?. You can look the code over and see if you can find your answers. Best luck
Just re-write _getkey() for your UART and getchar() will call it. See my free UART driver at http://www.embeddedfw.com for another example of an 8051 UART driver. - Mark
"What is the difference between these 2 sample projects?" The difference is that one is interrupt-driven, and one is not. Is your problem purely with the application to serial comms, or do you not understand the difference in between the two approaches in general?
My problem is about Serial Communication programming, which method should I choose if I am going to develop a system whose primary function is serial communcation with a host? The CSample looks simpler, but I wonder if it really works inside the embeded system without a keyboard. (Sorry, I don't have my hardware design ready yet). _getchar() halts the system and wait for user input, what happens in the embeded system with this function call? Or to ask in another way, to wait for an input from serial port, which funciton should I call? The INTSIO looks much more complex. But I don't like complexity. Any suggestions for a starter C51 programmer? Thanks.
Try looking at these threads: http://www.8052.com/forum/read.phtml?id=19395&top= http://www.8052.com/forum/read.phtml?id=16536&top= http://www.8052.com/forum/read.phtml?id=15941&top=