#include <xc.h>
#define _XTAL_FREQ 4000000
// LCD bağlantıları
#define RS RC0
#define E RC1
#define D4 RC2
#define D5 RC3
#define D6 RC4
#define D7 RC5
// Sayaç değişkenleri
unsigned int sayac = 0;
unsigned int kesme_sayisi = 0;
// LCD fonksiyon prototipleri
void lcd_init();
void lcd_cmd(char cmd);
void lcd_yaz(char data);
void lcd_yaz_str(const char* str);
void lcd_gotoxy(char x, char y);
void lcd_clear();
// Interrupt yapılandırması
void interrupt ISR() {
if (TMR0IF) {
TMR0IF = 0;
TMR0 = 131; // 500 µs için TMR0 değeri (prescaler 1:4)
RB0 = !RB0; // Osiloskop sinyali
kesme_sayisi++;
if (kesme_sayisi >= 1000) { // 500 ms tamamlandı
kesme_sayisi = 0;
sayac++;
if (sayac > 99) sayac = 0;
lcd_gotoxy(0, 1);
lcd_yaz_str("SAYAC: ");
lcd_yaz((sayac / 10) + '0');
lcd_yaz((sayac % 10) + '0');
}
}
}
void timer0_init() {
OPTION_REG = 0b00000001; // Prescaler 1:4 (PS2:PS0 = 001)
TMR0 = 131;
INTCON = 0b10100000; // GIE ve TMR0IE aktif
}
void main() {
TRISB0 = 0; // RB0 çıkış
TRISC = 0; // LCD pinleri çıkış
lcd_init();
timer0_init();
// Açılış ekranı
lcd_gotoxy(0, 0);
lcd_yaz_str("YUNUS EMRE NAS");
lcd_gotoxy(0, 1);
lcd_yaz_str("G210101037");
__delay_ms(3000);
lcd_clear();
lcd_gotoxy(3, 0);
lcd_yaz_str("SUBU EEM");
lcd_gotoxy(0, 1);
lcd_yaz_str("SAYAC: 00");
while (1) {
// İşlem kesmede yapılır
}
}
I2luY2x1ZGUgPHhjLmg+CiNkZWZpbmUgX1hUQUxfRlJFUSA0MDAwMDAwCgovLyBMQ0QgYmHEn2xhbnTEsWxhcsSxCiNkZWZpbmUgUlMgUkMwCiNkZWZpbmUgRSAgUkMxCiNkZWZpbmUgRDQgUkMyCiNkZWZpbmUgRDUgUkMzCiNkZWZpbmUgRDYgUkM0CiNkZWZpbmUgRDcgUkM1CgovLyBTYXlhw6cgZGXEn2nFn2tlbmxlcmkKdW5zaWduZWQgaW50IHNheWFjID0gMDsKdW5zaWduZWQgaW50IGtlc21lX3NheWlzaSA9IDA7CgovLyBMQ0QgZm9ua3NpeW9uIHByb3RvdGlwbGVyaQp2b2lkIGxjZF9pbml0KCk7CnZvaWQgbGNkX2NtZChjaGFyIGNtZCk7CnZvaWQgbGNkX3lheihjaGFyIGRhdGEpOwp2b2lkIGxjZF95YXpfc3RyKGNvbnN0IGNoYXIqIHN0cik7CnZvaWQgbGNkX2dvdG94eShjaGFyIHgsIGNoYXIgeSk7CnZvaWQgbGNkX2NsZWFyKCk7CgovLyBJbnRlcnJ1cHQgeWFwxLFsYW5kxLFybWFzxLEKdm9pZCBpbnRlcnJ1cHQgSVNSKCkgewogICAgaWYgKFRNUjBJRikgewogICAgICAgIFRNUjBJRiA9IDA7CiAgICAgICAgVE1SMCA9IDEzMTsgLy8gNTAwIMK1cyBpw6dpbiBUTVIwIGRlxJ9lcmkgKHByZXNjYWxlciAxOjQpCgogICAgICAgIFJCMCA9ICFSQjA7IC8vIE9zaWxvc2tvcCBzaW55YWxpCgogICAgICAgIGtlc21lX3NheWlzaSsrOwogICAgICAgIGlmIChrZXNtZV9zYXlpc2kgPj0gMTAwMCkgeyAvLyA1MDAgbXMgdGFtYW1sYW5kxLEKICAgICAgICAgICAga2VzbWVfc2F5aXNpID0gMDsKICAgICAgICAgICAgc2F5YWMrKzsKICAgICAgICAgICAgaWYgKHNheWFjID4gOTkpIHNheWFjID0gMDsKCiAgICAgICAgICAgIGxjZF9nb3RveHkoMCwgMSk7CiAgICAgICAgICAgIGxjZF95YXpfc3RyKCJTQVlBQzogIik7CiAgICAgICAgICAgIGxjZF95YXooKHNheWFjIC8gMTApICsgJzAnKTsKICAgICAgICAgICAgbGNkX3lheigoc2F5YWMgJSAxMCkgKyAnMCcpOwogICAgICAgIH0KICAgIH0KfQoKdm9pZCB0aW1lcjBfaW5pdCgpIHsKICAgIE9QVElPTl9SRUcgPSAwYjAwMDAwMDAxOyAvLyBQcmVzY2FsZXIgMTo0IChQUzI6UFMwID0gMDAxKQogICAgVE1SMCA9IDEzMTsKICAgIElOVENPTiA9IDBiMTAxMDAwMDA7IC8vIEdJRSB2ZSBUTVIwSUUgYWt0aWYKfQoKdm9pZCBtYWluKCkgewogICAgVFJJU0IwID0gMDsgLy8gUkIwIMOnxLFrxLHFnwogICAgVFJJU0MgPSAwOyAgLy8gTENEIHBpbmxlcmkgw6fEsWvEscWfCgogICAgbGNkX2luaXQoKTsKICAgIHRpbWVyMF9pbml0KCk7CgogICAgLy8gQcOnxLFsxLHFnyBla3JhbsSxCiAgICBsY2RfZ290b3h5KDAsIDApOwogICAgbGNkX3lhel9zdHIoIllVTlVTIEVNUkUgTkFTIik7CiAgICBsY2RfZ290b3h5KDAsIDEpOwogICAgbGNkX3lhel9zdHIoIkcyMTAxMDEwMzciKTsKICAgIF9fZGVsYXlfbXMoMzAwMCk7CgogICAgbGNkX2NsZWFyKCk7CiAgICBsY2RfZ290b3h5KDMsIDApOwogICAgbGNkX3lhel9zdHIoIlNVQlUgRUVNIik7CiAgICBsY2RfZ290b3h5KDAsIDEpOwogICAgbGNkX3lhel9zdHIoIlNBWUFDOiAwMCIpOwoKICAgIHdoaWxlICgxKSB7CiAgICAgICAgLy8gxLDFn2xlbSBrZXNtZWRlIHlhcMSxbMSxcgogICAgfQp9Cg==
#include <xc.h>
#define _XTAL_FREQ 4000000
// LCD bağlantıları
#define RS RC0
#define E RC1
#define D4 RC2
#define D5 RC3
#define D6 RC4
#define D7 RC5
// Sayaç değişkenleri
unsigned int sayac = 0;
unsigned int kesme_sayisi = 0;
// LCD fonksiyon prototipleri
void lcd_init();
void lcd_cmd(char cmd);
void lcd_yaz(char data);
void lcd_yaz_str(const char* str);
void lcd_gotoxy(char x, char y);
void lcd_clear();
// Interrupt yapılandırması
void interrupt ISR() {
if (TMR0IF) {
TMR0IF = 0;
TMR0 = 131; // 500 µs için TMR0 değeri (prescaler 1:4)
RB0 = !RB0; // Osiloskop sinyali
kesme_sayisi++;
if (kesme_sayisi >= 1000) { // 500 ms tamamlandı
kesme_sayisi = 0;
sayac++;
if (sayac > 99) sayac = 0;
lcd_gotoxy(0, 1);
lcd_yaz_str("SAYAC: ");
lcd_yaz((sayac / 10) + '0');
lcd_yaz((sayac % 10) + '0');
}
}
}
void timer0_init() {
OPTION_REG = 0b00000001; // Prescaler 1:4 (PS2:PS0 = 001)
TMR0 = 131;
INTCON = 0b10100000; // GIE ve TMR0IE aktif
}
void main() {
TRISB0 = 0; // RB0 çıkış
TRISC = 0; // LCD pinleri çıkış
lcd_init();
timer0_init();
// Açılış ekranı
lcd_gotoxy(0, 0);
lcd_yaz_str("YUNUS EMRE NAS");
lcd_gotoxy(0, 1);
lcd_yaz_str("G210101037");
__delay_ms(3000);
lcd_clear();
lcd_gotoxy(3, 0);
lcd_yaz_str("SUBU EEM");
lcd_gotoxy(0, 1);
lcd_yaz_str("SAYAC: 00");
while (1) {
// İşlem kesmede yapılır
}
}