Changes to hardware For pic16f876a instead of 870. PIC is pin-compatible. 876a has 8K of program memory, 870 has 2k, This should allow implementing of new functions. Can also port it to 877a, which has much more IO pins. LED display with common cathodes (CC) instead of common anodes. Same pinouts, so no changes to the circuit. Changes to firmware Updated description: ; 44 Ported to pic16f876a, added option for Common-Cathode display - by KPL Added another config parameter, INVERT_SEG: #define INVERT_A ; invert common pins of a display #define INVERT_SEG ; invert segment pins of a dsplay Changed controller definition and include file: list p=16f876A ; list directive to define processor #include P16F876A.INC ; processor specific variable definitions Updated file version: #define VERS 044 ;Version to display Corrected MAXMODE, to allow stopwatch #define MAXMODE 21 ;total operational modes - added stopwatch 23-6-2011 Added ifdef..else..endif constructs in two places, where PORTB is being accessed: #ifdef INVERT_SEG movlw ! 0BFh ;This means: movlw the complement of 0BFh #else movlw 0BFh #endif movwf PORTB #ifdef INVERT_SEG ; xorlw 0ffh ;invert #else xorlw 0ffh ;invert #endif movwf PORTB ;one possible segment line low KPL, 5FEB2012