7Segment 4Digit Timer
It continues from where it left the counter with a power outage. 99 hourse 99 minutes
Step 1: And Source Code
#include <16F628a.h> // Kullan?lacak denetleyicinin ba?l?k dosyas? tan?t?l?yor.
//#device high_ints=true
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES BROWNOUT //Reset when brownout detected
#FUSES NOMCLR //Master Clear pin used for Input
#FUSES NOCPD //No EE protection
#use delay(clock=4000000)
#use fast_io(a)
#use fast_io(b)
//#priority ext, timer0
/*
B7 E
B6 D
B5 C
B4 G
B3 B
B2 F
B1 A
B0 BO?
*/
#define display_1 pin_A0
#define display_2 pin_A1
#define display_3 pin_A2
#define display_4 pin_A3
#define buton pin_A7
int onlar = 0, yuzler = 0, binler = 0, birler=0, sayac=0;
int kayit=0;
//int16 resetle=0;
const int digit[10] = {0xD7, 0x42, 0xCD, 0xCB, 0x5A, 0x9B, 0x9F, 0xC2, 0xDF, 0xDB};
int i=0; // Tamsay? tipinde de?i?ken tan?mlan?yor
void eeprom_yaz()
{
write_eeprom(0,birler);
write_eeprom(1,onlar);
write_eeprom(2,yuzler);
write_eeprom(3,binler);
}
void eeprom_oku()
{
birler=read_eeprom(0);delay_ms(8);
onlar =read_eeprom(1);delay_ms(8);
yuzler=read_eeprom(2);delay_ms(8);
binler=read_eeprom(3);delay_ms(8);
}
/* //****************** INT Kesmesi *****************************
#int_ext
void ext_isr()
{
#use delay(clock=4000000)
eeprom_yaz();
}
*/
//****************** Timer0 Kesmesi *****************************
#int_timer0 // Timer0 kesmesi
void timer0_kesme () // Kesme fonksiyonu ismi
{
set_timer0(61); // TMR0 de?eri belirleniyor
i++; // i de?eri 1 artt?r?l?yor
if (i==10) //
output_high(pin_A6);
if (i==20) // i de?eri 20'ye e?itse ç?k??? lojik-1 olsun ve i de?eri s?f?rlans?n
{
output_low(pin_A6);
sayac++;
i=0;
}
}
void basla()
{
if(input(buton))
{
delay_ms(10);
while(input(buton))
{delay_ms(10);
onlar = 0;
yuzler = 0;
binler = 0;
birler=0;
i=0;
sayac=0;
}
}
if(sayac==60)
{
if(binler==9 && yuzler==9)
{
onlar = 0;
yuzler = 0;
binler = 0;
birler=0;
}
kayit++;
sayac=0;
birler++;
if(birler==10)
{
onlar++;
birler=0;
if(onlar==6)
{
yuzler++;
onlar=0;
if(yuzler==10)
{
binler++;
yuzler=0;
}
}
}
if(kayit==2)
{eeprom_yaz();kayit=0;}
}
output_low(display_4);
output_low(display_3);
output_low(display_2);
output_high(display_1);
output_b(digit[birler]);
delay_ms(1);
output_low(display_4);
output_low(display_3);
output_low(display_1);
output_high(display_2);
output_b(digit[onlar]);
delay_ms(1);
output_low(display_4);
output_low(display_2);
output_low(display_1);
output_high(display_3);
output_b(digit[yuzler]);
delay_ms(1);
output_low(display_3);
output_low(display_2);
output_low(display_1);
output_high(display_4);
output_b(digit[binler]);
delay_ms(1);
}
/********* ANA PROGRAM FONKS?YONU********/
void main ( )
{
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_timer_0(RTCC_INTERNAL |RTCC_8_BIT | RTCC_DIV_256); // Timer0 ayarlar? yap?l?yor
set_timer0(61); // TMR0 de?eri belirleniyor
set_tris_a(0b10010000);
set_tris_b(0b00000000);
output_a(0x00);
output_b(0x00); // B portu ç?k??? ilk anda s?f?rlan?yor
//ext_int_edge(L_TO_H);
//enable_interrupts(INT_EXT);
enable_interrupts(INT_timer0); // int_timer0 kesmesini aktif yapar
enable_interrupts(GLOBAL); // Aktif edilen kesmelere izin ver
eeprom_oku();
while(true) // Sonsuz döngü
{
basla();
}
}
Jul 27,2016
1,118 viewsReport item
- Comments(0)
- Likes(0)
You can only upload 1 files in total. Each file cannot exceed 2MB. Supports JPG, JPEG, GIF, PNG, BMP
0 / 10000