#pragma CLOCK_FREQ 4000000 #pragma DATA 0x2007, 0x184 #include <system.h> // DEFINE OUPUT PINS IN USE char gp1 = 00000001b; char gp2 = 00000010b; char gp4 = 00000100b; char gp5 = 00010000b; char gp6 = 00100000b; // DEFINE DATA DIRECTION char trs1 = 11111100b; char trs2 = 11111001b; char trs3 = 11111010b; char trs4 = 11101110b; char trs5 = 11101101b; char trs6 = 11101011b; char trs7 = 11011110b; char trs8 = 11011101b; char trs9 = 11011011b; char trs10 = 11001111b; void Led(unsigned char num); void interrupt(void) { gpio = gp2; // LED9 FOR FEEDBACK clear_bit( intcon, GPIF ); // clear RB change flag } void main() { clear_bit( option_reg, 0 ); // set config INT_OSC_NO_CLK_OUT clear_bit( option_reg, 1 ); // " clear_bit( intcon, GIE ); // disable global interrupts delay_ms(10); set_bit( intcon, GIE ); // enable global interrupts set_bit( intcon, GPIE ); // enable RB change bit set_bit(iocb, IOC3); // Allow interrupt on GP3 // unsigned char i,j; trisio = 0x00; gpio = 0x00; delay_ms(100); LOOP: for (i = 1; i <= 3; i++) { // FIRST LOOP RUNS ONE WAY for (j = 1; j <= 20; j++) { Led(j); delay_ms(100); } // end for j } // end for i gpio = 0; delay_ms(255); for (i = 1; i <= 3; i++) { // FIRST LOOP RUNS ONE WAY for (j = 20; j >= 1; j--) { Led(j); delay_ms(100); } // end for j } // end for i gpio = 0; delay_ms(255); for (i = 1; i <= 3; i++) { // FIRST LOOP RUNS ONE WAY for (j = 1; j <= 20; j++) { Led(j); delay_ms(100); } // end for j for (j = 20; j >= 1; j--) { Led(j); delay_ms(100); } // end for j } // end for i gpio = 0; delay_ms(255); sleep(); goto LOOP; } // function lights chosen led void Led(unsigned char num) { switch (num) { case 1: { trisio = trs1; gpio = gp1; // LED1 break; } case 2: { trisio = trs1; gpio = gp2; // LED2 break; } case 3: { trisio = trs2; gpio = gp2; // LED3 break; } case 4: { trisio = trs2; gpio = gp4; // LED4 break; } case 5: { trisio = trs3; gpio = gp1; // LED5 break; } case 6: { trisio = trs3; gpio = gp4; // LED6 break; } case 7: { trisio = trs4; gpio = gp1; // LED7 break; } case 8: { trisio = trs4; gpio = gp5; // LED8 break; } case 9: { trisio = trs5; gpio = gp2; // LED9 break; } case 10: { trisio = trs5; gpio = gp5; // LED10 break; } case 11: { trisio = trs6; gpio = gp4; // LED11 break; } case 12: { trisio = trs6; gpio = gp5; // LED12 break; } case 13: { trisio = trs7; gpio = gp1; // LED13 break; } case 14: { trisio = trs7; gpio = gp6; // LED14 break; } case 15: { trisio = trs8; gpio = gp2; // LED15 break; } case 16: { trisio = trs8; gpio = gp6; // LED16 break; } case 17: { trisio = trs9; gpio = gp4; // LED17 break; } case 18: { trisio = trs9; gpio = gp6; // LED18 break; } case 19: { trisio = trs10; gpio = gp5; // LED19 break; } case 20: { trisio = trs10; gpio = gp6; // LED20 break; } default: { break; } } } // end Led(num)
Copyright © 2006 SourceBoost Technologies