#include p16F88.inc bunka equ 31 pocitatko equ 30 #define bitik STATUS,0 #define str1 bsf STATUS,5 ; makro je sevreno mezi prikazy macro a endm ; misto skupiny pismenek prikladmakra se do ; programu tupe opise to, co jsem napsal ; mezi macro a endm prikladmakra macro movlw 25 movwf 32 incf 32 endm ; tohle je jenom priklad syntaxe, nehledejte v tom zadny ; semanticky smysl ; makro stranka je uz pouzitelne ; opravdu prepina stranky pameti ; cast programu mezi if a endif se pri prekladu opise pouze tehdy, ; kdyz je podminka splnena ; podminkz jsou v Cckove notaci, takze ; rovna se == nerovna se != a podobne stranka macro str if str == 3 bsf STATUS, RP0 bsf STATUS, RP1 endif if str == 2 bcf STATUS, RP0 bsf STATUS, RP1 endif if str == 1 bsf STATUS, RP0 bcf STATUS, RP1 endif if str == 0 bcf STATUS, RP0 bcf STATUS, RP1 endif if str > 3 Ty kretene, podivej se poradne na to cislo, ktere tam mas endif endm spatnenuluj macro pocit: equ 25 movlw 30 movwf pocit movlw 20 movwf FSR xx: clrf 0 incf FSR decfsz pocit goto xx endm nulujram macro od, do, pocit local xx ; navesti je lokalni v makru, takze makro muzeme volat vicekrat movlw do - od movwf pocit movlw od movwf FSR xx: clrf 0 incf FSR decfsz pocit goto xx endm ; pokud potrebujeme vice navesti, pak udelat local xx, zz, yy tabulka macro od, do local pomoc = od while pomoc <= do retlw #v(pomoc) pomoc++ endw endm ; pomoc++ je umyslne na zacatku stranky, i kdyz to nevypada hezky ; realne se z toho totiz dela opravdicke navesti ; a prekladac nema rad, kdyz jsou navesti ve 2. a dalsim sloupci ; zkuste pred nej dat dve tri mezery a prelozte to org 0 goto start org 4 retfie start: nop nop nop prikladmakra ; podivat do view - Program Memory, jak se to prelozilo nop nop prikladmakra nop nop prikladmakra nop nop nop navesti: stranka 0 ; podivejte se do listingu, jak se to prelozilo !!!! movlw 41 movlw .65 movlw "A" stranka 2 ; podivat do Listingu nebo nop ; do Program Memory, jak se makro překládá !!!! nop stranka 1 nop nop stranka 0 ; stranka 4 ; odkomentujte si stranka 4 a divejte se, co to udelalo movlw 25 movwf pocitatko movlw bunka movwf FSR cyk: movf bunka,0 movwf 0 incf FSR incf bunka incf bunka decfsz pocitatko goto cyk str1 bsf bitik stranka 1 movwf EEADR stranka 0 naxx1: spatnenuluj ; spatnenuluj ; odkomentujte a prelozte ! ; proc se prekladac bouri ? ; tupe to opisuje program, takze je tam navesti xx dvakrat nav01: ; navesti je zde proto, abyste se mohli "chytit" ; pri prohlizeni Program Memory - Symbolic nulujram 21, 30, 20 nop nop nop nav02: nulujram 60, 7f, 21 nop nop nop nop sem: ; A zase: Pdivejte se , jak se to preklada !!!!! tabulka 10, 20 ; bez pochopeni funkce je vam to nanic !!!!! tam: tabulka "A", "Z" goto $ end