// Night Runner PIC16F630 Version.1.0 // Copyright (c) 2012 IQ Company Limited All Right Reserved #define _XTAL_FREQ 4000000 #include #include __CONFIG(FOSC_INTRCIO&WDTE_OFF&MCLRE_OFF); #define OFF 15 #define LW1 14 #define LW2 13 #define MD1 9 #define MD2 7 #define HIG 0 // LED Pattern const unsigned char pat[38][9] = { { OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF }, { OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF }, { OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF }, { MD2,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF }, { HIG,MD2,OFF,OFF,OFF,OFF,OFF,OFF,OFF }, { HIG,HIG,MD2,OFF,OFF,OFF,OFF,OFF,OFF }, { HIG,HIG,HIG,MD2,OFF,OFF,OFF,OFF,OFF }, { MD2,HIG,HIG,HIG,MD2,OFF,OFF,OFF,OFF }, { MD1,MD2,HIG,HIG,HIG,MD2,OFF,OFF,OFF }, { LW2,MD1,MD2,HIG,HIG,HIG,MD2,OFF,OFF }, { LW1,LW2,MD1,MD2,HIG,HIG,HIG,MD2,OFF }, { OFF,LW1,LW2,MD1,MD2,HIG,HIG,HIG,MD2 }, { OFF,OFF,LW1,LW2,MD1,MD2,HIG,HIG,HIG }, { OFF,OFF,OFF,LW1,LW2,MD1,MD2,HIG,HIG }, { OFF,OFF,OFF,OFF,LW1,LW2,MD1,MD2,HIG }, { OFF,OFF,OFF,OFF,OFF,LW1,LW2,MD1,MD2 }, { OFF,OFF,OFF,OFF,OFF,OFF,LW1,LW2,MD1 }, { OFF,OFF,OFF,OFF,OFF,OFF,OFF,LW1,LW2 }, { OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,LW1 }, { OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF }, { OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF }, { OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF }, { OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF,MD2 }, { OFF,OFF,OFF,OFF,OFF,OFF,OFF,MD2,HIG }, { OFF,OFF,OFF,OFF,OFF,OFF,MD2,HIG,HIG }, { OFF,OFF,OFF,OFF,OFF,MD2,HIG,HIG,HIG }, { OFF,OFF,OFF,OFF,MD2,HIG,HIG,HIG,MD2 }, { OFF,OFF,OFF,MD2,HIG,HIG,HIG,MD2,MD1 }, { OFF,OFF,MD2,HIG,HIG,HIG,MD2,MD1,LW2 }, { OFF,MD2,HIG,HIG,HIG,MD2,MD1,LW2,LW1 }, { MD2,HIG,HIG,HIG,MD2,MD1,LW2,LW1,OFF }, { HIG,HIG,HIG,MD2,MD1,LW2,LW1,OFF,OFF }, { HIG,HIG,MD2,MD1,LW2,LW1,OFF,OFF,OFF }, { HIG,MD2,MD1,LW2,LW1,OFF,OFF,OFF,OFF }, { MD2,MD1,LW2,LW1,OFF,OFF,OFF,OFF,OFF }, { MD1,LW2,LW1,OFF,OFF,OFF,OFF,OFF,OFF }, { LW2,LW1,OFF,OFF,OFF,OFF,OFF,OFF,OFF }, { LW1,OFF,OFF,OFF,OFF,OFF,OFF,OFF,OFF }, }; int duty[9]; void pwm(int count); void main(void) { GIE = 0; // Interrupt disable TRISA = 0b11000000; // GPIO-A dirction TRISC = 0b11000000; // GPIO-C dirction PORTA = 0b00000000; PORTC = 0b00000000; while(1) { for(int i=0;i<38;i++) { for(int j=0;j<9;j++) { duty[j] = pat[i][j]; } pwm(25); } } } // Software PWM void pwm(int count) { char pa,pc; for ( int i=0; i