Sari la conținut
ELFORUM - Forumul electronistilor

Ma chinui sa inteleg..!!


a_sorien

Postări Recomandate

Salutare !Rog pe cei care pot da explicatii clare si pentru "noobi " sa incerce .PROCESSOR 16f873a #INCLUDE __CONFIG _XT_OSC & _CP_OFF & _WDT_OFF & _LVP_OFF & _PWRTE_ONCBLOCK 0X23 COUNT1 COUNT2 PAT_COUNT SELECTORENDC ORG 0X00 GOTO MAIN ORG 0X04MAIN BANKSEL TRISB MOVLW 0X00 MOVWF TRISB BANKSEL PORTB MOVLW 0X00 MOVWF PORTB GOTO STARTDELAY MOVLW 0XFF MOVWF COUNT2L2 MOVLW 0XFF MOVWF COUNT1L1 DECFSZ COUNT1 GOTO L1 DECFSZ COUNT2 GOTO L2 RETURNPATTERN1 ADDWF PCL,1 RETLW 0X01 RETLW 0X02 RETLW 0X04 RETLW 0X08 RETLW 0X10 RETLW 0X20 RETLW 0X40 RETLW 0X80PATTERN2 ADDWF PCL,1 RETLW 0XFF RETLW 0X81 RETLW 0X42 RETLW 0X24 RETLW 0X18 RETLW 0X24 RETLW 0X42 RETLW 0X81 PATTERN3 ADDWF PCL,1 RETLW 0XFF RETLW 0XFF RETLW 0XA0 RETLW 0X50 RETLW 0X28 RETLW 0X14 RETLW 0X0A RETLW 0X05 RETLW 0XFF START MOVLW 0X00 CLRF SELECTOR CLRF PAT_COUNT START1 MOVF SELECTOR,W CALL PATTERN1 MOVWF PORTB CALL DELAY INCF SELECTOR INCF PAT_COUNT BTFSC PAT_COUNT,3 GOTO START2 GOTO START1START2 CLRF SELECTOR CLRF PAT_COUNTAGAIN2 MOVF SELECTOR,W CALL PATTERN2 MOVWF PORTB CALL DELAY INCF SELECTOR INCF PAT_COUNT BTFSC PAT_COUNT,3 GOTO START3 GOTO AGAIN2START3 CLRF SELECTOR CLRF PAT_COUNTAGAIN3 MOVF SELECTOR,W CALL PATTERN3 MOVWF PORTB CALL DELAY INCF SELECTOR INCF PAT_COUNT BTFSC PAT_COUNT,3 GOTO START GOTO AGAIN3 END

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

Top autori în acest subiect

  • a_sorien

    3

  • Elef

    1

  • costi002

    1

Top autori în acest subiect

Pai programelul asta aprinde niste leduri pe un port prin metoda intreruperilor...la care sa spun drept sunt deficitar , sau mai bine zis cum spun ei "lookup table ". As vrea ca cineva care a inteles sa aibe rabdare sa explice mai pe intelesul unui incepator cum vine treaba , iar exemplul aceste e cred cel mai bun . As dori un soi de tutorial ..pe acest exemplu . multumesc!

Link spre comentariu

Cred ca prin programelul ala nu sunt intreruperi( cel putin la prima vedere nu prea lar sa fie)Cu lookup tables ar trebui sa incepi prin a te uita ce face addwf(aduna continutl lui w cu continutul lui f cu posibilitatea de a stoca rezultatul in W sau in f - se gaseste explicatia pe unde pe la sfarsitul pdf-ului cu 16f87x)Deci instructiunea "addwf PCL,1" are rolul de a aduna PCL cu W si a stoca rezultatul in PCL PCL este jumatatea mai putin semnificativa a PC (program counter)In momentul cand cand aduni ceva la PC automat programul o sa sara la instructiunea care are adresa din PC(e explicat prin PDF-ul ala ce e cu "computed goto" si care ar fi restrictiile la utilizare).In cazul nostru PC este pe 13 biti si pt a putea fi adresat e "spart" in 2 bucati PCL si PCH(deh uC e pe 8 biti)PATTERN1ADDWF PCL,1RETLW 0X01RETLW 0X02RETLW 0X04RETLW 0X08RETLW 0X10RETLW 0X20RETLW 0X40RETLW 0X80Deci chestia asta ar face ce va de genu(evident consideram ca W contine o val de la 1 la 8)aduna un numar la PCL , sare la unul din retlw-urile alea de acolo(retlw - reintoarcere din subrutina cu o valoare scrisa in W) -- unde sare poti sa vezi in codul ala numarand instructiunele de dupa addwf PCL,1.Daca sa zice un w ai 4 instructiunea care va fi executata va fi RETLW 0x08

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