CIPPOCIPPO Inserito: 23 maggio 2010 Segnala Share Inserito: 23 maggio 2010 salve a tutti, qualcuno mi può aiutare per risolvere un problema con la P16F59?ho creato un programmino per simulare un "contraves", compilo senza errori, tranne qualche warning, ma quando provo a simularlo il PCL ritorna a zero dopo poche linee.(ho cancellato le define per chiarezza, questo è il codice disassembly listing) 000 FFF XORLW 0xff 193: FLAG RES 1 194: 001 FFF XORLW 0xff 195: FLAGCOMPOUT RES 1 196: 002 FFF XORLW 0xff 197: PREIMUNITA RES 1 003 FFF XORLW 0xff 198: PREIMDECINE RES 1 004 FFF XORLW 0xff 199: PREIMCENTINAIA RES 1 005 FFF XORLW 0xff 200: PREIMMIGLIAIA RES 1 201: 006 FFF XORLW 0xff 202: PREIMUNITATEMP RES 1 203: 007 FFF XORLW 0xff 204: BUFFERUNITA RES 1 008 FFF XORLW 0xff 205: BUFFERDECINE RES 1 009 FFF XORLW 0xff 206: BUFFERCENTINAIA RES 1 00A FFF XORLW 0xff 207: BUFFERMIGLIAIA RES 1 208: 00B FFF XORLW 0xff 209: TEMPOPERSISTENZA RES 1 00C FFF XORLW 0xff 210: TEMPOPERSISTENZAtemp RES 1 00D FFF XORLW 0xff 211: TIMEOUTCOMPON RES 1 212: 00E C00 MOVLW 0 213: MOVLW b'00000000' 00F 005 TRIS 0x5 214: TRIS PORTA 215: 010 C7F MOVLW 0x7f 216: MOVLW b'01111111' 011 006 TRIS 0x6 217: TRIS PORTB 218: 012 CFF MOVLW 0xff 219: MOVLW b'11111111' 013 007 TRIS 0x7 220: TRIS PORTC 221: 014 CFF MOVLW 0xff 222: MOVLW b'11111111' 015 008 TRIS 0x8 223: TRIS PORTD 224: 016 C00 MOVLW 0 225: MOVLW b'00000000' 017 009 TRIS 0x9 226: TRIS PORTE 227: 228: 229: ;-------------------------------------------------------------------------; 230: ; RESET VALORI PREIMPOSTAZIONE 231: ;-------------------------------------------------------------------------; 232: 018 C00 MOVLW 0 233: MOVLW 0X00 019 022 MOVWF 0x2 234: MOVWF PREIMUNITA arrivato all'ultima linea nonostante il codice prosegua il PCL ritorna a zero.ho notato che se carico nel registro W un valore diverso da zero il PCL parte da quella cifra.grazie anticipatamente Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 23 maggio 2010 Segnala Share Inserita: 23 maggio 2010 (modificato) Non ho sottomano i registri del P16F59, ma ho la sensazione che la riga 234 carichi una costante nel PCL,quindi se carichi 0 resetti Modificato: 24 maggio 2010 da Livio Orsini Link al commento Condividi su altri siti More sharing options...
CIPPOCIPPO Inserita: 23 maggio 2010 Autore Segnala Share Inserita: 23 maggio 2010 si, quello "022" non mi è chiaro dove salti fuori.il datasheet è questohttp://ww1.microchip.com/downloads/en/DeviceDoc/41213D.pdfgrazie per l'attenzione Link al commento Condividi su altri siti More sharing options...
kappa47 Inserita: 24 maggio 2010 Segnala Share Inserita: 24 maggio 2010 Probabilmente, dal listato non si capisce, non dichiari dove inizia l’indirizzo delle variabile quindi l’assemblatore di default le fa partire da 0x00. Questo spiega “movwf premunita” infatti “premunita” e’ mappato all’indirizzo 2 (vedi riga 197).Ciao. Link al commento Condividi su altri siti More sharing options...
CIPPOCIPPO Inserita: 24 maggio 2010 Autore Segnala Share Inserita: 24 maggio 2010 il file Linker 16f59.lkr non dovrebbe evitare di assegnare manualmente le aree?Se provo ad assegnare gli indirizzi con la direttiva org mi da degli errori come questo:MPLINK 4.35, Linker Copyright (c) 1998-2010 Microchip Technology Inc. Error - file './CONTAPEZZI CON PREIMPOSTAZIONE.o', section '.org_2', performs a call to symbol 'VISUALIZZAMIGLIAIA' which is not in the lower half of a page. Errors : 1 Link step failed. sono giorni che provo in vari modi, ovviamente tutti sbagliati. Link al commento Condividi su altri siti More sharing options...
CIPPOCIPPO Inserita: 24 maggio 2010 Autore Segnala Share Inserita: 24 maggio 2010 ho risolto grazie all'aiuto di c1b8, il problema è appunto nelle aree che riservavo.bisogna usare la direttiva cblock CBLOCK 0AH FLAG : 1 FLAGCOMPOUT : 1 PREIMUNITA : 1 PREIMDECINE : 1 PREIMCENTINAIA : 1 PREIMMIGLIAIA : 1 PREIMUNITATEMP : 1 BUFFERUNITA : 1 BUFFERDECINE : 1 BUFFERCENTINAIA : 1 BUFFERMIGLIAIA : 1 TEMPOPERSISTENZA : 1 TEMPOPERSISTENZAtemp : 1 TIMEOUTCOMPON : 1 endc ORG 0x7FF ; processor reset vector errorlevel -306 ; disable page boundary message goto start errorlevel +306 ; enable page boundary message; ORG 0x000 ; PROGRAMMA ORG 0x000 start MOVLW b'00000000' TRIS PORTA ecc eccgrazie a tutti della disponibilità Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora