ImageVerifierCode 换一换
格式:DOC , 页数:5 ,大小:38.50KB ,
资源ID:6544600      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6544600.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SST 单片机IAP 编程示例(C 语言).doc)为本站会员(ysd1539)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

SST 单片机IAP 编程示例(C 语言).doc

1、SST 单片机 IAP 编程示例 (C语言)程序说明:本程序用的单片机是 SST89x564RD、SST89x554RC、SST89x58RD2、SST89x54RD2和SST89x52RD2。示例程序代码中,执行 IAP指令的程序放在单片机低端程序空间,也就是 BLOCK0,IAP的程序包括了扇区擦除(Sector-Erase)、字节编程(Byte-Program)和字节校验(Byte-Verify)(注:字节校验相当于读数据指令)。IAP 程序做成子程序,主程序可以调用这些子程序执行 IAP操作,把数据烧写到另外一块的 FLASH空间中(BLOCK1)。主程序中,目标扇区先被擦除,然后把数

2、据(0,1,2,n,n 等于一个扇区的大小)写入到 BLOCK1目标地址BLK1-DST-ADDR,IAP成功完成后,ErrorCode 变为 0,如果有错误出现时,程序保持错误功能,ErrorCode还是为 1。/* demoIAP.c - SST89x564RD IAP C51示范代码* SST89x564RD、SST89x554RC、SST89x58RD2、SST89x54RD2 和 SST89x53RD2* MCU有两个内部 FLASH存储器块,本代码是从 BLOCK0执行 IAP指令改写。* BLOCK1的 1000H(SST89x564RD)或 E000H (SST89x554RC

3、、SST89x58RD2、SST89x54RD2* 和 SST89x53RD2)的数据。* 本程序默认是 SST89x564RD,如果使用SST89x554RC、SST89x58RD2、SST89x54RD2* 和 SST89x53RD2,只要修改变量 BLK1_DST_ADDR就可以。*/* MCU特殊功能寄存器地址*/sfr SFCF = 0xB1; /*FLASH配置位*/sfr SFCM = 0xB2; /*FLASH命令位*/sfr SFAL = 0xB3; /*FLASH地址低位*/sfr SFAH = 0xB4; /*FLASH地址高位*/sfr SFDT = 0xB5; /*F

4、LASH数据位*/sfr SFST = 0xB6; /*FLASH状态位*/* MCU IAP命令*/#define SFCM_SE 0x0B; /*扇区擦除 IAP指令*/#define SFCM_VB 0x0C; /*字节校读 IAP指令*/#define SFCM_PB 0x0E; /*字节编程 IAP指令*/* 全局变量定义*/const unsigned short int BLK1_DST_ADDR = 0x1000;/*SST89x564RD准备写入的目标地址(在另外一块的片内 FLASH)如果是用 SST89x554RC、SST89x58RD2、SST89x54RD2 和 SS

5、T89x53RD2,请删除这句,改为用下面一句。*/*const unsigned short int BLK1_DST_ADDR = 0x0F000; */*SST89x554RC、SST89x58RD2、SST89x54RD2 和 SST89x53RD2准备写入的目标地址。*/const unsigned char SECT_SIZE = 0x80; /*一个扇区的字节数*/unsigned char ErrorCode; /*标示操作的结果*/* Function Prototype*/void sector_erase(unsigned short int dataAddr);void

6、 byte_program(unsigned short int dataAddr, unsigned char dataByte);unsigned char byte_verify(unsigned short int dataAddr);int ready();void error();/* 主程序 * 改写块 1一个扇区的数据(从 0开始,每次加 1),地址从 BLK1_DST_ADDR开始。* 当 IAP执行成功,ErrorCode=0,否则 ErrorCode=1.*/void main()unsigned short int destAddr = BLK1_DST_ADDR;un

7、signed char byteCnt ; /*字节数*/unsigned char origData; /*存储 IAP操作的数据*/unsigned char verifyData; /*校对数据*/sector_erase(destAddr); /*写数据前先擦除要写的扇区*/origData = 0;for(byteCnt=0; byteCnt8; /*存入地址的高位字节*/SFAL = destAddr; /*存入地址的低位字节*/SFCM = SFCM_SE; /*发出扇区擦除指令*/if(!ready()error();return;/* 字节编程子程序*/void byte_p

8、rogram(unsigned short int dataAddr, unsigned char dataByte)unsigned short int destAddr = dataAddr;SFCF = SFCF | 0x40; /* IAP使能*/SFAH = destAddr8; /*存入地址的高位字节*/SFAL = destAddr; /*存入地址的低位字节*/SFDT = dataByte; /*存入要编程的数据*/SFCM = SFCM_PB; /*发出字节编程指令*/if(!ready()error();return;/* 字节校读子程序*/unsigned char by

9、te_verify(unsigned short int dataAddr)unsigned short int destAddr = dataAddr;unsigned char readByte;SFCF = SFCF | 0x40; /*IAP使能*/SFAH = destAddr8; /*存入地址的高位字节*/SFAL = destAddr; /*存入地址的低位字节*/SFCM = SFCM_VB; /*发出字节校读指令*/readByte = SFDT;SFCF = SFCF /*关闭 IAP*/SFDT = 0;return readByte;/* 准备子程序* 检查 IAP操作是否完成。如果结束,关闭 IAP。*/int ready()unsigned long int TimeOut = 0;while (TimeOut 100000)if (SFST /*关闭 IAP*/SFDT = 0;return 1; /* IAP操作结束*/TimeOut+;SFCF = SFCF /*关闭 IAP*/SFDT = 0;return 0; /*IAP操作没有完成*/* Error Function*/void error()ErrorCode=1; /*IAP出错*/while(1) /*软件陷阱*/

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报