Friday, November 30, 2012

7 Segment increment by switch PIC18f4550

#include <18f4550 .h=".h">
#fuses HS, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
//#fuses HS, NOWDT
#use delay(clock=20MHz)


static int8 const led_table[20] =  
//      ----           seg A
//     |    |   seg F         seg B
//     |    |
//      ----           seg G
//     |    |   seg E         seg C
//     |    |
//      ----           seg D
//
// bit7 .. bit0  ==>>   seg  None,G,A,F,D,E,C,B

// TI Driver connections:
// OUT0 -> None
// OUT1 -> Seg G
// OUT2 -> Seg A
// OUT3 -> Seg F
// OUT4 -> Seg D
// OUT5 -> Seg E
// OUT6 -> Seg C
// OUT7 -> Seg B

{
0x40,    // 0
0x79,    // 1
0x24,    // 2
0x30,    // 3
0x19,    // 4
0x12,    // 5
0x02,    // 6
0x78,    // 7
0x00,    // 8
0x10,    // 9
0x08,    // A
0x03,    // b
0x46,    // C
0x21,    // d
0x06,    // E
0x0e,    // F
};



void main() {
int8 i=0;
while(1){
if( input(PIN_A5) ){
delay_ms(500);
if( input(PIN_A5) ){
if (i>15)
      i=0;
   SET_TRIS_D(led_table[i]);
   i=i+1;
}  
}
}
}