请教新华龙单片机的几个问题 点击:2900 | 回复:11



tigermu

    
  • 精华:6帖
  • 求助:0帖
  • 帖子:175帖 | 5410回
  • 年度积分:0
  • 历史总积分:19807
  • 注册:2003年1月19日
发表于:2005-12-14 08:31:00
楼主
1、新华龙单片机CODE存储器是顺序存储的吗?即比如我我的代码段有2K大,那么从0到2K之间就是代码,不写到2K以后的地方。
2、如果1成立,那么我想对FLASH擦写距离多少地址比较合理或者说可靠,不被程序代码有可能擦除。
如果我阐述的不太清楚,请留言。



tigermu

  • 精华:6帖
  • 求助:0帖
  • 帖子:175帖 | 5410回
  • 年度积分:0
  • 历史总积分:19807
  • 注册:2003年1月19日
发表于:2005-12-15 20:15:00
1楼
请 周公和亦云人云 发表一下意见。
8951是否程序是顺序写入的?

亦云人云

  • 精华:5帖
  • 求助:0帖
  • 帖子:102帖 | 2351回
  • 年度积分:0
  • 历史总积分:3114
  • 注册:2004年11月10日
发表于:2005-12-16 09:34:00
2楼
Flash 单片机怎样写入代码,取决于你自己,但是写入代码后再要改写或擦除就由不得你了,通常只可整片擦除或擦除整个扇区后再次写入,请看:
http://www.xhl.com.cn/xhl/downfile/c8051f0xx.pdf
C8051F000/1/2/5/6/7
C8051F010/1/2/5/6/7 混合信号 32KB ISP FLASH 微控制器
摘自 11.1 FLASH存储器编程
[color=#800000]“可以用软件使用MOVX指令对FLASH存储器编程,象一般的操作数一样为MOVX指令提供待编程的地址和数据字节。在使用MOVX指令对FLASH存储器写入之前,必须将程序存储写允许位PSWE(PSCTL.0)设置为逻辑‘1’,以允许FLASH写操作,在用软件清除PSWE位之前将一直允许写操作。
写FLASH存储器可以清除数据位,但不能使数据位置‘1’。只有擦除操作能将FLASH中的数据位置‘1’。所以在写入新值之前,必须先擦除待编程的地址。32k字节的FLASH存储器是以512字节的扇区为单位组织的。一次擦除操作将擦除整个扇区(将扇区内的所有字节设置为0xFF)。将程序存储擦除允许位PSEE(PSCTL.1)和PSWE(PSCTL.0)设置为逻辑‘1’后,用MOVX命令写一个数据字节到扇区内的任何地址将擦除整个512字节的扇区。”[/color]

tigermu

  • 精华:6帖
  • 求助:0帖
  • 帖子:175帖 | 5410回
  • 年度积分:0
  • 历史总积分:19807
  • 注册:2003年1月19日
发表于:2005-12-16 13:16:00
3楼
Flash 单片机怎样写入代码,取决于你自己,

请问人云亦云老师这句怎么理解?比如我想顺序写入,程序有2K大,我想把程序写在FALSH的2K内,传程序是怎么设置。(调试器和编程器都可)。

亦云人云

  • 精华:5帖
  • 求助:0帖
  • 帖子:102帖 | 2351回
  • 年度积分:0
  • 历史总积分:3114
  • 注册:2004年11月10日
发表于:2005-12-16 13:37:00
4楼
下载线或编程器=>看下载线或编程器说明书
自己写程序=〉看厂家产品的说明书

tigermu

  • 精华:6帖
  • 求助:0帖
  • 帖子:175帖 | 5410回
  • 年度积分:0
  • 历史总积分:19807
  • 注册:2003年1月19日
发表于:2005-12-16 16:07:00
5楼
谢谢,我自己看书了。

tigermu

  • 精华:6帖
  • 求助:0帖
  • 帖子:175帖 | 5410回
  • 年度积分:0
  • 历史总积分:19807
  • 注册:2003年1月19日
发表于:2005-12-17 11:22:00
6楼
对了我忘说了,我用的是C51。

周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2005-12-17 13:13:00
7楼
1. ‘新华龙单片机’——我没有用过,无法回答。
2. ‘8951是否程序是顺序写入的?’、‘CODE存储器是顺序存储的吗?’、‘如果用即比如我我的代码段有2K大,那么从0到2K之间就是代码,不写到2K以后的地方。’——如果你用汇编做程序[b]自己汇编[/b],可以控制代码段的存储位置,用跳转语句控制执行顺序;[b]汇编程序自动生成代码[/b],通常也是按顺序存放的。如果你用高级语言编制程序并且没有定义存放的地址,编译程序就按连续地址存放,但其中各段代码的位置由优化过程决定。
提醒一下:[b]编译后生成的代码长度[/b]和[b]链接后的代码长度[/b]相同,存放的地址不同:中断向量是固定地址,中间有间隔。具体位置可观察 .HEX 文件。
3. Flash 单片机内部存储器差异比较大,需要说明具体芯片才好讨论。

tigermu

  • 精华:6帖
  • 求助:0帖
  • 帖子:175帖 | 5410回
  • 年度积分:0
  • 历史总积分:19807
  • 注册:2003年1月19日
发表于:2005-12-17 19:16:00
8楼
首先谢谢周公的答复,让我清晰了不少。我使用的是c8051f310。
主要是我还没学习c51的编译那部分,要不也不能提这种问题了。今天我想到了用编程器往外读程序来试程序的存储位置,不过还没开始。
再次谢谢!

tigermu

  • 精华:6帖
  • 求助:0帖
  • 帖子:175帖 | 5410回
  • 年度积分:0
  • 历史总积分:19807
  • 注册:2003年1月19日
发表于:2005-12-22 17:19:00
9楼
读了,我什么设置也没做,是按顺序写的。

hz_cx

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2010年1月09日
发表于:2010-01-09 17:59:03
10楼
在C80C51F020单片机C语言程序中用哪个语句可实现汇编语言中的MOVX功能

hz_cx

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2010年1月09日
发表于:2010-01-09 18:06:24
11楼
请问在对C80C51F020单片机用C语言编写程序时,用哪条语句可以实现汇编语言中的MOVX功能,我想用C语言访问FALSH空间,该如何编写?

热门招聘
相关主题

官方公众号

智造工程师