; Priklad na nastaveni PPS ; na pinu 11 nastavujeme vystup vnitrniho oscilatoru ICa .include "p33EV32GM002.inc" .bss ; sekce pro definici bunek - EQU prvnibunka: ; prvnibunka 0x1000 - zacatek pameti RAM .space 2 ; vznwech 2 bunky druhabunka: ; druhabunka 0x1002 .space 2 tretibunka: ; tretibunka 0x1004 .text ; sekce pro psani programu ; na zacatku zdrojaku jsme defaultne v sekci .text .global __reset .org 0 ; opet je to relativni oproti zacatku uzivatelske EEPROM __reset: ; tedy relativni oproti adrese 0x0200 BCLR INTCON2, #GIE ; zakazuji prerusení clr ANSELA clr ANSELB clr PORTA clr PORTB mov #0xffff, W0 mov W0, TRISA mov W0, TRISB bclr TRISB,#4 ; tady bude vystup Fosc bclr TRISB,#3 ; tady bude vystup UART2 ; **************** tady zacina nastavovani PPS ; OSCCONL (low byte) Unlock Sequence MOV #OSCCONL, w1 ; !!!! Tady zapisujeme CISLO do registru, adresu registru ; OSCCON do registru W1, tedy císlo 0x0742 MOV #0x46, w2 MOV #0x57, w3 MOV.B w2, [w1] ; Write 0x46 MOV.B w3, [w1] ; Write 0x57 ; povoleni zapisu do registru PPS BCLR OSCCON, #6; Clear IOLOCK bit - muzeme psat do registru pro PPS ; tady dale se nastavi vsechy registry pro PPS mov #0x10 , W0 mov.b WREG , RPINR19L ; vstup pro UART2 mov #0x11 , W0 mov.b WREG , RPINR3L ; vstup T2CLK mov #0x3, W0 mov.b WREG , RPOR0H ; vystup UART2 mov #0x31, W0 mov.b WREG , RPOR1L ; vystup REFCLKO ;OSCCONL (low byte) Lock Sequence MOV #OSCCONL, w1 MOV #0x46, w2 MOV #0x57, w3 MOV.B w2, [w1] ; Write 0x46 MOV.B w3, [w1] ; Write 0x57 ; zakazani zapisu do jakzchkoli registru pro PPS BSET OSCCON, #6; set IOLOCK bit nemuzeme psat do registru pro PPS ; ****** tady skoncilo nastavovani PPS mov #0x8000, W3 mov W3, REFOCON ; nutno nastavit pro umozneni vystupu Fosc ; tohle uz nepatri k PPS, ale musi se to nastavit, aby vzstup hodinoveho signalu opravdu fungoval ; REFOCON viz cast oscilator ; a tady nastavite vsecno dalsi, co potrebujete ; NEJDRIVE se nastavuje PPS, POTOM se zapisuje do konfiguracnich registru periferii ; nezapomente, ze mate zakazana preruseni , pokud potrebujete, pustte si je cyklus: nop nop ; sem prijde to, co se v programu nop ; dela stale porad dokolecka nop goto cyklus .end ; tady prestan prekladat ; !!!!!! end NENI !!!!!! konec programu