Seven segment _2digit_anode For CSS Compiler

#include <16F877.h>
#device adc=8
#fuses NOWDT,HS, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use delay(clock=4000000)

#define sw_up    pin_a0  // SWITCH UP
#define sw_down  pin_a1  // SWITCH DOWN

INT8    COUNT,A,B;
int8    num[10] ={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//common anode
//int8  Segment[10] ={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F};//common cathode                         0    1    2    3    4    5    6    7    8      9         
                    //   0   1    2    3    4    5   6     7    8     9   
VOID HEX_BCD(INT8 VAL);

void main(){
  setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

    OUTPUT_LOW(PIN_E1);
    OUTPUT_LOW(PIN_E0);
    COUNT=0; 
WHILE(true){

  IF(!INPUT(SW_up))  {IF(COUNT++>99)COUNT=0; delay_ms(150);}
  IF(!INPUT(SW_down)){IF(COUNT --<1)COUNT=99;delay_ms(150);} 

        HEX_BCD(COUNT);
        OUTPUT_D(NUM[B]);   // nuoy
        OUTPUT_HIGH(PIN_E0);
        DELAY_MS(10);
        OUTPUT_LOW(PIN_E0);
        OUTPUT_D(NUM[A]);   // sib
        OUTPUT_HIGH(PIN_E1);
        DELAY_MS(10);
        OUTPUT_LOW(PIN_E1);
        DELAY_MS(200);
     }        
 }

VOID HEX_BCD(INT8 VAL)
{ A=0;B=0;
  WHILE(VAL>=10)
  {
   A++;
   VAL-=10;
  }
   B=VAL;
}

 

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter