查看: 3486|回复: 10
|
Keil C51 自己规定程序编译的地址。
[复制链接]
|
|
一般上使用 C - 语言编译程序,它会自动规划程序起始执行的地址。对于Atmel 89C52 单晶片程序的起始地址是从 0x0000 开始。现在我要手动安排程序的起始地址从 0x0200 开始,该如何设置?我是用 Keil C51 编译 Atmel 89C52 单晶片。
我对于 Keil C51 基本操作,有一定的认识应该没问题,只是不知道要如何手动更改或设置它的地址。
我要达到的结果是---- 现在我有两个程序,一个要存放在地址 0x0000 ~ 0x01FF, 另一个是存放在 0x0200 ~ 0x1FFF 的位置。 |
|
|
|
|
|
|
|
发表于 17-10-2008 10:27 AM
|
显示全部楼层
放asm code在c 里行得通吗? |
|
|
|
|
|
|
|
发表于 17-10-2008 02:22 PM
|
显示全部楼层
回复 1# rothmans 的帖子
如果是CCS C 的话啦。。。(可惜不是 )
就用 #org 指令
要做Bootloader? |
|
|
|
|
|
|
|
楼主 |
发表于 17-10-2008 05:02 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 18-10-2008 10:15 AM
|
显示全部楼层
原帖由 rothmans 于 17-10-2008 09:55 AM 发表
一般上使用 C - 语言编译程序,它会自动规划程序起始执行的地址。对于Atmel 89C52 单晶片程序的起始地址是从 0x0000 开始。现在我要手动安排程序的起始地址从 0x0200 开始,该如何设置?我是用 Keil C51 编译 Atmel ...
AT89C52 support self write吗???
8051是vectored interrupt.也就是说0x0000过后的几个address是interrupt vector. 第一个程式用0x0000-0x0200.这样第二个程式就不能有interrupt否者的话就会vector来第一个程式的address。所以通常keil一开始会org0000h 然后jump bypass interrupt vector,再开始你的main
又去找找看有类似的东西吗。 有的话我会放上来。
没错的话c52好像是discontinued product,你可以用89s52, support SPI In System Programming.
http://www.keil.com/support/docs/189.htm 不懂可以帮到你吗?
[ 本帖最后由 fritlizt 于 18-10-2008 10:38 AM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 18-10-2008 11:34 AM
|
显示全部楼层
原帖由 fritlizt 于 18-10-2008 10:15 AM 发表
AT89C52 support self write吗???
8051是vectored interrupt.也就是说0x0000过后的几个address是interrupt vector. 第一个程式用0x0000-0x0200.这样第二个程式就不能有interrupt否者的话就会vector来第一个程 ...
我知道 Atmel 89C52 不能做 flash loader 的功能,我只是给个比喻而已。我主要表达的是使用 Keil C51 与 MCS-51 的晶片。其实我的目的是要知道如何手动安排程序的起始地址。。。我也知道 MCS-51 的 interrupt vector。。这个没有关系。我只要知道该如何手动安排程序的起始地址,其他的我知道怎么弄。我使用的是 C8051F344 (Silicon Lab) 的 MCU. |
|
|
|
|
|
|
|
发表于 18-10-2008 02:15 PM
|
显示全部楼层
不好意思,到现在我还是对 bootloader 这个东西没有什么概念。。
请问大大,bootloader 是什么东西来的? |
|
|
|
|
|
|
|
楼主 |
发表于 18-10-2008 03:22 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 20-10-2008 10:20 AM
|
显示全部楼层
原帖由 rothmans 于 18-10-2008 11:34 AM 发表
我知道 Atmel 89C52 不能做 flash loader 的功能,我只是给个比喻而已。我主要表达的是使用 Keil C51 与 MCS-51 的晶片。其实我的目的是要知道如何手动安排程序的起始地址。。。我也知道 MCS-51 的 interrupt ve ...
rothmans大大,你的c8051F built in多少的flash memory?我用的c8051f120有128kB的flash,有四个bank的memory,在keil里面可以select特定的.c file store在特定的bank里,不懂这可以帮到你吗?
[ 本帖最后由 retnuoc 于 20-10-2008 10:28 AM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 20-10-2008 02:03 PM
|
显示全部楼层
原帖由 retnuoc 于 20-10-2008 10:20 AM 发表
rothmans大大,你的c8051F built in多少的flash memory?我用的c8051f120有128kB的flash,有四个bank的memory,在keil里面可以select特定的.c file store在特定的bank里,不懂这可以帮到你吗?
我用的是 C8051F344 (Silicon Lab) 的 MCU,flash memory 容量有64 kbyte. 你在 keil 里是怎样选择的呢? |
|
|
|
|
|
|
|
发表于 20-10-2008 04:37 PM
|
显示全部楼层
|
|
|
|
|
|
| |
本周最热论坛帖子
|