佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 3486|回复: 10

Keil C51 自己规定程序编译的地址。

[复制链接]
发表于 17-10-2008 09:55 AM | 显示全部楼层 |阅读模式
一般上使用 C - 语言编译程序,它会自动规划程序起始执行的地址。对于Atmel 89C52 单晶片程序的起始地址是从 0x0000 开始。现在我要手动安排程序的起始地址从 0x0200 开始,该如何设置?我是用 Keil C51 编译 Atmel 89C52 单晶片。

我对于 Keil C51 基本操作,有一定的认识应该没问题,只是不知道要如何手动更改或设置它的地址。

我要达到的结果是---- 现在我有两个程序,一个要存放在地址 0x0000 ~ 0x01FF, 另一个是存放在 0x0200 ~ 0x1FFF 的位置。
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
原帖由 pic 于 17-10-2008 02:22 PM 发表
如果是CCS C 的话啦。。。(可惜不是
就用 #org 指令

要做Bootloader?



是啊!要做 Bootloader。
回复

使用道具 举报

发表于 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.
回复

使用道具 举报

Follow Us
发表于 18-10-2008 02:15 PM | 显示全部楼层
不好意思,到现在我还是对 bootloader 这个东西没有什么概念。。
请问大大,bootloader 是什么东西来的?
回复

使用道具 举报

 楼主| 发表于 18-10-2008 03:22 PM | 显示全部楼层
原帖由 半夜鬼 于 18-10-2008 02:15 PM 发表
不好意思,到现在我还是对 bootloader 这个东西没有什么概念。。
请问大大,bootloader 是什么东西来的?


这个帖对你也许有些帮助。

http://cforum4.cari.com.my/viewthread.php?tid=1097954&extra=page%3D4
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
原帖由 rothmans 于 20-10-2008 02:03 PM 发表


我用的是 C8051F344 (Silicon Lab) 的 MCU,flash memory 容量有64 kbyte. 你在 keil 里是怎样选择的呢?


上次因为要用到flash做non volatile storage,所以有看到点关于这个的资料,怎样做就真的不知道了,不好意思。。
这些资料不懂帮到你吗
http://www.keil.com/forum/docs/thread2276.asp
http://www.keil.com/support/docs/2845.htm
http://www.powerdesignindia.co.in/STATIC/PDF/200306/2003JUN24_EDA_AN.PDF?SOURCES=DOWNLOAD

[ 本帖最后由 retnuoc 于 20-10-2008 04:45 PM 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 5-2-2025 02:55 AM , Processed in 0.148486 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表