|
因为PIC16F716是FALSH工艺,且MDT2051又是完全兼容PIC16C711
PIC16F716资源又在PIC16C711上升级.所以
用PIC16F716开发MDT2051
PIC16F716比MDT2051多一些模块,所以在716复位后跳转到ROM的1024位置将不使用的模块关闭(方便于转成MDT2051时将其越过并去除),然后转到主程序执行。在RAM够用的情况下最好使用20H-4FH部分的空间,这样写好后的程序在转换过程中就不用移RAM;如果RAM不够用尽量使用10P716的5CH-6FH的部分代替2051的0CH-1FH部分。在使用A/D模块时,注意与A/D有关的标识位的不同,尽量用自己定义的量来写,以方便从716改到2051。
举例:
;//716 code
#define HAVED_AD PIR1,6
#define START_AD ADCON0,GO
ORG 0000H
GOTO CLOSE_NO_USED
ORG 04H
RETFIE
MAIN:
NOP
BSF STATUS,RP0
MOVLW 01H
MOVWF ADCON1
BCF STATUS,RP0
MOVWF ADCON0
NOP
LOOP:
NOP
BSF START_AD
BTFSS HAVED_AD
GOTO $-1
BCF HAVED_AD
NOP
NOP
GOTO LOOP
ORG 400H
CLOSE_NO_USED:
CLRF CCP1CON
CLRF T1CON
CLRF T2CON
GOTO MAIN
;//2051 code
;//716 code
#define HAVED_AD ADCON0,1
#define START_AD ADCON0,GO
ORG 0000H
GOTO MAIN
ORG 04H
RETFIE
MAIN:
NOP
BSF STATUS,RP0
MOVLW 01H
MOVWF ADCON1
BCF STATUS,RP0
MOVWF ADCON0
NOP
LOOP:
NOP
BSF START_AD
BTFSS HAVED_AD
GOTO $-1
BCF HAVED_AD
NOP
NOP
GOTO LOOP
ORG 400H
;CLOSE_NO_USED:
; CLRF CCP1CON
; CLRF T1CON
; CLRF T2CON
; GOTO MAIN
以上代码没有实测和使用,只是举个例子,以助理解。 |
|