看数据手册上,PIC12F508的复位向量明明是 0000H 处,如果要校准震荡,也需要将存储器中 1FFH 处的值读出来,写入 OSCCAL ,如:
#define C_OSCCAL_ADJ (*(const unsigned char *)0x1ff)
OSCCAL=C_OSCCAL_ADJ;
但实际上用 MPLAB SIM 模拟程序运行时的结果让我有点疑惑,因为在模拟器中,复位后程序进入的是 1FFH 处,而继续执行则跳到 0000H 处,两条指令翻译成汇编代码依次为:
MOVLW C_OSCCAL_ADJ
MOVWF OSCCAL
从道理上说,也说得通,CPU和C编译器已经帮我们处理好了校准问题,不需要我们再关注了,但为啥在数据手册里没明说呢? |