2024年2月19日发(作者:胥瑞绣)
PIC16F630 的差别与烧录档转换
MDT10F630 与
一、MDT10F630与PIC16F630的差别:
1、用外部晶振时, MDT10F630需要设置90H寄存器, 并在烧录选项选择相应的晶振模式。
PIC16F630通过烧录选项设置振荡类型。
MDT10F630 90H :MCU 振荡器控制寄存器.
Bit 7 Bit 6 Bit 5 Bit 4
INOSCR
Bit 3 Bit 2 Bit 1 Bit 0
REG REG ECKIN OSO2E- REG
OSC2O OSCIN
Bit6 ~ 4 : 普通寄存器位
ECKIN : 外部时钟输入使能位;
0 =不使能振荡器外部输入时钟
1 =使能振荡器外部时钟输入(外部RC振荡荡必须置1)
OSO2E :内部和外部振荡器使能位;
0 =只使用内部或外部振荡器
1 =使能内部和外部(仅LF模式)振荡器
OSC2O : OSC2/PA4 振荡器时钟输出使能位;
0 = 在内部或外部RC模式振荡模式下不使能OSC2/PA4时钟输出
1 = 在内部或外部RC模式振荡模式下使能OSC2/PA4时钟输出
OSCIN : MCU内部或外部振荡器选择位;
0 = 默认的 MCU 时钟基于内部4MHz 振荡器
1 = MCU时钟基于外部振荡器(通过OPTION选择类型),
当内部4MHz 振荡器变成外部振荡器时,必需等OST时间20ms。
注解:当 Bit2
被为设定为 "0" 内部振荡与外部振荡只有一种振荡会 Enable.
当 Bit2 被为设定为 "1" 内部振荡与外部振荡会同时 Enable, 而外部振荡模式强设为 LF type .
Bit3 为设定外灌 clock模式, PA4/osc2 pin会被强制为 I/O 无法作 clock output,
当 Bit3 & Bit0 同时被设定为 "1", 内部振荡将会停止, IC 的系统 clock 必须由PA5/OSC1 pin 直接给脉波才能动作 .
例子 : 改振荡器为外部振荡器 (振荡器从OPTION中选择类型)
BSR
LDWI
STWR
BCR
STATUS, PAGE ; 设置页 1
01H
10H
; 设置W数据为 01H
; 存储 01H 到寄存器90H (INOSCR)
STATUS, PAGE ; 设置页 0
; 设置页 1
; 设置W数据为 01H
; 存储 01H 到寄存器90H (INOSCR)
; 设置页 0
对应的16进制码是:
0A83
;BSR STATUS, 5 3A01 ;LDWI 01H
1190 ;STWR 10H
STATUS, 5 0283 ;BCR
2、PIC16F630 的 /MCLR 功能可以通过烧录选项设置,而 MDT10F630 的 /MCLR 功能须选用
MDT10F630P13 or MDT10F630S13
包装,则外部/MCLR的封装。无法通过烧录选择。
3、MDT10F630 无 Brown-out 功能。
4、其它使用方式一样。二、PIC16F630烧录档转成MDT10F630
由于两者设置内外部振荡器的方法不同,MDT需要用90H来设置振荡方式,而PIC16F630的90H是用来校正内部频率的,有的程序90H会被设一些值,有的无任何设置。所以PIC16F630烧录档转至10F630时,需要特别注意90H的设置。
如果有ASM档,在ASM档里按10F630规格修改90H值,再重新编译则可。
如果只有烧录档,就需要想办法把设置90H的指令加进去或修改原烧录档中90H的参数。
下面举例说明将设置90H参数加到烧录档里:
烧录档16F630。HEX,要求用外部振荡455K,则LF振荡模式。
步骤:1、 用MDT烧写器软件打开16F630。HEX,反编译:
2、保存反编译文档:
3、用WORD打开反编译文档,查找10H,注意当STATUS,5=1时,10H就是90H,有的10H不是表示寄存器而是地址或立即数,要注意辩认。
4、该程序查找的结果是没有对90H设置的,按MDT10F630规格书要求:LF需要将90H设为00001101B,则0DH,所以先找ROM中没有写代码的地方,如地址380H,将把指令填在此处。
5、开始填写指令,用鼠标双击需要填写的地方,弹出对话框,我们需要在380H填指令,所以在MCU复位地址0000H处先填上LJUMP 380H,则如下图对话框中的2B80,使程序跑到380H处。
6、再到380H处,填上如下数据,则
BSR
STATUS,5 ;
LDWI 0DH ;STWR 10H ;BCR STATUS,5 ;
LJUMP 200H ;千万别忘了,跳回原本应复位的地址200H
7、反编译检查填写无误后,保存成MDT烧录档,如上图。
8、最后再提醒一下,如果原代码中有设置90H的,修改原设置参数则可;有多处设置90H的(一般不会出现),则只保留上电复位时的设置,其它的设置删掉。
2024年2月19日发(作者:胥瑞绣)
PIC16F630 的差别与烧录档转换
MDT10F630 与
一、MDT10F630与PIC16F630的差别:
1、用外部晶振时, MDT10F630需要设置90H寄存器, 并在烧录选项选择相应的晶振模式。
PIC16F630通过烧录选项设置振荡类型。
MDT10F630 90H :MCU 振荡器控制寄存器.
Bit 7 Bit 6 Bit 5 Bit 4
INOSCR
Bit 3 Bit 2 Bit 1 Bit 0
REG REG ECKIN OSO2E- REG
OSC2O OSCIN
Bit6 ~ 4 : 普通寄存器位
ECKIN : 外部时钟输入使能位;
0 =不使能振荡器外部输入时钟
1 =使能振荡器外部时钟输入(外部RC振荡荡必须置1)
OSO2E :内部和外部振荡器使能位;
0 =只使用内部或外部振荡器
1 =使能内部和外部(仅LF模式)振荡器
OSC2O : OSC2/PA4 振荡器时钟输出使能位;
0 = 在内部或外部RC模式振荡模式下不使能OSC2/PA4时钟输出
1 = 在内部或外部RC模式振荡模式下使能OSC2/PA4时钟输出
OSCIN : MCU内部或外部振荡器选择位;
0 = 默认的 MCU 时钟基于内部4MHz 振荡器
1 = MCU时钟基于外部振荡器(通过OPTION选择类型),
当内部4MHz 振荡器变成外部振荡器时,必需等OST时间20ms。
注解:当 Bit2
被为设定为 "0" 内部振荡与外部振荡只有一种振荡会 Enable.
当 Bit2 被为设定为 "1" 内部振荡与外部振荡会同时 Enable, 而外部振荡模式强设为 LF type .
Bit3 为设定外灌 clock模式, PA4/osc2 pin会被强制为 I/O 无法作 clock output,
当 Bit3 & Bit0 同时被设定为 "1", 内部振荡将会停止, IC 的系统 clock 必须由PA5/OSC1 pin 直接给脉波才能动作 .
例子 : 改振荡器为外部振荡器 (振荡器从OPTION中选择类型)
BSR
LDWI
STWR
BCR
STATUS, PAGE ; 设置页 1
01H
10H
; 设置W数据为 01H
; 存储 01H 到寄存器90H (INOSCR)
STATUS, PAGE ; 设置页 0
; 设置页 1
; 设置W数据为 01H
; 存储 01H 到寄存器90H (INOSCR)
; 设置页 0
对应的16进制码是:
0A83
;BSR STATUS, 5 3A01 ;LDWI 01H
1190 ;STWR 10H
STATUS, 5 0283 ;BCR
2、PIC16F630 的 /MCLR 功能可以通过烧录选项设置,而 MDT10F630 的 /MCLR 功能须选用
MDT10F630P13 or MDT10F630S13
包装,则外部/MCLR的封装。无法通过烧录选择。
3、MDT10F630 无 Brown-out 功能。
4、其它使用方式一样。二、PIC16F630烧录档转成MDT10F630
由于两者设置内外部振荡器的方法不同,MDT需要用90H来设置振荡方式,而PIC16F630的90H是用来校正内部频率的,有的程序90H会被设一些值,有的无任何设置。所以PIC16F630烧录档转至10F630时,需要特别注意90H的设置。
如果有ASM档,在ASM档里按10F630规格修改90H值,再重新编译则可。
如果只有烧录档,就需要想办法把设置90H的指令加进去或修改原烧录档中90H的参数。
下面举例说明将设置90H参数加到烧录档里:
烧录档16F630。HEX,要求用外部振荡455K,则LF振荡模式。
步骤:1、 用MDT烧写器软件打开16F630。HEX,反编译:
2、保存反编译文档:
3、用WORD打开反编译文档,查找10H,注意当STATUS,5=1时,10H就是90H,有的10H不是表示寄存器而是地址或立即数,要注意辩认。
4、该程序查找的结果是没有对90H设置的,按MDT10F630规格书要求:LF需要将90H设为00001101B,则0DH,所以先找ROM中没有写代码的地方,如地址380H,将把指令填在此处。
5、开始填写指令,用鼠标双击需要填写的地方,弹出对话框,我们需要在380H填指令,所以在MCU复位地址0000H处先填上LJUMP 380H,则如下图对话框中的2B80,使程序跑到380H处。
6、再到380H处,填上如下数据,则
BSR
STATUS,5 ;
LDWI 0DH ;STWR 10H ;BCR STATUS,5 ;
LJUMP 200H ;千万别忘了,跳回原本应复位的地址200H
7、反编译检查填写无误后,保存成MDT烧录档,如上图。
8、最后再提醒一下,如果原代码中有设置90H的,修改原设置参数则可;有多处设置90H的(一般不会出现),则只保留上电复位时的设置,其它的设置删掉。