Převod programu z PIC16F874 na PIC16F874A

zdravim
co zmenit v programu nebo kofig. slove u 874A u programu psanem pro874,
samozdrejme nefunguje
dik za rady
pavel

:arrow_right: administrator: přejmenováno z "program z PIC16F874 na PIC16F874A"

sami nezda ze by nemalo ist…nedas sem kod ?

tu to je
takovy moc rozpracovany
PIC_874.asm (6.94 KB)

nastav si pojistky na A

[code]; Configuration Bits

_CP_ALL EQU H’1FFF’
_CP_OFF EQU H’3FFF’
_DEBUG_OFF EQU H’3FFF’
_DEBUG_ON EQU H’37FF’
_WRT_OFF EQU H’3FFF’ ; No prog memmory write protection
_WRT_256 EQU H’3DFF’ ; First 256 prog memmory write protected
_WRT_1FOURTH EQU H’3BFF’ ; First quarter prog memmory write protected
_WRT_HALF EQU H’39FF’ ; First half memmory write protected
_CPD_OFF EQU H’3FFF’
_CPD_ON EQU H’3EFF’
_LVP_ON EQU H’3FFF’
_LVP_OFF EQU H’3F7F’
_BODEN_ON EQU H’3FFF’
_BODEN_OFF EQU H’3FBF’
_PWRTE_OFF EQU H’3FFF’
_PWRTE_ON EQU H’3FF7’
_WDT_ON EQU H’3FFF’
_WDT_OFF EQU H’3FFB’
_RC_OSC EQU H’3FFF’
_HS_OSC EQU H’3FFE’
_XT_OSC EQU H’3FFD’
_LP_OSC EQU H’3FFC’
[/code]

a skus vypnout komparatory, pak by to mohlo jit

komparatory snad vyple, cofiguracni slove je uz v pohode
programator me ho umoznuje nastavovat rucne,
ale PROGRAM stale NEBEZI
-komparatory jsem doufam vypl timto nastavenim:

  • CMCON --0000 0111–
  • CVRCON --0000 0000–

Pojistky je lepsi si zapsat do kodu, pak na ne nezapomenes ci nespletes, komparatory staci vypnout CMCON --0000 0111, bezelo ti to s tou 874 ?

pokud to nefunguje tak budes muset zjistit jestly MCU bezi, jestly to mas dobre zapojeny nebo nekde nakou “botu”, popripade co to dela / nedela, ne/reaguje …

r_W EQU RAM+30 ;—H’70’----tyhle reg umistni do spol adres casti!!!------

TAk toto na 070h urcite nemas umiestene max tak na 03Eh tak ze ktym veciam nemozes pristupovat z hociktorej banky len z banky0

A na tuto vec pozor !!! ADDWF PCL,F
RETLW B’11000000’ ;=0.
RETLW B’11111001’ ;=1.
RETLW B’10100100’ ;=2.

tieto riadky musia byt fyzicky ulozene v takej casti flash picka kde nedojde k pretceniu. tj napr od adresy org 10 a pocet moznych skokov bude 255-10=245 inak moze to blbnut vypliva to z toho ze citač a register PCL je len 256 bitovy

vecsinou som to riesil ako podprogram a vsunul za inicializaciu… tj inicializacia portou atd zabrala takych 25 riadkou a zvysok sa da lvyuzit na toto. Okrem ze to blbo vyzera lebo to tam akosi nasledovne nepatri ale funguje to.

ten program me na 874 jede
je presne pod 256B v ROM

s touhle instrukci
RETLW B’11000000’ ;=0.
RETLW B’11111001’ ;=1.
RETLW B’10100100’ ;=2.
byla potiz pri programu vetsim nez 256B v ROM
protoze tabulku jsem mel umistnenou v dolni casti ROM
do ted jsem o tomhle nevedel
takze hned jsem si ju premistil na 800h

ted jsem se trapil z 874A
problem s programatorem - zatim nejde

jeste nevi presne jak funguje prepinani bank u 874 pri pristupu do RAM(do definovanych registru)
u 16F84 jsem nic takoveho neresil
jen vim ze 877 ma poslednich 16 reg. mapovanych do vsech 4stranek?
nevim jak 874 poslednich 16 reg jestli jsou mapovany do 2stranek ?

je nutne prepinat banky pri cteni z reg. def. v RAM v 2bance?

ptam se jak neznalek ale mam v ruce jen CHIPON I a II z KTE tam to neni
dik pavel

ano spodnych 16 je mozne pristupovat z kazdej zo 4 baniek. Pre ostatne registre a ram sa myusis prepnud do danje banky…