Hello everyone,
I am using Keil uVision2 to write my assembler code. I am always getting the same error. I searhed on Google and everbody says the solution is in the Keil manual but I could not find anything. To make it clear, I would want to say what I did so far.
1. Created a project, 2. Selected Atmel T89C51CC01, 3. Clicked new button and wrote my assembler code, 4. I added .asm code in the project. 5. Compile it and get the warnings.
Here is .plg file:
Build target 'Target 1' assembling STARTUP.A51... assembling defa.asm... linking...
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: ?C_START MODULE: STARTUP.obj (?C_STARTUP) *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: ?C_START MODULE: STARTUP.obj (?C_STARTUP) ADDRESS: 000DH Program Size: data=9.0 xdata=0 code=4131 creating hex file from "my"... "my" - 0 Error(s), 2 Warning(s).
Yes I want to write .asm codes but it doesn't matter whether in C or not
ok, now I lost you.
just write in assembler - do not complicate the issue with 'C' !!
I think you probably need to start with a tutorial on the basics of the 8051:
www.8052.com/.../tutorial
See also: http://www.keil.com/books/8051books.asp
And, of course, the so-called "bible" for the 8051:
Chapter 1 - 80C51 Family Architecture: www.nxp.com/.../80C51_FAM_ARCH_1.pdf
Chapter 2 - 80C51 Family Programmer's Guide and Instruction Set: www.nxp.com/.../80C51_FAM_PROG_GUIDE_1.pdf
Chapter 3 - 80C51 Family Hardware Description: www.nxp.com/.../80C51_FAM_HARDWARE_1.pdf
.
mov 18h, #01001010b mov 20h, #00100100b mov 28h, #01010010b mov 30h, #01111111b mov 38h, #00110110b
Using the above references, what do you think should be the result of writing to those particular memory locations.
As they say in exam papers, "explain your working"...
In this example, I tried to send my .hex file to the microcontroller. In order to correct it, I read data from microcontroller and normally I was supposed to see longer sentences because mov 18h, #01001010b would be converted 20 18 4A. Here, 20 is mov, 18 is 18 and 4A is #01001010b. There were 4 lines in my code but when I read from microcontroller I saw just 02 00 10. I supposed something like that,
20 18 4A 20 20 24 20 28 52 20 30 7F 20 38 36 ...
Just throw that example away - it's not worth keeping!
Start again, from scratch, with a pure assembler project.
BTW: if you're using the free evaluation version, be sure to study the Limitations carefully:
http://www.keil.com/demo/limits.asp