pic, assembler

Sekcia: Programovanie 05.07.2009 | 18:30
Avatar Grawp   Používateľ
Ucim sa programovat v assembleri az tohto tutorialu a neviem pochopit co robi tato subrutina: Delay movlw d'250'
movwf count1
d1 movlw 0xC7
movwf counta
movlw 0x01
movwf countb
Delay_0
decfsz counta, f
goto $+2
decfsz countb, f
goto Delay_0

decfsz count1 ,f
goto d1
retlw 0x00

end
Vie mi to niekto jednoducho vysvetlit? Hlavne neviem pochopit v decfsz instrukciach to 'f'. Z p16f628.inc include suboru som sa docital ze to je "F EQU H'0001'" co je tmr0 register.... atd...
mam v tom bordel.. vobec neviem co tym autor myslel.
    • Re: pic, assembler 06.07.2009 | 04:49
      ello   Návštevník
      oprav link tu
    • Re: pic, assembler 06.07.2009 | 16:36
      filodendron   Návštevník
      Vysledok niektorych instrukcii PIC procesora mozno ulozit bud do registra WREG, alebo do premennej. To, ze kam sa ma vysledok ulozit, urcuje parameter pouzity v zapise instrukcie.
      Instrukcia decfsz counta,f najskor odrata jednicku od obsahu premennej counta, pricom vysledok ulozi nazad do tej istej premennej. Podla vysledku sa potom procesor rozhodne, ci bude pokracovat v programe nasledujucou instrukciou, alebo ju preskoci.
      Instrukcia decfsz counta,w sa sprava takmer rovnako, ibaze vysledok ulozi do pracovneho registra WREG, t.j. hodnota premennej counta sa nezmeni, a vo WREG bude po skonceni instrukcie hodnota counta-1.
      • Re: pic, assembler 06.07.2009 | 17:36
        Avatar Grawp   Používateľ
        Dakujem.
        Ale chcel by som vedieť co je to za register - ten f. Lebo na zaciatku nebol vobec definovany v cblock-u tak som pozeral do toho include suboru a tam bola adresa toho F registra... a neviem co je zac.
        • Re: pic, assembler 06.07.2009 | 18:21
          filodendron   Návštevník
          Ten f je akoze ten register resp. premenna, ktora sa pouziva v danej instrukcii. To f iba oznacuje, kam sa ma ulozit vysledok. Moznosti su iba dve. Bud je tam f, a vtedy sa vysledok instrukcie ulozi do tej premennej, ktora sa pouzije v instrukcii, alebo tam moze byt w, a vtedy sa vysledok ulozi do registra WREG, co je specialny register (akumulator). Ak nie je v instrukcii pouzite ani w ani f, tak tam prekladac dosadi automaticky w. Kvoli prehladnosti je vsak lepsie to tam pisat.


        • Re: pic, assembler 06.07.2009 | 18:40
          filodendron   Návštevník
          Napriklad:
          decf count ,f znamena count = count - 1
          decf count ,w znamena WREG = count - 1
          • Re: pic, assembler 06.07.2009 | 22:05
            Avatar Grawp   Používateľ
            Ďakujem. Presne toto som potreboval!