原创 关于PIC16系列单片机ID码的读写

2009-11-6 16:56 7477 4 5 分类: MCU/ 嵌入式

         见过很多初学者对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码。


 


4.单片机里面有了EEPROM跟FLASH,为什么还要这个ID区域呢?


 估计是因为在编译烧录环境里面方便一点。其他的原因还望大虾们指点。


 


我也有个疑问,在PICC的函数里能不能直接利用IDLOC(X)这个宏命令?如果可以的话,对程序开发人员来说很方便。渴求大家的指点,谢谢!


 

文章评论1条评论)

登录后参与讨论

用户1271802 2012-7-4 15:54

这里主要用来放一下比如生产日期,版本号之类的东东,用来做后期的产品追溯,比如质保之类的
相关推荐阅读
用户1116257 2009-11-23 10:43
PIC EEPROM读写
//EEPROM READ&&WRITE FUNCTION//1.不管是宏定义里面写EEPROM和函数内部写EEPROM的数据,都能通过调试器读出数据//2.建议在写EEPROM以后不...
用户1116257 2009-10-24 21:30
PICC出学者容易犯得两个错误
错误1:变量定义赋值先后顺序问题很重要开发环境为MPLAB IDE V7.43 + PICC 。如下两种代码书写方式,在补充完整之后,哪一个会编译出错?( flag_sendKeyByte 为全局位变...
用户1116257 2009-10-23 22:31
PIC 单片机应用问答14 篇
1 PIC 单片机振荡电路中如何选择晶体对于一个高可靠性的系统设计晶体的选择非常重要尤其设计带有睡眠唤醒往往用低电压以求低功耗的系统这是因为低供电电压使提供给晶体的激励功率减少造成晶体起振很慢或根本就...
用户1116257 2009-10-20 09:53
PIC16F639在被动无钥门禁系统中的设计应用
 免持式被动无钥门禁(PKE)正迅速成为汽车远程无钥门禁应用的主流,并成为新车型的普遍选项。该方法无需用手按发送器按钮来锁上或打开车门,只要拥有一个有效的应答器就可方便地进出车辆。 免持式PKE应用要...
用户1116257 2009-10-10 11:56
第一次画板的总结
        说来惭愧,毕业三年多了,还没有画过一块实际应用产品的PCB。理论看了很多,好玩一样的画过两块,感觉学的理论很容易忘记。自己在看书学习--忘记--看书之间徘徊。而且书上的跟网络上的知识不...
我要评论
1
4
关闭 站长推荐上一条 /2 下一条