原创 W78E58B和W77E516的ISP使用笔记

2006-12-19 15:12 8272 4 5 分类: MCU/ 嵌入式

正在用W78E58B,仿真器不够,用编程器拔来插去的很烦,据说其支持ISP,就准备试试,顺便也试了试W77E516ISP。首先上网搜了一下其他人的经验,下面是我经过实验成功的步骤: <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


1、用编程器将LDU40910.BIN写入W78E58BLDROM(地址8000H8FFFH)。我用的SUOERPROL580U只需要在装载代码的时候指定起始地址为8000H即可。


2、将P2.6P2.7都接地,当然单片机系统的串口要先调通。


3、上电复位后,启动8051IspWriter.exe,点击Select Chip设置为W78E58B,点击Select File载入目标代码,设置串口号,点击ConNet,软件与单片机通讯成功后,原来灰色的Porgram All按钮即可用,点击它开始ISP下载。


4、释放P2.6P2.7,上电复位后,单片机即可正常运行。


W77E516ISP和上面稍有不同:


1、将LDU40910.BIN写入W77E516LDROM(地址10000H10FFFH)。此外还要使能H/W配置位。


2、后面步骤同上,不过W77E516似乎在下载成功后即开始正常运行,无需复位。

文章评论1条评论)

登录后参与讨论

用户107498 2009-11-3 11:52

//本人邮箱:sz13751141963@163.com 你好: 很感谢你将自已的使用经验写出来,让我们这些后来者少走了不少的弯路^_^ 我最近也想试用ISP,但无论用硬件或者是用软件启动ISP都不成功,能不能帮我看看是什么原因呀,谢谢呀? (如果用用编程器烧写程序调试过,目标板一切都正常的) 问题1: 在将成功烧写完LDU40910.BIN的芯片装在目标板后,再次准备写入目标代码时,在点ConNet后提示打开端口失败, 但我重新用串口接收软件调试目标板的可以的,并且端口也一致还是不行? 我有个疑问是这样的:我的串口通讯是用7LB184的,会不会是这个导致找不到端口 问题2: 将P2.6/P2.7接地后打开电源,发现P1/P2端口电平一至在不停的取反 以下是在用软件方式启动时用的程序(网上下的), 用这个程序试过我的串口,没问题,但在void ChangeAPtoLD(void)中的两个空白处不明白要加载的是什么内容 希望你帮忙指定下^_^ unsigned char CodeTotalNumber = 8-1; // W B 1 2 3 4 5 6 char code UserCode[] = {0x57,0x42,0x31,0x32,0x33,0x34,0x35,0x36};//串口数据流 // ISP Mode APROM File sfr P0 = 0x80; sfr P1 = 0x90; sbit P1_1 = P1^1; //驱动外部一个LED 观测是否进入ISP 程序 sfr sbuf = 0x99; sfr pcon = 0x87; sfr scon = 0x98; sbit ti = scon^1; sbit ri = scon^0; sfr ie = 0xa8; sbit ex0 = ie^0; sbit et0 = ie^1; sbit ex1 = ie^2; sbit et1 = ie^3; sbit es = ie^4; sbit et2 = ie^5; sbit ea = ie^7; sfr ip = 0xb8; sbit px0 = ip^0; sbit pt0 = ip^1; sbit px1 = ip^2; sbit pt1 = ip^3; sbit ps = ip^4; sbit pt2 = ip^5; sfr psw = 0xd0; sbit p = psw^0; sbit ov = psw^2; sbit rs0 = psw^3; sbit rs1 = psw^4; sbit f0 = psw^5; sbit ac = psw^6; sbit c = psw^7; sfr tcon = 0x88; sbit it0 = tcon^0; sbit ie0 = tcon^1; sbit it1 = tcon^2; sbit ie1 = tcon^3; sbit tr0 = tcon^4; sbit tf0 = tcon^5; sbit tr1 = tcon^6; sbit tf1 = tcon^7; sfr t2con = 0xc8; sbit cprl2 = t2con^0; sbit ct2 = t2con^1; sbit tr2 = t2con^2; sbit exen2 = t2con^3; sbit tclk = t2con^4; sbit rclk = t2con^5; sbit exf2 = t2con^6; sbit tf2 = t2con^7; sfr tmod = 0x89; sfr th0 = 0x8c; sfr tl0 = 0x8a; sfr th1 = 0x8d; sfr tl1 = 0x8b; sfr th2 = 0xcd; sfr tl2 = 0xcc; sfr rcap2h = 0xcb; sfr rcap2l = 0xca; sfr CHPCON = 0xbf; sfr CHPENR = 0xf6; sfr SFRAL = 0xc4; sfr SFRAH = 0xc5; sfr SFRFD = 0xc6; sfr SFRCN = 0xc7; sfr turbo_TA = 0xc7; sfr turbo_SFRAL = 0xac; sfr turbo_SFRAH = 0xad; sfr turbo_SFRFD = 0xae; sfr turbo_SFRCN = 0xaf; sfr turbo_CHPCON = 0x9f; sfr turbo_CKCON = 0x8e; // clock control sfr turbo_T2MOD = 0xc9; // clock control bit jmpLDROM = 0x20; bit TimerOut = 0x21; void InitialPowerON(void); void ChangeAPtoLD(void); void RecDataTimer(void); void Timer0ISR (void) interrupt 1 using 1 { tr0=0; tf0=0; } void SerialInt(void) interrupt 4 using 3 { char i,j,code_a; if(ri==0) { ti=0; } else { jmpLDROM=1; i=0x00; while(1) { j=sbuf; code_a=UserCode[i]; if(j!=code_a) { jmpLDROM=0; goto ERROR; } while(i==CodeTotalNumber) goto OK; RecDataTimer();//接收串口发来的内容 if(TimerOut==1) { jmpLDROM=0; goto ERROR; } i++; } } OK: ; ERROR: ; ri=0; tr0=0; } void main(void) { int i; InitialPowerON(); jmpLDROM=0; while(1) { if(jmpLDROM==1) { es=0; ti=0; sbuf=0x00; //Command OK Code while(ti==0) { ; } ti=0; es=1; ChangeAPtoLD(); jmpLDROM=0; } for(i=0;i<8000;i++); } } void InitialPowerON(void) { turbo_CKCON=0x01; ie=0x00; et0=1; // timer0 interrupt enable es=1; // RS-232 interrupt enable ea=1; // all interrupt enable // Timer2BaudRate(); scon=0x50; // mode=mode1 ,ren=enable t2con=0x30; // Timer2=BaudRate CLK rcap2h = 0xff; //Fosc = 12M rcap2l = 0xd8; //BaudRate = 9600 th2=rcap2h; tl2=rcap2l; tr2=1; } void RecDataTimer(void) { //unsigned int delay; char delay; ri=0; TimerOut=0; tmod=0x11; tr0=1; for(delay=50; delay>0; delay--) { //11.0592M th0 = 0xfc; // th0=(65536-(1000*(Fosc/12000000)))/256; // delay x 1ms tl0 = 0x66; // tl0=65536-(1000*(Fosc/12000000)); // delay x 1ms for(tf0=0; tf0==0; ) { while(ri==1) { goto OK ; } } } TimerOut=1; OK: ; } //从APROM进入LDROM模式 void ChangeAPtoLD(void) { unsigned int idata i; CHPENR=0x87; // write enable CHPENR=0x59; // write enable CHPCON=0x03; // bank=4k,flash mode 进入 ISP 编程模式 tl0=0xfe; th0=0xff; tr0=1; pcon=pcon|0x01; // enter idle mode 进入 IDLE 模式,准备进入 ISP 模式 ///////////////////////////////////////////////// ///////////////////////////////////////////////// //不清楚在此处应加入的是什么?????????????? ///////////////////////////////////////////////// ///////////////////////////////////////////////// turbo_TA=0xaa; // write enable turbo_TA=0x55; // write enable turbo_CHPCON=0x03; // bank=4k,flash mode tl0=0xfe; th0=0xff; tr0=1; pcon=pcon|0x01; // enter idle mode ///////////////////////////////////////////////// ///////////////////////////////////////////////// //不清楚在此处应加入的是什么?????????????? ///////////////////////////////////////////////// }

用户50400 2007-11-6 21:42

按照说明设置成功

问题解决~

谢谢~

用户11323 2007-1-28 09:57

谢谢.

问题解决.

用户68356 2007-1-23 07:26

还好,我不用咔吧,俺用NOD32最爽了

相关推荐阅读
用户1174293 2009-10-13 15:05
PID整定经验
这段时间做了一个数控项目,用到了数字PI调节,现在将整定过程稍做整理,给大家参考。采用增量式PI算法,数学公式原型:△u(k)=Kp*(e(k)-e(k-1))+Ki*e(k)+Kd*(e(k)-2e...
用户1174293 2009-06-10 17:02
SPARTAN3 AN系列电路设计及使用注意事项
XILINX在前年推出了内置FLASH的SPARTAN FPGA系列,不仅可以为FPGA提供上电加载配置,而且还可以为应用提供数据存储空间。换句话说,就是内部的FLASH单是为FPGA配置你还用不掉,...
用户1174293 2008-10-18 15:14
W77E58外扩RAM的教训
近期公司的一个项目以W77E58为核心,外扩掉电保护RAM,XC9572,A/D,D/A等。本来是一个很普通的51系统,结果前后折腾了很久才最终搞定。第一版由同事做的硬件,我做的软件,功能测试很快就通...
用户1174293 2007-01-09 13:14
EEPROM长效读写
常用的EEPROM如24LC04等的使用寿命大概是10万次,这在一些频繁修改存储数据的场合往往不够。一个很自然的想法是以空间换时间,用分块的方式轮流写入。设想在00H单元记录当前数据区首地址,每次根据...
用户1174293 2006-12-22 12:33
C51中断函数
C51的中断函数的格式为:void FuncIr(void) interrupt x [using y]<?xml:namespace prefix = o ns = "urn:schemas-...
用户1174293 2006-12-22 11:55
C语言的宏定义
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义:<?xml:namespace prefix = o ns = "...
EE直播间
更多
我要评论
1
4
关闭 站长推荐上一条 /3 下一条