You are on page 1of 3

#include <mega8535.

h>
#include <delay.h>
#asm
.equ_i2c_port=0x12;PORTD
.equ_sda_bit=1
.equ_scl_bit=0
#endasm
#include <i2c.h>
#include <ds1307.h>
unsigned char countdown [32] =
{0x86,0xBF,0x6F,0x7F,0x07,0x7D,0x6D,0x66,0x4F,0x5B,0x06,0x3F,0x4F,0x5B,0x06,0x3F
,0x86,0xBF,0x6F,0x7F,0x07,0x7D,0x6D,0x66,0x4F,0x5B,0x06,0x3F,0x4F,0x5B,0x06,0x3F
};
unsigned char control [32]=
{0xE1,0xE1,0xE1,0xE1, 0xD2,0xD2,0xD2,0xD2,
0xB4,0xB4,0xB4,0xB4, 0x78,0x78,0x78,0x78,
0xE1,0xE1,0xE1,0xE1, 0xD2,0xD2,0xD2,0xD2,
0xB4,0xB4,0xB4,0xB4, 0x78,0x78,0x78,0x78};
unsigned char jam, menit, detik;
int pul1,pul2,pul3,pul4,sat,nyala;
void kontrol ()
{
rtc_get_time(&jam,&menit,&detik);
if ((jam==13)&&(menit==31))
{
if(menit<31)
{
PORTC=0x1F;
PORTA=0x00;
PORTC=0x00;
PORTB=0x00;
delay_ms(60000);
}
}
}
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0xFF;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;

TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
//Timer/Counter 2 initialization
//Clock source : System Clock
//Clock value: Timer 2 bstopped
//Mode: Normal top=FFh
//OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
//External Interrupt(s) initialization
//INT0: off
//INT1: off
//INT2: off
MCUCR=0x00;
MCUCSR=0x00;
//Timer(s)/Counter(s) Interrupt(s)
TIMSK=0x00;
//Analog Comparator initialization
//Analog Comparator: off
//Analog Comparator Input Capture by Timer/Counter 1: off
ACSR=0x80;
SFIOR=0x00;
//inisialisasi RTC
i2c_init();
rtc_init(0,0,0);
//Pengesetan waktu dan tanggal saat ini
rtc_set_time(13,31,00);
rtc_set_date(13,7,11);
//Kondisi normal
while(1)
{
rtc_get_time(&jam,&menit,&detik); //Baca jam
sat=0
pul1=0;
pul2=0;
pul3=0;
pul4=0;
nyala=0;
for(nyala=0,pul1=0,pul2=4,pul3=8,pul4=12;//Pengesetan angka awal

nyala<32,pul1<10,pul2<20,pul3<24,pul4<28;//Pengesetan angka akhir


nyala++,pul1++,pul2++,pul3++,pul4++)
kontrol(); //Pemanggilan sub rutin
//Kontrol penyalaan tampilan 1,2,3 dan 4
for(sat=2;sat<12;sat++)
{
PORTA=countdown[sat];
delay_ms(1000);
PORTC.4=1;
delay_us(5);
PORTC.4=0;
PORTA=countdown[pul1];
PORTC.0=1;
delay_us(5);
PORTC.0=0;
PORTA=countdown[pul2];
PORTC.1=1;
delay_us(5);
PORTC.1=0;
PORTA=countdown[pul3];
PORTC.2=1;
delay_us(5);
PORTC.2=0;
PORTA=countdown[pul4];
PORTC.3=1;
delay_us(5);
PORTC.3=0;
PORTB=control[nyala];
}
}
};
}

You might also like