; tohle je komentar. Co je za strednikem, to se nepreklada LIST P=PIC16F1708 ; typ procesoru, PRED include #include p16F1708.inc ; nacucne uvedeny file ; podivejte se, co je v nem ; najdeme ho v C:\Program Files (x86)\Microchip\MPLABX\v3.15\mpasmx code ; tady zacina kod programu POC1 equ 0x71 __CONFIG _CONFIG1, _WDTE_OFF ; vypiname WatchDog org 0 ; org nasledujici instrukce je na adrese ..... goto start ; sem si dejte breakpoint org 4 retfie ; navrat z preruseni, zatim nic - naucime se pozdeji start: ; ZACATEK equ tabulka + 0x8000 #define ZACATEK ( 0x8000 + tabulka) ; proste k tomu pricteme pulku rozsahu 16 bitu ; a tim zajistime 1 na 15.tem bitu nop ; sem dat breakpoint nop nop ; predpokladame znalost neprimeho adresovani - konventional ; a take linearniho neprimeho adresovani nop nop banksel FSR0L clrf FSR0L movlw 0x20 movwf FSR0H ; do registru FSR0 jsme nacpali cislo 0010 0000 0000 0000 ; tedy 0x2000 ; touto adresou zacina linearni mod adresovani ; adresa 0x2000 neexistuje, je to fiktivni adresa ; dale je to velmi jednoduche. ; cela programova pamet EEPROM (FLASH) se zrcadli ; do fiktivni pameti RAM, ktera zacina na adrese 0x8000 ; tedy od poloviny rozsahu 16 bitu ; z pameti programu se da jenom cist ; a cte se jenom dolnich 8 bitu ze 14 bitu programoveho slova movlw low ZACATEK movwf FSR1L movlw high ZACATEK movwf FSR1H ; podivat do Watch , co jsme nacpali do FSR movlw konectab - tabulka movwf POC1 cyk1: moviw FSR1++ ; mov indirect to w movwi FSR0++ ; cpeme to do pameti RAM ; mov w to indirect ; to, co je v pameti programu ; kopirujeme linearne do RAM ; divame se do File Registers decfsz POC1 ; a dale do View- Watch FSR0 POC1 goto cyk1 nop ; ay vas prestane bavit mackat F7 , dejte si sem Breakpoint nop ; a udelejte F5 nop ; goto $ nop tabulka: db 0,0x41 ; 2 byte se nacpou do jednoho slova v PROGRAM mem ; - do jedne instrukce db 0xff,0x42 ; 2 byte se nacpou do jednoho slova ; truncated - vyssi byte se urizne db 0, 0x45,0,0x46,0,0x47 ; a lze i takto de 1,2,3,4,5,6 ; tohle nacpe jeden byte do jednoho programoveho slova ; tedy 1byte do 14ti bit; bunky pameti EEPROM de "To je dneska hezky ! " ; uklada ASCII kod pismenek do pameti ; takze de je ta direktiva, kterou budeme nejcasteji pouzivat dw 0x1234 , 0x3123, 0xffff , 0xfedc dtm "AHOJ Tomasi ! Jak se mas ? To je krasne, jak ten procesor funguje " ; dtm vyrabi instrukce movlw ; ale to nam muze byt uplne jendo, protoze pouzivame jenom ; dolnich 8 bitu ; podivejte se nejdrive na ; Window - Pic Memory Views - Program Memory ; ve sloupci Label najdeme ; tabulka a konectab ; a ujasnime si, co ,jak a kam se uklada ; MPLAB se pokousi prelozit zpatky kod na instrukce ; toho si nevsimejte db "ABCDEFG" ; opet 2 byte do 1 slova, ; vyssi se urizne, licha se doplni 0 ; ulozi se ASCII hodnota pismenek konectab: nop end ; end znamena "a tady prestan prekladat" ; NENI !!!! to konec programu pro PICa, ; ve funkcnim PICovi ZADNY KONEC PROGRAMU neni, musi to stale neco delat ; end equ code define org navesti jsou prikazz pro PREKLADAC, ; tedy pro program, ktery ze slov dela instrukce (cisla !!!! ) ; proto take po techto instrukcich nenajdete ; ve hex file ani stopy