This project uses a hardware timer (see Timer1 Operation) to flash LED1 on and off. For more details on how to control the LED see Parallel I/O (PIO) Ports.
Project files: timer3.zip.
timer3.c01: /* timer3.c
02: *
03: * Use timer1 to blink an LED
04: */
05:
06: #include <plib.h>
07:
08: void wait();
09:
10: #define LED1 BIT_0 // LED1 is connected to RD0
11:
12:
13: int main()
14: {
15: int i;
16: mPORTDSetPinsDigitalOut(LED1); /* Make LED1 output */
17: mPORTDClearBits(LED1); /* Turn off LED1 on startup */
18: while (1) {
19: mPORTDToggleBits(LED1); /* Toggle LED1 */
20: wait();
21: }
22: return 0;
23: }
24:
25: void wait()
26: {
27: const int DLY = 36000;
28: T1CON = 0x30; // turn timer off and set prescaller to 1:256
29: TMR1 = 0;
30: PR1 = 0xFFFF;
31: T1CONSET = 0x8000; // start timer
32: while (TMR1 < DLY) {
33: // just wait
34: }
35: T1CONCLR = 0x8000; // stop timer
36: }
I timed my LED over ten cycles and got 18.37 seconds. According to my calculation that is equivalent to a PB clock rate of 10.03 MHz.
Maintained by John Loomis, updated Sat Aug 02 16:35:37 2008