Sari la conținut
ELFORUM - Forumul electronistilor

Cel mai simplu cod pt PIC16F84A


XName

Postări Recomandate

Am studiat un cod de afisare pt 2 digiti cu led.

Si nu inteleg aceasta parte a codului:

DisplayOut   call   LedTable         ;Take a mask for a digit   movwf  LEDportB         ;Set the mask for a digit   ...   RETURNLedTable   addwf  PCL,f   retlw  b'00111111'    ;mask for digit 1   retlw  b'00000110'    ;mask for digit 2   retlw  b'01011011'    ;mask for digit 3   ...   retlw  b'00000000'    ;no digit
Dupa cum stiu eu RETLW = Întoarcere dintr-un subprogram cu constantă în W dar aici in cod cand se apeleaza LedTable dupa mine este normal la urmatoare linie dupa addwf sa iasa inapoi in DisplayOut

Ce logica au celelalte retlw pe care niciodata nu va ajunge sa le execute??????

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

Top autori în acest subiect

  • XName

    23

  • CristianC

    10

  • cirip

    8

  • Abram Burel

    6

Top autori în acest subiect

PCL reprezinta program counter. Daca adaugi o valoare la el vei obtine un salt egal cu valoarea adaugataIn cazul tau: Daca wreg=0 executa urmatoarea instrDaca wreg=1 sare o instr.Daca wreg=2 sare 2 instr.Daca wreg=3 sare 3 instr..........

Link spre comentariu

Inca o dilema?Daca eu imi fac un macro MACRO_Xiar aceasta este secventa de codbtfsc variabila, 2MACRO_Xaddlw ...Ce se intampla in acest caz? daca bitul respectiv este 1 atunci va executa macro_x dar adaca acesta este 0 va sarii la addlw, sau doar o linie din macro?

Link spre comentariu

Daca e 1 va executa incepand cu prima linie din macro, iar daca e 1 incepand cu a doua :)La generarea codului macroul e substituit cu secventa lui.Ca sa execute codul "macro" sau instructiunea urmatoare, macroul trebui transformat in rutina si aceasta apelata cu un call dupa btfsc.

Link spre comentariu

Daca programul meu ruleaza main si face niste instructiuni din bank1, iar in acel moment apare o intrerupere. Cand se va executa intrerupere in ce bank se va afla ??

Link spre comentariu

Tot acolo :) Ai doua variante: ori blochezi intreruperile pe perioada accesului la BANK1, ori ai grija sa salvez/restaurezii STATUS-ul cu bank cu tot. Probabil a doua varianta e "state of the art".

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