Hai,
For an application I require an unsigned char array of size 450. I am almost(not at all) familiar with AT89C51. Since 89C51 has only 128 bytes of onchip RAM I selected AT89C51RC which has 512 bytes of onchip RAM.I am using Keil C compiler. When I compiled by defining 'unsigned char arr[450]' in my application, it resulted in an output message 'error c249: DATA: SEGMENT TOO LARGE' and could not create th target. In the 'options for Target 'Target1'' menu 'Memory Model: small: all variables in DATA' was selected.
Also when I selected AT89C51RC in the 'options for Target 'Target1'' menu, the short description regarding the currently selected Target Device was found mismatching with the original AT89C51RC datasheet information(for example: 1K XRAM). But when I just selected AT87F51RC the short description was found matching with the original datasheet information of AT89C51RC. Why so?. Are AT89C51RC and AT87F51RC having the same memory model?. What is the physical and logical difference between onchip RAM and XRAM?. How XRAM accessed using Keil?.
How can I use the entire 512 bytes of onchip RAM of AT89C51RC?Do I need to set/clear 'EXTRAM' bit in the SFR 'AUXR' manually(in the program) to access the remaining 256 bytes? Or will the compiler do this automatically? No external RAM is used in this application. Kindly help me to access complete 512 bytes onchip RAM of AT89C51RC using Keil C compiler with minimum complexity.
For an application I require an unsigned char array of size 450. I am almost(not at all) familiar with AT89C51. Since 89C51 has only 128 bytes of onchip RAM I selected AT89C51RC which has 512 bytes of onchip RAM.I am using Keil C compiler. When I compiled by defining 'unsigned char arr[450]' in my application, it resulted in an output message 'error c249: DATA: SEGMENT TOO LARGE' and could not create th target. In the 'options for Target 'Target1'' menu 'Memory Model: small: all variables in DATA' was selected.
Also when I selected AT89C51RC in the 'options for Target 'Target1'' menu, the short description regarding the currently selected Target Device was found mismatching with the original AT89C51RC datasheet information(for example: 1K XRAM). But when I just selected AT87F51RC the short description was found matching with the original datasheet information of AT89C51RC. Why so?. Are AT89C51RC and AT87F51RC having the same memory model?. What is the physical and logical difference between onchip RAM and XRAM?. How XRAM accessed using Keil?.
How can I use the entire 512 bytes of onchip RAM of AT89C51RC?Do I need to set/clear 'EXTRAM' bit in the SFR 'AUXR' manually(in the program) to access the remaining 256 bytes? Or will the compiler do this automatically? No external RAM is used in this application. Kindly help me to access complete 512 bytes onchip RAM of AT89C51RC using Keil C compiler with minimum complexity.