CLOCK C CODE.txt

(4 KB) Pobierz
#include <16F877A.h>
#fuses XT,NOWDT,PUT,NOBROWNOUT,NOLVP
#use delay(clock = 4000000)
#byte PORTA=0X05
#byte PORTC=0x07
#byte PORTB=0X06
#define A0 PIN_A0
#define A1 PIN_A1
#define A2 PIN_A2
#define A3 PIN_A3
#define A4 PIN_A4

 int sec1,sec2,min1,min2,hour1,hour2;

int counter=125;
int flag=0;


const int table[10]={0b11000000,
			   0b11111001,
			   0b10100100,
			   0b10110000,
			   0b10011001,
			   0b10010010,
			   0b10000010,
			   0b11111000,
			   0b10000000,
               0b10010000};

void main()
{
PORTB=0X00;
PORTC=0X00;


set_tris_a(0xff);
set_tris_c(0x00);
set_tris_b(0x00);
set_RTCC(6);
setup_counters(RTCC_INTERNAL,RTCC_DIV_32);
enable_interrupts (INT_RTCC);
enable_interrupts (GLOBAL);

for(;;)
{
PORTB=table[sec1];
PORTC=0X01;
delay_ms(2);

PORTB=table[sec2];
PORTC=0x02;
delay_ms(2);

PORTB=table[min1];
PORTC=0x04;
delay_ms(2);

PORTB=table[min2];
PORTC=0x08;
delay_ms(2);

PORTB=table[hour1];
PORTC=0x10;
delay_ms(2);

PORTB=table[hour2];
PORTC=0x20;
delay_ms(2);



if(flag==1){


            flag=0;
            }
   
 




if(input(A0)==0)  
        {
              disable_interrupts(INT_RTCC);
             if(input(A1)==0){
                             delay_ms(250);
                            if(++min1>9)       {
                                min1=0;
                             
                                           if(++min2>5)  { 
                                                min2=0; 
                                                         }
                                               }
                                     
                           }
             if(input(A2)==0){
                                            delay_ms(250); 
                                             if( ++hour1>9 ){                                                          
                                                         hour1=0; 
                                                         ++hour2;
                                                            }
                                               if( (hour2==2) & (hour1>3) )  {
                                                                 sec1=0;
                                                                 sec2=0;
                                                                 min1=0; 
                                                                 min2=0; 
                                                                 hour1=0; 
                                                                 hour2=0;
                                                                             }     
                                                   
                           }
          }
else if(input(A0)==1){
            enable_interrupts(INT_RTCC);
               }
    }
 }



 #int_RTCC
void microII()

{                            //void switch_time();
if(--counter>0)return;
counter=125;
flag=1;


if(++sec1>9){
   sec1=0;
            
   if(++sec2>5){
       sec2=0;
                     
       if(++min1>9){
           min1=0;
                             
            if(++min2>5){
                min2=0; 
                                      if( ++hour1>9 )
                                                            {
                                                         hour1=0; 
                                                         ++hour2;
                                                            }
                                               if( (hour2==2) & (hour1>3) )  {
                                                                 sec1=0;
                                                                 sec2=0;
                                                                 min1=0; 
                                                                 min2=0; 
                                                                 hour1=0; 
                                                                 hour2=0;
                                                                             }                
                                                                     
                                                                                       
                         }
                     }
                } 
           }


 }  






   
Zgłoś jeśli naruszono regulamin