#include "p24FJ128GA306.h" // zatim tady nejsou zadne fuses, takze vsechno je default // zejmena : FRC oscilator, Watchdog enabled - !!!!! Musi se vypnout v UP void main (void) { int i; typedef unsigned char BYTE; typedef unsigned int WORD; typedef unsigned long DWORD; i = 10; ODCB = 0; ODCC = 0; ODCD = 0; ODCE = 0; ODCF = 0; ODCG = 0; /* ona je tam defaultne 0, takze je to trochu nadbytecne porty NEBUDOU se otevrenym kolektorem */ PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0; PORTG = 0; /* az dame nektery pin vystupni, aby bylo jasne, jaka hodnota tam bude */ ANSB = 0x0004; /* 0000 0000 0000 0100 */ /* vstup pro prevodnik je analogovy */ TRISB = 0xF2F5; /* xxxx 0010 1111 0101 - viz file porty.xls , d8le i pro ostatn9 tris */ TRISC = 0xFFFF; /* tento port je nepouyitelny - krystaly */ TRISD = 0xFF0F; /* 1111 xxxx 0000 111x piny 15 - 12 tam nejsou, ale do registru neco zapsat musime a bity 3 -1 jsou zatim s otaznikem, ale nastavenim jako vstup nic nezkayime */ TRISE = 0xF0; /* odvodte si zami */ TRISF = 0xFC; TRISG = 0xFF7F; /* chceme blikat s diodou LED1 v intervalu 1sec použijem TMR1 4000000 / 1 = 4000000 , tímto číselm musíme dělit. Zkusíme dát děličku na 256 4000000 / 256 = 15625, tohle číslo dáme do PR1 */ PR1 = 15625; TMR1 = 0; T1CON = 0x8030 ; /* 1x0x xxxx x011 xx0x */ /* citace 4 a 5 nastavime jako jeden 32-bitovz citac. nechame blikat LKED s periodou 5 sekund, a nebudeme pouzivat u citace delicku. 4MHz musime vydelit: 4000000 / 0,2 = 20000000 20000000D DEC je 1312D00 HEX ulozime tedy 0x131 do PR3 , a 0x2D00 do PR2 */ PR2 = 0x2D00; PR3 = 0x0131; T2CON = 0x8008; /* 1x0x xxxx x000 1x0x */ while(1) { /* citac TMR1 nastavuje pri svem vynulovani bit T1IF v registru IFS0 ten sice slouyi hlavne pro volani preruseni, ale muzeme ho take klidne testovat - viz dale. */ if( IFS0bits.T1IF ) { PORTDbits.RD4 = !PORTDbits.RD4 ; /* Blikame s LED1 1x ya 1 sec */ IFS0bits.T1IF = 0; /* sem si dejte breakpoint, pustte si StopWatch a podivejte se na cas */ } if( IFS0bits.T3IF ) { PORTDbits.RD5 = !PORTDbits.RD5 ; /* Blikame s LED2 1x za 5sec */ IFS0bits.T3IF = 0; /* sem si dejte breakpoint, pustte si StopWatch a podivejte se na cas */ } } /* od while */ } // zaviraci zavorka od main