Sari la conținut
ELFORUM - Forumul electronistilor

Ajutor ..! PIC16F873 error message 152


a_sorien

Postări Recomandate

Arasez un cod assembler care da erroare la compilare 152 (Executable code and data must be defined in an appropriate section...!!!). list p=16f873 #include __CONFIG _CP_OFF& _WDT_OFF& _BODEN_OFF& _PWRTE_OFF& _XT_OSC& _WRT_OFF& _LVP_OFF& _CPD_OFF UDATA dc1 res 1 dc2 res 1 bcf STATUS,RP0 bsf STATUS,RP0 ;bank1 clrf ADCON1 clrf TRISA ;face toate porturile iesiri clrf TRISB clrf TRISC bcf STATUS,RP0 ;bank0 org 0x00 main bsf PORTB,7 ;F movlw b'110000' movwf PORTA ;V clrf PORTC ;port C ramane off call Delay05 ;pausa 05s movlw b'11000000' ;F+A movwf PORTB movlw b'110000' movwf PORTA ;V+E clrf PORTC call Delay05 ;pausa 05s movlw b'11100000' movwf PORTB ;F+A+R movlw b'10000000' movwf PORTC ;V+E+T call Delay05 ;pause 05s ...................... ......................Eroarea e pana in org 0x00 , dupa _config ...

Link spre comentariu
  • Răspunsuri 11
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • a_sorien

    5

  • deejay2k1

    3

  • Ashky

    1

  • Elef

    1

Top autori în acest subiect

de pe forumul microchip:

 

UDATA MYRANDOMNAME WREG_TEMP res 1  STATUS_TEMP res  1   BSR_TEMP res  1  UDATA ; need this line to tell linker you're back to normal, go-anywhere variables

in codul tau se pare ca utilizezi incorect UDATA

Link spre comentariu

Nu , ne merge ..!Am sters si udata si org si tot aceasi eroare..!Am acum o alta intrebare ; cum fac porturile A,B,C doar iesiri ..si cum il fac sa merarga fara comparatoare ..?! La acest tip de proc cum sunt porturile setate implicit..?!Dar comparatoarele..?!Am citi pe microchip si nu am gasit ..oare nu am avut rabdare..?!

Link spre comentariu

Am incercat si eu ....fara udata si fara org si fara wrt off ..dar nu vrea..!Si apoi declaratiile de initializare si functiile porturilor unde le fac..?Pentru delay unde rezerv spatiu ..?!Sau .....dc1 equ 20h ; dc2 equ 21h ...?Cu ce compilezi.,...?! nu cu mplab....?!

Link spre comentariu

Asta compileaza...! list p=16f873 #include __CONFIG _CP_OFF& _WDT_OFF& _BODEN_OFF& _PWRTE_ON& _XT_OSC& _WRT_OFF& _LVP_OFF& _CPD_OFF org 0x000 clrf PORTA ; Initialize port A clrf PORTB ; Initialize port B clrf PORTC ; Initialize port C bsf STATUS,RP0 ; RAM bank 1 clrf TRISA ; All pins port A output clrf TRISB ; All pins port B output clrf TRISC ; All pins port C output bcf STATUS,RP0 ;BACK TO BANK0 dc1 equ 21h dc2 equ 22h main bsf PORTB,7 ;F movlw b'110000' movwf PORTA ;V clrf PORTC ;port C ramane off call Delay05 ;pausa 05s movlw b'11000000' ;F+A movwf PORTB movlw b'110000' movwf PORTA ;V+E clrf PORTC call Delay05 ;pausa 05s movlw b'11100000' movwf PORTB ;F+A+R movlw b'10000000' movwf PORTC ;V+E+T call Delay05 ;pause 05s ............................... ............................ ........................... end

Link spre comentariu

Acu pricep si eu : cand am apelat "call Delay" de fapt am produs o intrerupere , a carei revenire se face cu retfie..! Merci..muult..!! Mai am mult pana reusesc si eu sa scriu programe coerente..!

Link spre comentariu

org 0x0 - spune asamblorului sa puna codul care urmeaza incepand de la adresa 0x0 - oarecum normal fiindca de acolo o sa inceapa uc-ul executia

 

Daca se folosesc interuperi atunci un program ar putea fi organizat in felul urmator in felul urmator:

org 0x0        goto Startorg 0x4        goto InterruptStart       .       .       call Sub       .       .       goto StartSub       .       .       returnInterrupt       .       .       .       retfie

La 16f interuperea are vectorul 0x4 - adica in momentul in care apare intreurperea uC se duce sa execute ceea ce gaseste la adresa 0x4.

Call nu produce interuperi ci doar apleaza o subrutina .Intoarcerea din subrutina se face in mod nermal cu return nu cu retfie(chiar nu ai nevoie sa activezi intreruperile la iesirea dintr-o subrutina)

Link spre comentariu
  • 2 luni mai târziu...

salut,am si eu problema avand in vedere ca nu am programat niciodata un pic16f873. acesta are valoare osccal ca si 12f675? intreb asta pentru ca cineva a programat un pic si a sters aceasta valoare daca ea exista. cum o recuperez? cu o clona pickit2?multumesc!

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări