欢迎来到天天文库
浏览记录
ID:17370698
大小:27.00 KB
页数:4页
时间:2018-08-30
《松翰单片机的otp可重复烧写的技巧!》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、松翰单片机的OTP可重复烧写的技巧!1.问题:笔者在前期工作中,常常遇到在做测试时,只要修改一些简短的指令或数据时,就要再换一个全新的芯片重新烧录一下,再测试。这样即浪费时间,又消费芯片,还消费金钱呢。 2.解决:其实OTP不是你想象的那么“顽固”,只要你对它好一些,还是有些回报的。在烧录前,芯片的内部全是由2进制的1组成,烧录后,是对里面的1进行切断成0,如此,烧录过的不能再烧录,是对已经把1烧录成0的不可再烧,而是没有把1烧成0的,还是可以再烧的。也就是说,1可以变成0,而0不可再变为1,就象保险丝一样,烧断了就不可再烧,而没烧断的,你还可以把它烧断。要想实现重烧的过程,还是要有
2、些技巧的。哎,废话这么多,来些实例的讲吧。你可以在你想要的地方预留些空间,等你想要在这修改时,再从里面提取出来。;-----------------------------------------------------------------------------; 3.实例1:在已经烧过程序的IC上修改数据: incms t_enter_io ;500ms进入一次 nop ; mov a,#0xFF
3、;1预留数据修改(二进制为:11111111b) mov a,#0xFF ;2预留数据修改 mov a,#0xFF ;3预留数据修改 mov a,#0xFF ;4预留数据修改 mov a,#0xFF ;5预留数据修改 mov a,#0xF3 ;等待被修改的数据 cjb t_enter_io,a,e_tele_io ;249次进入一下 clr t_enter_io
4、 ;;-----------------------------------------------------------------------------; 3.1.1(直接修改)比如我想在已经烧有上面程序的IC的基础上,修改a=0xF3(2二进制:11110011B)为a=0xF1,此时,你就不要再浪费IC了,直接在上面修改就可以。你可以看到,0xF3与0xF1的区别只在于3和1,二进制为:0011B和0001B,所以你可以把0011B(十进制3)中第2位的1修改为0,即从0011B成为0001B,所以可以直接修改,当然你也要以把它修改成为你想要的数据,
5、但前提是:你只能从二进制中的1烧成0,不可从0变为1.比如我可以把0xF1再烧成0xA1或0xA0或0x01或0x00等等。;-----------------------------------------------------------------------------; 3.1.2(覆盖修改)是否有一种可以在上面的程序中任意修改数据呢?这是有的!读者可以看到,我上面的程序为了防止修改不同的数据而所预留的5条:mova,0xFF,这是为了修改各种数据而预留的。你可以把0xFF(二进制:11111111B)修改成0~255范围的任意一个数据。修改过程为:先把在最下面的不想要的
6、数据(直接送数指令:mova,0xF3;此指令生成的机器指令为:2DF3),用NOP(机器指令为:0000)给填充掉。然后第5条的0xFF修改为你想要的数据),比如修改为:0x45,修改后的程序如下: incms t_enter_io ;500ms进入一次 nop ; mov a,#0xFF ;1预留数据修改(二进制为:11111111b) mov a,#0xFF ;2locat
7、edintheTomb,DongShenJiabang,deferthenextdayfocusedontheassassination.Linping,Zhejiang,1ofwhichliquorwinemasters(WuzhensaidinformationisCarpenter),whogotAfewbayonets,duetomissedfatal,whennightcame预留数据修改 mov a,#0xFF
此文档下载收益归作者所有