见过很多初学者对PIC16系列单片机的ID码的读和写犯迷糊。说实话,这方面的资料也不怎么全。有些教材可能会涉及ID区域的介绍,可是往往是一代而过。这对初学者来说是比较容易犯错的地方。今天有空,对相关的问题作了一些整理,分享给大家。可能有些地方说的不够妥当,欢迎大家多多探讨。

1.什么是ID区域?

ID区域是独立于EEPROM,FLASH,RAM的区域。程序设计人员可以利用该区域存放软件的版本号,编写日期,烧录日期,产品标识等信息。不过该区域很小PIC16系列只能存放4个字节。

2.ID码怎么烧录到ID区域里面去?

可以利用PICC自带的宏命令IDLOC(X)来实现。具体操作如下:

.....................................//头文件  其它宏定义

__IDLOC(76F4);         //注意:前面是两个下划线。括号里面最多可以有2个字节

void main()

{

...................................//程序主体

}

编译以后再用烧录工具烧到单片机中即可。这里要提醒一下,IDLOC(X)里面最多有2个字节的16进制数,超过部分会无效。比如你写个987FE3,E3会丢掉。另外得说一下这两个16进制数在ID区域是怎么放的。我们已经知道IDLOC(X)里面能又个字节,而ID区域能放4个字节。以X=76F4为例,它们是这样放的07060F04。也就是说,在每个16进制数前加1个0。如果你写的不是2个字节的16进制数,比如是1个字节的78。编译器会在前面补0,那就成了0078。写到ID区域的就是00000708

3.ID码怎么读出来?

可以通过烧录工具跟编译器配合读出来。我用的是PICC跟ICD2。连好线,单片机上电以后,在编程模式下,通过执行Read Target Device操作,然后在Configure菜单下的Id memory

选项可以看到刚才编程的时候设置的ID码。

其实,多数PIC都没有唯一ID,有人通过烧断PIC读出总线来实现加密,但设备需要自制。
只要是市场上大量销售的芯片,解密都不是什么麻烦事,只能尽量用新型号或者生僻的型号。

有人用MCU内部的EEPROM这么搞过,但不是这么简单的这么搞,对于大批量生产来说,还需要一些技巧才能比较好的处理这个问题。
1、设置一个自检程序,通过特殊操作(我有一个自制工装,可以把MCU的各个相关IO强行固定在某个逻辑电平上,软件判断逻辑组合,必须符合一个特定组合才能进入特殊操作启动代码,UART接受工装的通信数据,通信数据传入EEPROM要被擦写的次数和位置等)。
2、进入自检后,MCU疯狂的擦写EEPROM中设定的某个位置(适当提高一点VCC电压以加快失效),最多擦写200万次后停止操作,一般MCU自带的EEPROM擦写次数都不到100万次,EEPROM某个字节在0XAA和0X55之间不断的被循环擦写。
3、这个擦写的时间还是比较长的,一般要数十分钟以上,我一般放在产品通电老化阶段进行这个自检程序(产品一般要在老化房4~6个小时候通电老化时间,自检程序兼容这个时间执行,避免产生新的工时损失)
4、擦写过程中在RAM中记录EEPROM该字节失效时的操作次数,并存入到EEPROM其他字节中。
5、产品正常销售中,执行APP用户程序,继续不断的擦写那个失效字节,如果不能擦写,则说明加密成功,否则有另一个纠错程序就不讲了,各位可以自行想办法。

PIC单片机该怎么加密相关推荐

  1. PIC单片机的BootLoader实现

    转载自:http://blog.sina.com.cn/s/blog_77b8b43b0102v9ut.html 引 言 PIC单片机的BootLoader属于需要自己写程序的那种,可以根据自己的需要 ...

  2. ioca0中断 pic单片机_关于PIC单片机的一些经验总结 -单片机-电子工程世界网

    为了给前一段时间学习PIC16F616型单片机的一个总结和方便大家的交流,我写了这篇关于PIC单片机的学习心得,都是在看了手册和编程调试后用自己的语言组织的,其中有不足或者有疑问的地方希望大家能及时的 ...

  3. pic单片机延时程序C语言,PIC单片机C语言延时程序和循环子程序实现方法

    PIC单片机C语言延时程序和循环子程序实现方法 很多朋友说C中不能精确控制延时时间,不能象汇编那样直观. 其实不然,对延时函数深入了解一下就能设计出一个理想的框价出来. 一般的我们都用 for(x=1 ...

  4. pic单片机c语言nop,PIC单片机的读写93XCXX程序

    PIC单片机的读写93XCXX程序 TITLE        "R/W EEPROM" LIST  P = 16C54 ;Serial Eprom interface to PIC ...

  5. PIC单片机 按键检测识别

    目录 按键和PIC单片机 一.按键 二.按键的物理连接与检测 三.PIC16F18854单片机 按键检测及显示实验 按键排布 预期效果 总体流程 中断服务程序 PIC汇编程序 按键和PIC单片机 一. ...

  6. 《我和PIC单片机:基于PIC18》——第2章 PIC的开发环境 2.1 PIC开发的硬件资源...

    第2章 PIC的开发环境 前面我们学习了PIC的内部资源配置和I/O口的基本结构,这一章我们重点要实现对I/O口的控制.单片机是软硬件结合的统一体,因此本章先介绍如何用简单的材料搭建起供学习使用的最小 ...

  7. pic单片机内部时钟校准c语言,实例讲解PIC单片机的时钟设置

    什么时钟? 首先我们先讲讲什么是时钟.时钟就是单片机的心脏.每跳动一下.整个单片机的各个电路就同步的动作一下.就好像我们做广播体操的时候 广播上喊的节拍1234 2234 3234....然后我们全部 ...

  8. pic单片机c语言存储器定义,PIC单片机C语言程序设计1 7.PDF

    PIC单片机C语言程序设计1 7 学电子跟我来FOLLOW ME PIC 单片机C 语言程序设计(1) ◆ 丁锦滔 编者按:为了帮助具有PI C 单片机汇编语言知识的技术人员或工程师,快速掌握利用C ...

  9. PIC单片机精通_异步串口通讯实例与细节

    1.前言 PIC16F876a异步串口通信的定义以及寄存器控制,这里不再多谈,前面已经进行过详细的分析.这里注意集中在几个关键点上. 串口中断服务程序应该注意什么? 利用串口助手进行调试应该注意什么? ...

最新文章

  1. Nature Human Behavior:大脑对不公平的反应有助预测抑郁症
  2. 服务器 'xxxx' 已被定义为分发服务器。若要将该服务器重新配置为分发服务器,必须首先卸载现有的分发服务...
  3. Java异常有多慢?
  4. C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练,来一份增删改查CRUD)
  5. 剑指 Offer 32 . 从上到下打印二叉树
  6. Vue绑定style的使用方式(令组件复用)
  7. ZZULIOJ:1059: 最高分
  8. 多加速器驱动AGX的目标检测与车道分割
  9. Matlab中的数据类型
  10. 电阻触摸屏 linux 校准软件,android 电阻单点触摸屏校准
  11. -TEST 12 for NOIP ......(30-300)-----(( ! ))
  12. 利用bilibili增强脚本下载B站视频+更多强大功能
  13. 2020美容师(初级)操作证考试及美容师(初级)作业模拟考试
  14. python好学吗 老程序员-学习python,难道是为了当一名苦逼的程序员吗?
  15. 怎么给HTML文件加背景,设置文件夹背景,如何设置文件夹背景颜色
  16. JVM面试题附带答案
  17. bind()函数介绍
  18. 参考文献正确格式 如何直接得到
  19. 投放澳大利亚市场的光伏搜索引擎SEM厂家
  20. MOSS与ChatGPT,人工智能真的会取代人类吗?

热门文章

  1. 股票涨停板好不好?什么是股票涨停板和跌停板?
  2. flickr php,phpFlickr并从Flickr获取图像
  3. Python编程从入门到实践:动手试一试8-6城市名
  4. SBFD(Seamless Bidirectional Forwarding Detection)
  5. MATLAB 打开m文件的时候有如图报错怎么办
  6. java gui 日历_java 日历程序(gui界面)
  7. 【线性代数】标准正交矩阵与Gram-Schmidt正交化
  8. 类脑计算机能解决,全球神经元规模最大类脑计算机问世
  9. 花瓣搜索编辑网站的方法
  10. Rife算法的一种Matlab实现