37,6 → 37,16 |
#endif |
|
#ifdef _SPI2_V2 |
TRISAbits.TRISA0 = 0; // CLK |
TRISAbits.TRISA1 = 0; // DAT |
TRISAbits.TRISA2 = 0; // LE |
TRISAbits.TRISA3 = 0; // OE |
|
LATAbits.LATA0 = 0; // CLK |
LATAbits.LATA1 = 0; // DAT |
LATAbits.LATA2 = 1; // LE |
LATAbits.LATA3 = 0; // OE |
|
RPOR0 = 10; // CLK |
RPOR1 = 9; // DATA |
OpenSPI2(SPI_FOSC_4, MODE_00, SMPMID); |
47,14 → 57,20 |
led_driver_data(0); |
} |
|
void led_driver_clock() { |
#ifdef _SPI2_V1 |
void led_driver_clock() { |
LATAbits.LATA1 = 0x1; // Simple clock output toggle |
Nop(); |
LATAbits.LATA1 = 0x0; |
Nop(); |
#endif |
#ifdef _SPI2_V2 |
LATAbits.LATA0 = 0x1; // Simple clock output toggle |
Nop(); |
LATAbits.LATA0 = 0x0; |
Nop(); |
#endif |
} |
#endif |
|
void led_driver_data(char val) { |
#ifdef _SPI2_V1 |
69,9 → 85,7 |
#endif |
|
#ifdef _SPI2_V2 |
LATAbits.LATA0 = 0x0; |
WriteSPI2(val); |
LATAbits.LATA0 = 0x1; |
#endif |
} |
|
82,6 → 96,7 |
// Determine right character (1s digit) |
tmp = data % 10; |
switch (tmp) { |
#ifdef _SPI2_V1 |
case 0: |
led_last_value |= 0x0D70; |
break; |
112,11 → 127,45 |
case 9: |
led_last_value |= 0x0770; |
break; |
#endif |
#ifdef _SPI2_V2 |
case 0: |
led_last_value |= 0x0EB0; |
break; |
case 1: |
led_last_value |= 0x0280; |
break; |
case 2: |
led_last_value |= 0x0670; |
break; |
case 3: |
led_last_value |= 0x06E0; |
break; |
case 4: |
led_last_value |= 0x0AC0; |
break; |
case 5: |
led_last_value |= 0x0CE0; |
break; |
case 6: |
led_last_value |= 0x0CF0; |
break; |
case 7: |
led_last_value |= 0x0E80; |
break; |
case 8: |
led_last_value |= 0x0EF0; |
break; |
case 9: |
led_last_value |= 0x0EE0; |
break; |
#endif |
} |
|
// Determine left character (10s digit) |
tmp = data / 10; |
switch (tmp) { |
#ifdef _SPI2_V1 |
case 0: |
led_last_value |= 0xE00D; |
break; |
147,13 → 196,58 |
case 9: |
led_last_value |= 0x600F; |
break; |
#endif |
#ifdef _SPI2_V2 |
case 0: |
led_last_value |= 0xB007; |
break; |
case 1: |
led_last_value |= 0x1004; |
break; |
case 2: |
led_last_value |= 0x7003; |
break; |
case 3: |
led_last_value |= 0x7006; |
break; |
case 4: |
led_last_value |= 0xD004; |
break; |
case 5: |
led_last_value |= 0xE006; |
break; |
case 6: |
led_last_value |= 0xE007; |
break; |
case 7: |
led_last_value |= 0xB004; |
break; |
case 8: |
led_last_value |= 0xF007; |
break; |
case 9: |
led_last_value |= 0xF006; |
break; |
#endif |
} |
|
#ifdef _SPI2_V1 |
led_driver_data(led_last_value & 0x00FF); |
led_driver_data((led_last_value & 0xFF00) >> 8); |
#endif |
#ifdef _SPI2_V2 |
led_driver_data((led_last_value & 0xFF00) >> 8); |
led_driver_data(led_last_value & 0x00FF); |
#endif |
} |
|
void led_driver_show_last() { |
#ifdef _SPI2_V1 |
led_driver_data(led_last_value & 0x00FF); |
led_driver_data((led_last_value & 0xFF00) >> 8); |
#endif |
#ifdef _SPI2_V2 |
led_driver_data((led_last_value & 0xFF00) >> 8); |
led_driver_data(led_last_value & 0x00FF); |
#endif |
} |