Hazırlayan: Soner İL ve Ramazan ERYILDIZ Emeği geçen Kişilere Teşekkürler Giriş : PIC’ in kelime anlamı PERIPHERAL INTERFACE CONTROLLER giriş-çıkış işlemcisidir. İlk olarak 1994 yılında 16 bitlik ve 32 bitlik büyük işlemcilerin , giriş ve çıkışlarındaki yükü azaltmak ve denetlemek amacıyla çok hızlı ve ucuz bir çözüme ihtiyaç duyulduğu için geliştirilmiştir.
Biz projemizde 16f877 kullanarak baskı devre matkabı yapıyoruz. Devremizin çalışması iki aşamada incelenebilir. Bunlardan birincisi bilgisayardan delinecek noktaların koordinatları alınıyor ve ikinci bölümde ise step motorlar yardımıyla baskı devre plaketinin delinmesi gerçekleştiriliyor.
Bilgisayardan verilerin gönderilmesinde bitamptan kordinatlara dönüşüm yapan bir C++ programı kullanılıyor
PIC Bellek Organizasyonu: PIC 16C7X ailesi 8K*14 program bellek alanını adresleyebilen bir 13 bit program sayacına sahiptir. Her bir elemanın kullandığı program bellek miktarı aşağıda listelenmiştir.8K dan daha düşük program bellekli bu elemanlarda fiziksel olarak kullanılan adresin üstünde, bir yere erişmek çakışmaya neden olur. Sıfırlama vektörü (reset vector) 0000h ve kesme vektörü 0004h üzerindedir.
Tablo3.2 Program belleği adres aralığı
Veri Bellek Organizasyonu : Veri bellek genel amaçlı registerlar ve özel fonksiyonlu registerlar (kaydediciler) olarak çoklu bankalara bölünmüştür. RP1 ve RP0 bitleri banka seçim bitleridir.
RP1:RP0 (Durum <6:5>)
00 => Bank0
01 => Bank1
10 => Bank2
11 => Bank3
Her banka 7Fh’ a kadar uzamaktadır.(128 bayt). Her bankanın bir altındaki yer, özel fonksiyonlu kaydediciler için ayrılmıştır. Özel fonksiyonlu register’ların üzerinde Statik RAM olarak kullanılan Genel Amaçlı Register’lar vardır. Bütün kullanılan bankalar özel fonksiyonlu register’lar içerir. Bazı “ yüksek kullanımlı “ özel fonksiyonlu register’lar kod redüksiyonu (indirgenmesi) ve daha hızlı bir erişim için bir bankadan başka bir bankaya yansıtılır.
Projede kullanilan genel amaçlı kayıtçılar
Status kaydı (status register) : STATUS kaydı ALU`nun aritmetik statüsünü, RESET statüsünü ve veri belleğinin küme seçim bitini içermektedir. Herhangi bir kayıtla olduğu gibi, STATUS kaydı herhangi bir komut için hedef olabilir. Eğer STATUS kaydı, Z, DC, veya C bitini etkileyen komutun hedefiyse, o zaman bu üç bit üzerine yazma etkinsizleştirilmiş durumdadır. Bu bitler aygıtın lojik durumuna göre uygun olarak kurulmuş veya silinmiştir. Daha ötesinde, TO ve PD bitleri yazılabilir bit değillerdir. Böylece, hedef STATUS kayıtlı komutların sonuçları tasarlanandan farklı olabilir.
Örneğin, CLRF STATUS` komutu yukarı üç biti temizleyerek Z bitini kuracaktır. Bu STATUS kaydından 000u uluu olarak çıkacaktır. (u=değişmeyen). STATUS kaydını değiştirmek için yalnızca BCF, BSF, SWAPF ve MOVWF kullanılmaktadır. Çünkü bu komutlar hiçbir statüs bitini etkilememektedir.
Not1: IRP ve RP1 (STATUS<7:6) bitleri bu entegreler tarafından kullanılmamaktadır ve silindiği gibi programlanmalıdır. Bu bitlerin genel amaçlı R/W bitleri olarak kullanılması tavsiye edilmemektedir, çünkü bu gelecekteki ürünlerle yüksek uyumluluğunu etkileyebilmektedir. Not2: Çıkartmalarda, C ve DC bitleri ödünç alan ve sayısal ödünç alan bitler olarak çalışmaktadır. Örnek için SUBLW ve SUBWF komutları incelenebilir.
Şekil 3.2 : Status Kaydı (O3h, 83h Adresi)
NOT:
R= Okunabilir Bit
W= Yazılabilir Bit
U= Uygulanmayan Bit, “0” olarak okunur
N= POR resetindeki değer.
Bit 7:IRP: Kayıt kümesi seçim biti (dolaylı adresleme için kullanılır. )
Bit 6-5:RP1:RPO: Kayıt kümesi seçim bitleri (doğrudan adresleme için kullanılır)
Bit 4:TO= Zaman Aralığı Biti
1= Güç kaynağı yükseltiminden sonra, CLRWDT veya SLEEP komutu
0= WDT zaman aralığı biti meydana gelmektedir.
Bit 3:PD: Güç Alçaltılması Biti
1= Güç yükseltiminden sonra veya CLRWDT komutu ile
0= SLEEP komutunun yürütülmesi ile
Bit 2 :Z: Sıfır Bit
1= Aritmetik veya mantıksal işlemin sonucu sıfırdır.
0= Aritmetik veya mantıksal işlemin sonucu sıfır değildir.
Bit 1:DC: Rakam geçirmesi/ ödünç alan say biti (ADDWF ve AALW komutu)
1= Ortaya çıkan sonucun 4.düşük düzeninden yürütme.
0= Sonucun 4.düşük düzeninden hiç yürütme yoktur.
Bit 0 :C: Geçirme/ ödünç alma biti (ADDWF ve ADDLW komutları)
1= Meydana gelen sonucun en önemli bitinden yürütme
0= Ortaya çıkan sonucun en önemli bitinden hiç yürütme yoktur.
Not: Çıkartma işlemi, ikinci verinin ikili bütünleri ilave edilerek yürütülmektedir. (RRF, RLF) komutların yürütülmesi için, bu bit, kaynak kaydındaki düşük veya yüksek düzenli biti ile yüklenmektedir.
Option_reg kaydı ( seçmeli kaydedici) : Option_reg registeri, TMR0/WDT prescaler, harici INT kesme, TMR0 ve PORTB’ de zayıf çekmenin konfigüre edildiği çeşitli kontrol bitlerinin olduğu, yazılabilir ve okunabilir registerdir. 81h adresinde bulunmaktadır.
Şekil 3.3 : Option kaydı( 81h, 181h Adresi)
Bit7: : PORTB pull-up’ını (yukarı çekme), aktifleme biti.
1: PORTB’yi yukarı seviyeye çekme pasiftir.
0: PORTB’yi yukarı seviye çekme işlemi portun kilit değeri ile birlikte aktiftir.
Bit6: INTEDG: Kenar kesme seçme biti.
1= RB0/INT pinine yükselen kenarda kesme gönderilir.
0= RB0/INT pinine düşen kenarda kesme gönderilir.
Bit5: TOSC: TMR0 Clock kaynağı seçme biti.
1= RA4/TOCKI pininde değişim olur.
0= İç komut çevrim clok’u (CLKOUT) seçilir.
Bit4: T0SE: TMR0 Kenar başlangıcı seçme biti.
1= RA4/T0CKI pini yüksek seviyeden düşük seviyeye geçer
0= RA4/T0CKI pini düşük seviyen yüksek seviye geçer.
Bit3: PSA: Bölümleme (prescale) görev biti.
1= WDT’yi prescaler olarak atar.
0= T.mer0 modülünü prescaler olarak atar.
Bt2-0: PS2:PS0:Prescaler oranını seçme biti.
1= WDT’yi prescaler olarak atar.
0= T.mer0 modülünü prescaler olarak atar.
Bt2-0: PS2:PS0:Prescaler oranını seçme biti.
Intcon kaydı (register) : INTCON Register, bütün kesme bayrakları için çeşitli enable bitlerini içeren okunabilir ve yazılabilir registerdir. 0Bh ve 8Bh adreslerinde bulunmaktadır.
Şekil 3.4 : INTCON kaydı( 0Bh, 8Bh,10Bh,18Bh Adresi)
Bit 7: GIE: Ortak kesme aktifleme biti.
1= Tüm kesmeleri aktifler.
0=Tüm kesmeleri pasifler.
Bit 6: PEIE: Arabirim kesme aktifleme biti.
1= Tüm arabirim kesmelerini aktifler.
0= Tüm arabirim kesmelerini pasifler.
Bit5: T0IE: TMR0 taşma kesmesi aktifleme biti
1=TMR0 kesmesini aktif duruma getirir.
0=TMR0 kesmesini pasif duruma getirir.
Bit4: INTE: RB0/INT Harici kesme aktifleme biti.
1= RB0/INT pini harici kesmesini aktif duruma getirir.
0= RB0/INT pini harici kesmesini pasif duruma getirir.
Bit3: RBIE: RB port değişimi kesmesini aktifleme biti
1=RB port değişim kesmesini aktifler.
0= RB port değişim kesmesini pasifler.
Bit2: T0IF:TMR0 taşması kesme bayrak biti.
1= TMR0 register’ı taşar(yazılımda temizlenmiş olmalıdır).
0= TMR0 register’ında0 taşma olmaz.
Bit1: INTF: RB0/INT harici kesme bayrak biti.
1=RB0/INT pininde harici kesme olur( yazılımda temizlenmiş olmalıdır).
0= RB0/INT pininde harici kesme oluşmaz.
Bit0: RBIF: RB port değişimi kesme bayrak biti.
1=RB7: RB4 pinlerinden en az biri durum değiştirir.
0= RB7:RB4 pinlerinden hiç biri durum değiştirmez.
INDF ve FSR Kayıtçıları : INDF registeri fiziksel bir register değildir. INDF registerinin adreslemesi dolaylı adresleme olacaktır. Dolaylı adresleme INDF registerini kullanarak mümkün olmaktadır. INDF registerini kullanan herhangi bir komut, gerçekte FSR (FileSelect Register (Dosya seçme registeri)) tarafından işaret edilen registere erişir. INDF registerinin kendisi okunduğunda dolaylı olarak (FSR=0) 00h değeri okunacaktır. INDF registerine yazıldığında dolaylı olarak, işlem-yok sonucuna yol açar. (Buna rağmen durum bitleri etkilenir).
Kesmeler : Kesme, harici olayların normal yazılım akışını kesebilmesine izin verdiğinden mikroişlemciler için çok faydalı bir özelliktir. Bu , belirli bir amaç için bir kodun çalıştırılmasına yol açar. Örneğin iletişim yazılımlarında girdi pininden bir kesme yazılımın gelen verinin kodunu çözmesine neden olur.
INT Kesmesi : RBO/INT deki dış Kesmelerin sınırları trigger edilmiştir. Bu sınırlar eğer INTEDG biti kuruluysa (seçenek Reg<6>) yükselmekte veya azalmaktadır, eğer INTENDG silinmiş ise RBO/INT pini üzerinde geçerli sınır ortaya çıktığı zaman, INTF biti (INTCON<1>) kuruludur. Bu Kesme INTE bitinin (INTCON ccp) kontrolünün temizlenmesi ile etkisizleştirilebilir.
INTF sinyal biti, bu Kesmenin yeniden aktifleştirilmesinden önce , Kesme Servis Programı tarafından yazılımdan silinmelidir. INT Kesmesi işlemciyi ilk başta, SLEEP’ e gidilecek şekilde kurulduğu taktirde SLEEP ten çıkarılabilir. GIE biti statüsü, işlemcinin SLEEP ten çıkışı takip eden Kesme vektörüne ayrılıp ayrılmayacağına karar verir.
ASEMBLER Kodları
LIST p=16f877 INCLUDE “P16F877.INC” ;CNC TEZGAHI #DEFINE DATA PORTC #DEFINE KES PORTB,0 #DEFINE X0SW PORTB,1 #DEFINE Y0SW PORTB,2 #DEFINE Z0SW PORTB,3 #DEFINE ZSSW PORTB,4 #DEFINE ZASW PORTB,5 #DEFINE LCDEN PORTB,6 #DEFINE KESEN PORTB,7 #DEFINE XMOTY PORTD,0 #DEFINE YMOTY PORTD,2 #DEFINE XMOTCP PORTD,1 #DEFINE YMOTCP PORTD,3 #DEFINE ZMOTY PORTD,4 #DEFINE ZMOTEN PORTD,5 #DEFINE DELMOT PORTD,6 #DEFINE LCDRS PORTD,7 #DEFINE LCD PORTA #DEFINE ERROR PORTA,4 #DEFINE WORK PORTA,5 #DEFINE BASBUT PORTE,0 #DEFINE BASLED PORTE,1 #DEFINE MESGUL PORTE,2 #DEFINE INTFLUG INTCON,1 COPY EQU 0X7F XOLD EQU 0X7E YOLD EQU 0X7D XNEW EQU 0X7C YNEW EQU 0X7B INDF EQU 0X00 OPTI EQU 0X81 INDEX1 EQU 0X7A INDEX2 EQU 0X79 TMRIN1 EQU 0X78 TMRIN2 EQU 0X77 org 0x0003 goto BASLA org 0x0004 goto KESME BASLA BSF STATUS,7 ;DOLAYLI ADRESLEMEDE 2VE4. BANK CLRF PORTA CLRF PORTB CLRF PORTC CLRF PORTD CLRF PORTE BSF STATUS,RP0 CLRF TRISA ; LCD için boş bırakıldı MOVLW 0X3F ;BUTONLAR LAMBA VE KESMEDE KULL. MOVWF TRISB ;(KESME İZİN UCU) MOVLW 0XFF ;BİLGİSAYARDAN GELEN DATA PİNLERİ MOVWF TRISC ;BU PORTA BAĞLANACAK CLRF TRISD ;MOTOR SÜRME MOVLW 0X01 MOVWF TRISE MOVLW b’00001111’ MOVWF OPTI BCF STATUS,RP0 CLRF COPY CLRF XOLD CLRF YOLD CLRF XNEW CLRF YNEW MOVLW 0X8F MOVWF FSR MOVLW b’10010000’ MOVWF INTCON BSF KESEN ;PC KESMESİNE İZİN VER ....????? DON BTFSS BASLED GOTO DON BCF INTCON,7 ;KESME İPTAL.....????? CALL BTCONT BCF BASLED BSF WORK ;DELİNİYOR.......?????? CALL ZERO CALL ZAYAR CALL OKU1 CLRF XOLD CLRF YOLD CLRF XNEW CLRF YNEW BCF WORK MOVLW 0X8F MOVWF FSR BSF INTCON,GIE BSF KESEN GOTO DON KESME BCF KESEN BCF INTCON,INTF BSF MESGUL ;ÇIKARKEN SIFIR YAPILACAK BTFSC FSR,7 GOTO ART_KONT ;FSRYİ ARTIR VE KONTROL ET ARTDO CALL CHANG MOVF DATA,0 MOVWF INDF COMF INDF,0 BTFSC STATUS,Z GOTO CALIS BCF MESGUL BSF KESEN RETFIE ART_KONT INCF FSR,1 MOVF FSR,0 SUBLW 0XF0 BTFSS STATUS,Z GOTO ARTDO CALIS BSF BASLED BCF MESGUL RETFIE CHANG BTFSS FSR,7 GOTO SIFIR BCF FSR,7 RETURN SIFIR BSF FSR,7 RETURN ZAYAR BCF ZMOTY BCF ZMOTEN BTFSC Z0SW RETURN BSF ZMOTEN NOP NOP NOP GOTO ZAYAR OKU1 MOVLW 0X0F MOVWF FSR OKU BCF FSR,7 MOVF FSR,W SUBLW 0X6F BTFSC STATUS,Z RETURN INCF FSR,F MOVF INDF,W MOVWF XNEW BSF FSR,7 MOVF INDF,W MOVWF YNEW COMF XNEW,W BTFSC STATUS,Z RETURN GIT BCF XMOTY MOVF XOLD,W SUBWF XNEW BTFSC STATUS,C BSF XMOTY CALL XFIND BCF YMOTY MOVF YOLD,W SUBWF YNEW BTFSC STATUS,C BSF YMOTY CALL YFIND DEL BSF DELMOT BSF ZMOTY BSF ZMOTEN BTFSS ZSSW GOTO DEL BCF ZMOTEN BAK BTFSS ZASW GOTO BAK CALL B1S CALL ZAYAR GOTO OKU XFIND MOVF XOLD,W SUBWF XNEW BTFSC STATUS,Z RETURN MOVLW 0X3D ;HER 0,05 İNCH İÇİNMOTOR ADIM SAY. MOVWF INDEX1 AAAA BSF XMOTCP CALL B3MS BCF XMOTCP CALL B3MS DECFSZ INDEX1,F GOTO AAAA INCF XOLD,1 BTFSC XMOTY GOTO XFIND DECF XOLD,F DECF XOLD,F GOTO XFIND YFIND MOVF YOLD,W SUBWF YNEW BTFSC STATUS,Z RETURN MOVLW 0X3D ;MOTOR ADIM SAYISI MOVWF INDEX1 BBBB BSF YMOTCP CALL B3MS BCF YMOTCP CALL B3MS DECFSZ INDEX1,F GOTO BBBB INCF YOLD,1 BTFSC YMOTY GOTO YFIND DECF YOLD,F DECF YOLD,F GOTO YFIND ZERO MOVLW 0XF0 MOVWF INDEX1 BSF XMOTY BSF YMOTY XXXX BSF XMOTCP BSF YMOTCP CALL B3MS BCF XMOTCP BCF YMOTCP CALL B3MS DECFSZ INDEX1,F GOTO XXXX BCF XMOTY BCF YMOTY CALL B1S XXX1 CALL B30MS BSF XMOTCP BSF YMOTCP CALL B30MS BTFSS X0SW BCF XMOTCP BTFSS Y0SW BCF YMOTCP BTFSS X0SW GOTO XXX1 BTFSS Y0SW GOTO XXX1 RETURN B196MS MOVLW 0XFF MOVWF TMRIN1 SS MOVLW 0XFF MOVWF TMRIN2 CCCC DECFSZ TMRIN2,1 GOTO CCCC DECFSZ TMRIN1,1 GOTO SS RETURN B1S MOVLW 0X05 MOVWF TMRIN1 CALL B196MS DECFSZ TMRIN1,1 GOTO B1S RETURN B30MS MOVLW 0X0A MOVWF TMRIN1 CALL B3MS DECFSZ INDEX1,1 GOTO B30MS RETURN B3MS MOVLW 0X06 MOVF TMRIN1 XXX3 MOVLW 0XB4 MOVWF TMRIN2 XXX2 DECFSZ TMRIN2,F GOTO XXX2 DECFSZ TMRIN1,F GOTO XXX3 RETURN BTCONT BTFSS BASBUT GOTO BTCONT RETURN END
Baskı Devre pcb Alt,üst görünüm
C++ Programı
#include <stdio.h> #include <conio.h> #include <dos.h> #include <stdlib.h> #include <string.h> char kor[2][952]; void bul (void); void kur (void); void topic (void); void yeni (void); main (){ clrscr (); bul (); kur (); topic (); clrscr (); printf ("\n\n\n\n\nbaski devre kordinatlari basari ile gonderildi...\n\n\ncikis icin bir tusa basiniz"); getche (); } void bul (void){ int x,y,a=0; int r,g,b; char str1[60],str2[60]; FILE *bmp,*ref,*h1,*h2; if (!(bmp=fopen ("c:\\soner\\son.bmp","r"))){ printf ("\n\ndosya bulunamadi veya dosya bozuk\a\n\ncikis icin bir tusa basiniz"); fcloseall(); yeni (); } if (!(ref=fopen ("c:\\soner\\son.b","r"))){ printf ("\n\ndosya bulunamadi veya dosya bozuk\a\n\ncikis icin bir tusa basiniz"); getche (); fcloseall(); exit (0);} if (!(h1=fopen("c:\\soner\\ramazan.db","w"))){ printf ("\n\ndisk uzerine yazilamiyor VEYA belirtilen yol bulunamadi\a\n\ncikis icin bir tusa basiniz."); getche (); fcloseall(); exit (0);} if (!(h2=fopen("c:\\soner\\soner.db","w"))){ printf ("\n\ndisk zerine yazilamiyor VEYA belirtilen yol bulunamadi\a\n\ncikis icin bir tusa basiniz."); getche (); fcloseall(); exit (0);} fgets (str1,53,bmp); fgets (str2,53,ref); if (strcmp ( str1 , str2)){ fcloseall (); yeni ();} fclose (ref); fseek(bmp,54,SEEK_SET); for (x=599;x>=0;x--){ for (y=0;y<900;y++){ r=fgetc (bmp); if (r==110 && g==120 && b==130){ kor[1][a]=x/5; kor[0][a]=y/5; a++; if (a>950){printf ("cok fazla kordinat\n\ncikis icin bir tusa basiniz."); getche (); exit (0);} fprintf (h1,"%d\t%d\n",x/5,y/5); fprintf (h2,"%c%c",x/5,y/5);} }} if (a<1){printf ("Islem yapilacak nokta bulunamadi\n\n\n\n\n\ €ikis icin bir tusa basiniz.");getche (); exit (0);} printf ("%d adet kordinat bulundu. \n\n\nDevam etmek icin bir tusa basiniz \n\n\t\t\tcikis icin ESC...",a); if (getche ()==27) {fcloseall();exit (0);} fcloseall(); } void kur (void){ char cev; unsigned int gecik=0; clrscr (); /*tek: gotoxy (1,1); printf ("Kopya sayisini giriniz. : \b\b\b\b\b\b\b\b\b\b\b\b"); scanf ("%d",©); if (copy<1 || copy>255){printf ("\n\ngirilen de§er 1 ile 255 arasinda olmalidir."); goto tek;}*/ kont: printf ("\n\n\t\t\tDonanim ile baglanti kuruluyor..."); while ((inportb(0x379))!=0 && (inportb (0x379))!=128){delay (1000); gecik++; if (gecik>9){ printf ("\n\n\n\n\t\tDonanim ile on kez denemede baglanti kurulamadi\n\nYeniden dene / Iptal"); cevtek: cev=getch (); if (cev == 'i' || cev =='I'){ printf ("\n\n\n\n\ncikis icin bir tusa basiniz."); getche (); exit (0);} else if (cev=='y'||cev =='Y'){ clrscr (); gecik=0; goto kont;} else goto cevtek;}} clrscr (); printf ("\n\nbaglanti kuruldu"); delay (3000); } void topic (void) {clrscr (); int a=0; while (kor[0][a] !=255){ son: while ((inportb(0x379))!=128){ if ((inportb(0x379)) != 0){ printf ("Donanim ile baglanti koptu.... \nFiziksel baglantiyi gerceklestirip bir tusa basiniz.\n\n\n\n€ikis icin ESC"); if (getche ()==27) exit (0); } } delay (1); outportb (0x37a,12); delay (1); outportb (0x378,kor[0][a]); delay (1); outportb (0x37a,8); delay (1); while ((inportb (0x379)) != 128); outportb (0x37a,12); delay (1); outportb (0x378,kor[1][a]); delay (1); outportb (0x37a,8); delay (1); outportb (0x37a,4); delay (1); a++; } delay (1); while ((inportb (0x379)) != 128); delay (1); outportb (0x37a,12); delay (1); outportb (0x378,255); delay (1); outportb (0x37a,8); delay (10); } void yeni (void){ clrscr (); FILE *bm,*db; printf ("\n\nMevcut olan dosya bicimi okunamiyor.... (600 X 900)\n\n\n\n\ yeni bir BMP dosyasi olusturmak icin herhangi bir tusa basiniz \n\n\n\ cikis icin ESC...\n\n\n Dikkat yeni bir BMP olusturmak icin mevcut olan verileriniz kaybolacak."); if (getche () !=27){ if (!(bm=fopen ("c:\\soner\\son.bmp","w"))){ printf ("\n\nDisk uzerine yazilamiyor.\a\n\n€ikis icin bir tusa basiniz"); getche (); fclose(bm); exit (0);} if (!(db=fopen ("c:\\soner\\ram.db","r"))){ printf ("\n\ndosya bulunamadi veya dosya bozuk\a\n\n€ikis icin bir tusa basiniz"); getche (); fcloseall(); exit (0);} fputc ('B',bm); while (!(feof (db))) fputc ((fgetc (db)),bm); fcloseall (); printf ("dosyalar basariyla olusturuldu");} printf ("\n\n\n\nProgrami kapatmak icin bir tusa basiniz."); getche (); exit (0); }
Şifre-Pass: 320volt.com
Yayım tarihi: 2008/11/20 Etiketler: baskı devre, C, cnc yapımı, kontrol devresi, lpt, microchip pic projeleri, paralel port, pcb, PIC16F877 örnekleri, step motor
Vay be bu devreyi üniversite yıllarında 2003 de yapmıştık, ne günlerdi. Şimdi bu sitede yayınlanması çok hoş gerçekten.
Tüm dosyalar hex ve exe dahil tek paket elde edemezmiyiz.
“Tüm dosyalar hex ve exe dahil tek paket elde edemezmiyiz.” demiş feridun Ramazan ERYILDIZ çalışma dosyalarınız elinizdeyse paylaşabilir misiniz?
Arkadaşlar bu c++ kodlarını derleyemedim. masıl derlerim. bilgisi olan yada derleyip paylaşabilecek olan arkadaşımız var mı?