I am using Keil 2 to run a program (a servo driven robotic arm) for the 87C552, I downloaded an example for the PWM usage from Keil.com, in C which works grand, but the compiler does not recognise any PWM refernces in assemblly. Why is this ? Is there any way around it?
If I add an include into the code (reg51.h) more errors are generated on top of the others, here are the new ones:
Build target 'Target 1' assembling test.a... C:\KEIL\C51\INC\REG51.H(10): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(11): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(12): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(13): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(14): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(15): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(16): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(17): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(18): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(19): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(20): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(21): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(22): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(23): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(24): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(25): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(26): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(27): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(28): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(29): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(30): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(35): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(36): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(37): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(38): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(39): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(40): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(41): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(44): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(45): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(46): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(47): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(48): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(49): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(50): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(51): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(54): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(55): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(56): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(57): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(58): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(59): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(62): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(63): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(64): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(65): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(66): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(69): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(70): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(71): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(72): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(73): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(74): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(75): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(76): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(79): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(80): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(81): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(82): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(83): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(84): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(85): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL C:\KEIL\C51\INC\REG51.H(86): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL
If I include reg552.h instead, I get only the second set of errors
C:\KEIL\C51\INC\REG552.H(10): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL
test.a(367): error A45: UNDEFINED SYMBOL (PASS-2)
All signns point to you having fraternal twins in your .a51 code both the 'default' SFRdef and, when added the 552 SFRdef. I do not know about using the 'canned' versions, but I need to insert $NOMOD51 Before including my SFR definition file in .a51 modules. Try it Erik
"I need to insert $NOMOD51 Before including my SFR definition file in .a51 modules." The A51 Assembler has the standard 8051 registers & SFRs built-in. Therefore, you don't need an include file if all you use is those "standard" symbols. Obviously, if you then include a file which also defines those "built-in" symbols, you will get an error like "ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL!" The $NOMOD51 directive removes the built-in definitions: http://www.keil.com/support/man/docs/a51/a51_nomod51.htm Note that C51 does not predefine any SFRs.
Wow thanks guys I am using
$NOMOD51 $INCLUDE (REG552.H)
yeeha :D Big one to ya guys
know to see if I can remember how its supposed to run, I wrote some of it about 5 months ago! No problem, you commented it beautifully - right? Erik
Ummm, But of course.... :)