仔细阅读PIC10F20x系列手册可知此系列芯片内置了内部4M晶振且精度为正负1%即f0=3.99~4.01M范围,而OSCCAL寄存器存储了芯片出厂时对内部晶振的校准值,手册里面也特别说明了当对芯片擦除后将丢失校准值,所以我们对芯片编程擦除前务必保存校准值以求精度,也正是因为每个芯片对应的校准值不一样,当我们在程序中内置了对晶振校准寄存器进行重置则每个重置的值对应唯一的芯片 这就是频率的加密原理:
- 首先,根据芯片手册所说,当芯片上电之后,程序会先跳入到特定的地址(末地址)执行语句movx xx; xx为校准值,然后芯片再返回从0000地址开始执行程序,之后用户便可以对osccal寄存器进行写操作(不可读)实现对芯片晶振的重新校准,这是厂家校准的流程。
- 汇编程序如下:
BL end_add
ORG 0x00
......
MOV OSCCAL,#xx
.....
End_add:
movx xx;
JMP 0x00