松翰单片机的OTP可重复烧写的技巧_第1页
松翰单片机的OTP可重复烧写的技巧_第2页
松翰单片机的OTP可重复烧写的技巧_第3页
松翰单片机的OTP可重复烧写的技巧_第4页
松翰单片机的OTP可重复烧写的技巧_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、松翰单片机的OTP可重复烧写的技巧!松翰单片机的OTP可重复烧写的技巧!松翰单片机的OTP可重复烧写的技巧!松翰单片机的OTP可重复烧写的技巧!编制仅供参考审核批准生效日期地址: 电话:传真: 邮编:松翰单片机的OTP可重复烧写的技巧!1.问题:笔者在前期工作中,常常遇到在做测试时,只要修改一些简短的指令或数据时,就要再换一个全新的芯片重新烧录一下,再测试。这样即浪费时间,又消费芯片,还消费金钱呢。 2.解决:其实OTP不是你想象的那么“顽固”,只要你对它好一些,还是有些回报的。在烧录前,芯片的内部全是由2进制的1组成,烧录后,是对里面的1进行切断成0,如此,烧录过的不能再烧录,是对已经把1烧

2、录成0的不可再烧,而是没有把1烧成0的,还是可以再烧的。也就是说,1可以变成0,而0不可再变为1,就象保险丝一样,烧断了就不可再烧,而没烧断的,你还可以把它烧断。要想实现重烧的过程,还是要有些技巧的。哎,废话这么多,来些实例的讲吧。你可以在你想要的地方预留些空间,等你想要在这修改时,再从里面提取出来。;-; 3.实例1:在已经烧过程序的IC上修改数据: incms t_enter_io ;500ms 进入一次 nop ; mov a,#0 xFF ;1 预留数据修改(二进制为:b) mov a,#0 xFF ;2 预留数据修改 mov a,#0 xFF ;3 预留数据修改 mov a,#0 x

3、FF ;4 预留数据修改 mov a,#0 xFF ;5 预留数据修改 mov a,#0 xF3 ;等待被修改的数据 cjb t_enter_io,a,e_tele_io ;249次进入一下 clr t_enter_io ;-; (直接修改)比如我想在已经烧有上面程序的IC的基础上,修改a=0 xF3(2二进制:B)为a=0 xF1,此时,你就不要再浪费IC了,直接在上面修改就可以。你可以看到,0 xF3与0 xF1的区别只在于3和1,二进制为:0011B和0001B,所以你可以把0011B(十进制3)中第2位的1修改为0,即从0011B成为0001B,所以可以直接修改,当然你也要以把它修改成

4、为你想要的数据,但前提是:你只能从二进制中的1烧成0,不可从0变为1. 比如我可以把0 xF1再烧成0 xA1或0 xA0或0 x01或0 x00等等。;-; (覆盖修改)是否有一种可以在上面的程序中任意修改数据呢这是有的!读者可以看到,我上面的程序为了防止修改不同的数据而所预留的5条 :mov a,0 xFF ,这是为了修改各种数据而预留的。你可以把 0 xFF(二进制:B)修改成0255范围的任意一个数据。修改过程为:先把在最下面的不想要的数据(直接送数指令:mov a,0 xF3 ;此指令生成的机器指令为:2DF3),用 NOP(机器指令为:0000 )给填充掉。然后第5条的0 xFF修

5、改为你想要的数据),比如修改为:0 x45,修改后的程序如下: incms t_enter_io ;500ms 进入一次 nop ; mov a,#0 xFF ;1 预留数据修改(二进制为:b) mov a,#0 xFF ;2 预留数据修改 mov a,#0 xFF ;3 预留数据修改 mov a,#0 xFF ;4 预留数据修改 mov a,#0 x45;0 xFF ;5 预留数据修改 已经修改为0 x45 ;mov a,#0 xF3 ;此条指令用 NOP 取代 等待被修改的数据 NOP cjb t_enter_io,a,e_tele_io ;249次进入一下 clr t_enter_io

6、;-; 实例2:只修改数据而已,有时还是不能达到我们想要的结果,有没有一种可以写任意的命令的呢笔者给你的回答是:有! 在下面的一个实例中,给大伙分享下,预留空间的事。 (增加或修改部分指令)在已经存在的程序里,修改或增加部分指令。我们注意到,在已经烧过的IC中,里面有dw 0ffffh ,就相当于在里面全 部用1去填充,当然还可以再烧了。如下面的程序,我想在下面的 b0bset fp00 后面再加几条不一样的指令,如:我想让系统在执行到置FP00为1时后,进入睡眠状态。 incms t_enter_io ;500ms 进入一次 nop ; mov a,#0 xF3 ;此条指令用 NOP 取代

7、等待被修改的数据 cjb t_enter_io,a,e_tele_io ;249次进入一下 clr t_enter_io ; ; b0bset fp00 ; ; jmp F ;预留空间30个 dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh

8、0ffffh 0ffffh : ; 修改完后,程序如下: incms t_enter_io ;500ms 进入一次 nop ; mov a,#0 xF3 ;此条指令用 NOP 取代 等待被修改的数据 cjb t_enter_io,a,e_tele_io ;249次进入一下 clr t_enter_io ; ; b0bset fp00 ; ; ;jmp F ;预留空间30个将此条屏蔽,用NOP取代 NOP ; b0bclr fcpum1 ;睡吧! b0bset fcpum0 ; jmp F ;用去了3条,只剩下27条指令空间了! dw 0ffffh 0ffffh 0ffffh 0ffffh 0f

9、fffh 0ffffh 0ffffh ;0ffffh 0ffffh 0ffffh ;从这里释放3条指令出来 dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh :;-; (大量增加指令),笔者有个习惯,就是在写完程序后,会把剩下的空间,全部预留起来,以防止不测(呵呵)。也为增加大量的指令做些工作,这是必要的,笔者在开发产品过程中,就碰到过这样的情况,确定好了功

10、能的产品,已经在生产中,却发现了隐藏很深的漏洞,由于之前做了些准备,所以可以让客户再把烧过的IC发回来,修改一下,重新烧给他,这把双方的损失降到最低点。例如程序如下: 当要再加功能时,就可以在save_ROM 中继续添加,方法类似于上一个例子,在此不多做描述(若看不懂,可直接与笔者联系)。;*;*main: ; rst_wdt ;清看门狗 b0bts0 f_int_tc1 ; call time_treat ; ; b0bts0 f_check_buzzer ; call buzzer ; ; call save_ROM ; 把剩下的空间预留下来 jmp main ;*;*;*;*;此文件为预

11、留空间所用!;*;*save_ROM: ;预留空间e_save_ROM: ; ret ;*;*;100 dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh; dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh

12、0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffff

13、h 0ffffh 0ffffh0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh;100 dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh; dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffff

14、h 0ffffh0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh 0ffffh dw 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh 0ffffh0ffffh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论