| |
我要投稿 | 资讯 | 机械 | 电气 | 软件 | |
| 机电专业技术网>电子电气>单片机> |
SST89C54/58简介一. SST89C54/58性能简介二. SST89C54/58功能图 兼容于INTEL公司的P87C54/58,扩展了IAP及4K E2PROM。 三. SST89C54/58程序空间 在动态修改Block0程序的问题上,应当确保将要加载的程序正确无误,至少做到进入Block1块入口程序的正确性,否则就只有借助编程器来烧录自举程序了。但这样就失去IAP的意义,不可不察。 在本公司的LOG2001 USB DEMO KIT开发系统上,需要完全更新Block0块的内容,让用户真实拥有P87C54/58的全部功能。这样,当用户在开发USB时,就不需要用定位器或者汇编语言来混合编程。只需象平时那样操作自己熟悉的C51开发环境。 LOG2001 USB DEMO KIT开发系统使用UART来传送Firmware,其默认Buadrate为9600bps。除了确保自举程序入口正常以外,串口的Buadrate在当次也要相符。改动Buadrate只有在装载成功以后才有效。 一般来说,在完全掌握IAP及232口以前,而身边又缺乏编程器的情况下,应谨慎对待与之相关的程序语句。在本公司的LOG2001 USB DEMO KIT开发系统上,还预备有最后一种自举能力:硬件自举! 四. IAP编程模式 SST89C54/58除了提供IAP编程模式以外,也可以借助外力(如编程器)强行将程序灌入,就象写Flash ROM一样。其实自举程序就唯有通过这种方式载入。称之为“外主编程模式”。 外主编程模式对于大多数程序员而言意义不大,有兴趣的话参阅SST89C54/58的 Datesheet,下面介绍IAP模式。 IAP模式就是CPU一边在某个Block 中运行,同时对另一个Block进行擦空,写入,校验等操作。注意,同一个Block内不允许Program。被Program的Block整个儿处于“忙”状态,其代码不可见。 IAP命令见下表:(略) 与此相关的特殊功能寄存器定义如下: 1.SFST 其中,SECDx为加密表,不同的加密级别将决定被加密单位对外的透明度,具体见下表: 2.SFCF 3.SFCM 4.SFDT 5.SFAL 6.SFAH IAP程序设计: 对照上述介绍,很容易编写出IAP烧录函数,下面给出几个事例: 1. 块擦除: void block_erase (unsigned char block) { unsigned int timeout = 0xA555; SFCF = 0xC0; SFAH = block; SFDT = 0x55; SFCM = 0x0D; while (--timeout){ if (Busy = = 0) return; } } 2. 字节编程: void byte_program (unsigned char laddr,unsigned char haddr,unsigned char udata) { unsigned char timeout = 0xFF; SFCF = 0xC0; SFAH = haddr; SFAL = laddr; SFDT = udata; SFCM = 0x0E; while (--timeout){ if ( Busy = = 0) return; } } 对于只需要Download Firmware来说,上述两个函数已经够用。完整的IAP汇编子程序请参阅:http://www.ssti.com/ 采用C语言编写IAP函数需要一定的技巧,它关系到定位并访问绝对地址等问题,而且这些函数只是应用系统中的一小部分,虽然嵌汇编或者纯汇编更便于处理绝对地址,但却不利于整个大系统,有点丢西瓜的味道。 LOG2001 USB DEMO KIT开发系统的自举程序使用纯C语言编写,而且也适用于低价位的SST89F54/58(和Philips的价位比大概二比一吧)。 如何拿IAP来当I2C使用,以便节省24LCxx或93Cxx呢。Sector的概念在这里尤为重要,因为改动数据不能影响程序,故而要求在小范围内操作。下面是关于Sector的函数: void sector_erase (unsigned int sector) { unsigned int timeout = 0xA555; SFCF = 0xC0; SFAH = sector /256; SFAL = sector; SFCM = 0x0B; while (--timeout){ if (Busy == 0) return; } } 如果仅仅要修改某一两个Byte,可将该Sector内的数据全部保存于RAM中,改好后再全部回送Sector。 一般来说,数据Sector应设置在Block1的高端,这样才不会和CODE竞争。 五. SST89C54/58发展系统 前面说过,SST89C54/58兼容于INTEL的P87C54/58,故而其编译环境毋须作大的改动,如果不打算使用IAP功能,干脆一点也不改。 扩展IAP功能,对于汇编语言来说,只是在源文件开头用EQU或DATA伪指令定义那六个新增加的SFR地址即可。而C语言也同样在头文件中增加定义的SFR地址。本公司网站(www.usb11.com)上有SST89C58.h供Download。可将其直接替代<<reg51.h>>。 上一页12 3 下一页 上一篇:ASM-51 宏汇编使用手册 下一篇:嵌入式操作系统一览 简介 程序 IAP 系统 开发 功能 编程 SST89C54/58 仿真器 简介 程序 IAP 系统 开发 功能 编程 SST89C54/58 仿真器 |