; tohle je komentar. Co je za strednikem, to se nepreklada #include p16F88.inc ; nacucne uvedeny file ; podivejte se, co je v nem bunka equ 31 pocitatko equ 30 ; skupina pismenek pocitatko ; ma hodnotu 30 ; kdykoli se v textu objevi ; pocitatko ; nahradi se cislem 30 ; #define pismenka jinapismenka ; define nahrazuje retezec pismenka retzezcem jinapismenka #define bitik STATUS,0 #define str1 bsf STATUS,6 #define bit0 STATUS, RP0 #define bit1 STATUS, 6 ; ********** NASTAVENI F U S E S ; a tohle nadefinuje fuses pro programovatko ; vsecnny potrebne konstanty jsou v include file, oddil ; Configuration Bits ; procesor ma dva konfiguracni registry, proto je to tam dvakrat ;Program Configuration Register 1 __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _MCLR_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_IO & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF ;Program Configuration Register 2 __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF ; pin 5 je nastaven jako I/O, ; Watchdog vypnut, používáme vnitřní oscilátor ; bude mozno pouzit in-circuit-debugger - _DEBUG_ON org 0 ; org nasledujici instrukce je na adrese ..... nop nop ; tohle NOP je tady kvuli in-circuit-debuggeru ; PICKIT2 - viz file pickit2_pouziti.doc - ; nebo datasheet 16F88 -kap. 15.14 goto start org 4 bcf PIR1, TMR2IF ; tady s periodou 65 ms incf PORTB decfsz pocitatko retfie movlw .15 movwf pocitatko comf PORTA nop ; tady s periodou 1 sec nop retfie start: bsf bit0 bcf bit1 banksel TRISB ; direktiva prekladace banksel vygeneruje sptravne nastaveni ; bitiku ve STATUS registru pro ten registr, ; ktery je napsan za za ni ; podivejte se do Wiew - Program Memory - instrukce pro ; nastaveni bitiku STATUS jsou tam DVAKRAT !!! ; jednou jsme je napsali my, podruje je udelela instrukce ; banksel ; samozrejme, budete to pouzivat jenom jednou, ; tady je to napsano tak, abyste videli, co to dela. ; dalsi vyhodou banksel je to,ze prekladac ; potom vi, ve ktere bance ma prepnutou pamet, a nebouri se ; - zakomentujte si banksel a podivejte se na Messages po prekladu movlw 00 ; 0110 0000 - port B skoro cely vystupni krome bitu 5 a 6 - movwf TRISB ; tam je PICKIT movlw 0f0 ; horni polovina portu A je vstupni, dolni vystupni movwf TRISA movlw 66 ; x110 x100 ; 4Mhz , z vnitrniho oscilatoru , frekvrnce 8MHz / 2 movwf OSCCON ; stranka 1 movlw 07 movwf CMCON ; vypinam komparatory clrf ANSEL ; nastavuji port A jako digitalni, vypinam prevodnik ; jeste vypinam registr ADCON0, ale ten je na strance 0 movlw .255 movwf PR2 ; registr periody pro citac PR2 bsf PIE1,TMR2IE ; poustim preruseni pro TMR2 bcf bit0 ; stranka 0 bcf ADCON0,ADON ; a cely modul A/D prevodniku vypinam ; T2CON je x111 111x napriklad ff postscaller deli 16 prescaller deli 16 citac zapnut movlw 0ff movwf T2CON clrf PIR1 ; pri jistotu nuluji vsechny pozadavky na preruseni clrf INTCON clrf PORTA ; muluji porty clrf PORTB movlw .15 movwf pocitatko bsf INTCON, PEIE ; a povoluji preruseni od periferii bsf INTCON, GIE ; finalne poustim preruseni smycka: nop nop movf PORTA,0 ; tohle je jenom kvuli predvedeni debugovani ; primo v obvodu - budou videt hodnoty, ; ktere privedeme zvenu ka pacicky nop goto smycka 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 define org navesti jsou prikazy pro PREKLADAC, ; tedy pro program, ktery ze slov dela instrukce (cisla !!!! ) ; proto take po techto instrukcich nenajdete ; v hex file ani stopy ; a take je samozrejme neuvidite ve Watch - Program Memory