Ana sayfa | Hakkımda | İletişim | Sosyal platform
PIC CCS C & ASM / Uygulamalar
Hesap makinesi uygulaması

   Bu uygulamayı arkadaşlarım için yapmıştım, basit temel işlemlerin yer aldığı bir pic ile hesap makinesi yazılımı. Uygulamayı indirmek buraya tıklayabilirsiniz. 

Arşiv şifresi isterse elektrocavus.com giriniz.

 

 

 

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
#include <16f877.h>
#fuses  HS,NOWDT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOCPD,NOWRT,NODEBUG
#use delay(clock=20M)

#define LCD_DATA_PORT getenv("SFR:PORTB") 
#include 
#include 
 #define sat_1 pin_c0
 #define sat_2 pin_c1
 #define sat_3 pin_c2
 #define sat_4 pin_c3
 
 #define sut_1 pin_d0
 #define sut_2 pin_d1
 #define sut_3 pin_d2
 #define sut_4 pin_d3
 #define sut_5 pin_d4
 #define sut_6 pin_d5
 
//  hata 01: Maksimum karakter sınırı
//  hata 02: Tanımsız karakter
//  hata 03: Sayı girilmeden işlem seçilemez.
//  HATA 04: YANLIŞ İŞLEM 
 
 // açma kodu: 212
 // çarpma kodu: 190 tamam
 // bölme kodu: 195  tamam
 // +/-: 200 iptal edildi hata kodu 02
 // çıkarma kodu: 201 tamam
 // mrc silme kodu: 202 tamam 
 // yüzde alma: 203  tamam
 // toplama kodu: 210 tamam
 // m- kare alma: 208 tamam
 // m+ küp alma: 209 tamam
 // kök alma: 211 TAMAM
 // nokta: 213  iptal edildi. hata kodu 02
 // eşittir: 214 tamam
 // sıfır: 215  tamam

int basilan_tus=0;
int rakam_ram[15];
int adres=0;


char islem_kayit;
unsigned int32 s1,s2,s3,s4;
unsigned int32 sonuc;
Float32 sonuc_float,Qf,Qf_;

unsigned int32 sayi_[4];
unsigned int32 deger[2],Q,Q_;
fLOAT32 degerf[2];
int i,t_,r_,u___;
int sil,x_=0;


 Void tus_tarama(){
 output_high(sat_1);
 if(input(sut_1)){ while(input(sut_1)); basilan_tus=212; }
 if(input(sut_2)){ while(input(sut_2)); basilan_tus=7; }
 if(input(sut_3)){ while(input(sut_3)); basilan_tus=8; }
 if(input(sut_4)){ while(input(sut_4)); basilan_tus=9; }
 if(input(sut_5)){ while(input(sut_5)); basilan_tus=190; }
 if(input(sut_6)){ while(input(sut_6)); basilan_tus=195; }
 output_low(sat_1);
 
  output_high(sat_2);
 if(input(sut_1)){ while(input(sut_1)); basilan_tus=200; }
 if(input(sut_2)){ while(input(sut_2)); basilan_tus=4; }
 if(input(sut_3)){ while(input(sut_3)); basilan_tus=5; }
 if(input(sut_4)){ while(input(sut_4)); basilan_tus=6; }
 if(input(sut_5)){ while(input(sut_5)); basilan_tus=201; }
 if(input(sut_6)){ while(input(sut_6)); basilan_tus=202; }
 output_low(sat_2);
 
  output_high(sat_3);
 if(input(sut_1)){ while(input(sut_1)); basilan_tus=203; }
 if(input(sut_2)){ while(input(sut_2)); basilan_tus=1; }
 if(input(sut_3)){ while(input(sut_3)); basilan_tus=2; }
 if(input(sut_4)){ while(input(sut_4)); basilan_tus=3; }
 if(input(sut_5)){ while(input(sut_5)); basilan_tus=210; }
 if(input(sut_6)){ while(input(sut_6)); basilan_tus=208; }
 output_low(sat_3);
 
  output_high(sat_4);
 if(input(sut_1)){ while(input(sut_1)); basilan_tus=211; }
 if(input(sut_2)){ while(input(sut_2)); basilan_tus=215; }
 if(input(sut_3)){ while(input(sut_3)); basilan_tus=213; }
 if(input(sut_4)){ while(input(sut_4)); basilan_tus=214; }
 if(input(sut_5)){ while(input(sut_5)); basilan_tus=210; }
 if(input(sut_6)){ while(input(sut_6)); basilan_tus=209; }
 output_low(sat_4);
 
 
 } Void siliniyor(){
 for(sil=0; sil<16;sil++){rakam_ram[sil]=0;}
 adres=0; 
 }
  Void bas(){
 lcd_gotoxy(1,2);
 if(Q_>Q && islem_kayit=='-'){ printf(lcd_putc,"=-%Lu",sonuc); }else{
 printf(lcd_putc,"=%Lu",sonuc);}
  u___=0;  sonuc=0; deger[0]=0; deger[1]=0;  islem_kayit=""; x_=0;}
  
  
   Void bas_float(){
 lcd_gotoxy(1,2); printf(lcd_putc,"=%f",sonuc_float);
  u___=0;  sonuc_float=0; degerf[0]=0; degerf[1]=0;  islem_kayit=""; x_=0;}



 Void ek_1(){
 lcd_gotoxy(adres+1,1);
 printf(lcd_putc,"%c",islem_kayit); 
 u___=adres;  
 for(t_=0;t_
{
sayi_[t_]=rakam_ram[t_];
}
  r_=0;
}
  
  Void ek_2()
{
for(i=0;i
 sayi_[i]=rakam_ram[i];
 
r_=1;
}
  Void ek_3()
{ 
Q=deger[0]; 
Q_=deger[1];
}
 
Void ek_3f()
{ 
Qf=degerf[0]; 
Qf_=degerf[1];
}
 Void sayi_olusturuluyor()
{ 
 x_=1;
  switch(adres){
 case 1: deger[r_]=sayi_[0]; break;
 case 2: s1=sayi_[0]; s2=sayi_[1]; deger[r_]=(s1*10)+s2;  break;
 case 3: s1=sayi_[0]; s2=sayi_[1]; s3=sayi_[2]; deger[r_]=(s1*100)+(s2*10)+s3; break;
 case 4: s1=sayi_[0]; s2=sayi_[1]; s3=sayi_[2]; s4=sayi_[3]; deger[r_]=(s1*1000)+(s2*100)+(s3*10)+s4; break;
 }
 }
 
 Void sayi_olusturuluyorf(){

x_=1;
  switch(adres){
 case 1: degerf[r_]=sayi_[0]; break;
 case 2: s1=sayi_[0]; s2=sayi_[1]; degerf[r_]=(s1*10)+s2;  break;
 case 3: s1=sayi_[0]; s2=sayi_[1]; s3=sayi_[2]; degerf[r_]=(s1*100)+(s2*10)+s3; break;
 case 4: s1=sayi_[0]; s2=sayi_[1]; s3=sayi_[2]; s4=sayi_[3]; degerf[r_]=(s1*1000)+(s2*100)+(s3*10)+s4; break;
 }
 
}
 
 Void islem_carp(){
 islem_kayit="x";  
 ek_1();
 sayi_olusturuluyor();
 
 }
 
 Void islem_topla(){
 islem_kayit="+";  
 ek_1();
 sayi_olusturuluyor();
 }
 
  Void islem_bol(){
 islem_kayit="/";  
 ek_1();
 sayi_olusturuluyorf();
 }
 
  Void islem_cikar(){
 islem_kayit="-";  
 ek_1();
 sayi_olusturuluyor();
 }
 
 Void kare_al(){
 
 ek_1();
 sayi_olusturuluyor();
 ek_3();
 sonuc=Q*Q;
 bas();
 }
 
  Void kup_al(){

 ek_1();
 sayi_olusturuluyor();
 ek_3();
 sonuc=Q*Q*Q;
 bas();
 }
 

  Void kok_al(){

 ek_1();
 sayi_olusturuluyor();
 ek_3();
 sonuc_float=SQRT(Q);
bas_float();
 }
   Void yuzde_al(){
 islem_kayit="%";  
 ek_1();
 sayi_olusturuluyorf();



 }
 
 void main(){
 setup_psp(PSP_DISABLED);
 setup_timer_1(T1_DISABLED);
 setup_timer_2(T2_DISABLED,0,1);
 setup_adc_ports(NO_ANALOGS);
 setup_adc(ADC_OFF);
 setup_ccp1(ccp_off);
 setup_ccp2(ccp_off);
 
 lcd_init();
 printf(lcd_putc,"\fVeriler\nYukleniyor"); delay_ms(750);
 printf(lcd_putc,"\fVeriler\nYukleniyor."); delay_ms(500);
  printf(lcd_putc,"\fVeriler\nYukleniyor.."); delay_ms(500);
  printf(lcd_putc,"\fVeriler\nYukleniyor..."); delay_ms(500);
 
 Printf(lcd_putc,"\fMERHABA"); DELAY_MS(1500);
 Printf(lcd_putc,"\fAYALMEYA\nHesap Mak."); DELAY_MS(2000); // 'AY'AN 'AL'TUN 'ME'HMET 'YA'SİN
 printf(lcd_putc,"\f");
 output_high(pin_e0); //hazır ledi
 For(;;){
 if(adres<=4){
 tus_tarama();}else {printf(lcd_putc,"\fMAKS. BASAMAK\nSINIRI! HATA 01"); basilan_tus=212;
 delay_ms(2000); u___=0;
printf(lcd_putc,"\f");   }

if(basilan_tus!=0){ 
if(u___==0){lcd_gotoxy(ADRES+1,1);}else{lcd_gotoxy(u___+2,1);}
 switch(basilan_tus){
 
 case 1:  rakam_ram[ADRES]=basilan_tus; printf(lcd_putc,"1"); ADRES++;   if(x_==1){u___++;}break;
 case 2:  rakam_ram[ADRES]=basilan_tus; printf(lcd_putc,"2"); ADRES++;   if(x_==1){u___++;}break;
 case 3:  rakam_ram[ADRES]=basilan_tus; printf(lcd_putc,"3"); ADRES++;   if(x_==1){u___++;}break;
 case 4:  rakam_ram[ADRES]=basilan_tus; printf(lcd_putc,"4"); ADRES++;   if(x_==1){u___++;}break;
 case 5:  rakam_ram[ADRES]=basilan_tus; printf(lcd_putc,"5"); ADRES++;   if(x_==1){u___++;}break;
 case 6:  rakam_ram[ADRES]=basilan_tus; printf(lcd_putc,"6"); ADRES++;   if(x_==1){u___++;}break;
 case 7:  rakam_ram[ADRES]=basilan_tus; printf(lcd_putc,"7"); ADRES++;   if(x_==1){u___++;}break;
 case 8:  rakam_ram[ADRES]=basilan_tus; printf(lcd_putc,"8"); ADRES++;   if(x_==1){u___++;}break;
 case 9:  rakam_ram[ADRES]=basilan_tus; printf(lcd_putc,"9"); ADRES++;   if(x_==1){u___++;}break;
 case 215:rakam_ram[ADRES]=0;           printf(lcd_putc,"0"); ADRES++;   if(x_==1){u___++;}break;
 case 213: printf(lcd_putc,"\fKARAKTER\nTANIMSIZ HATA 02");delay_ms(1500);printf(lcd_putc,"\f"); siliniyor();break;
 case 200: printf(lcd_putc,"\fKARAKTER\nTANIMSIZ HATA 02");delay_ms(1500);printf(lcd_putc,"\f"); siliniyor();break;
 
 
 case 190: if(adres==0){printf(lcd_putc,"Sayi giriniz\nHATA 03");delay_ms(1500); printf(lcd_putc,"\f");}else{islem_carp(); siliniyor();} break;
 case 195: if(adres==0){printf(lcd_putc,"Sayi giriniz\nHATA 03");delay_ms(1500); printf(lcd_putc,"\f");}else{islem_bol(); siliniyor();} break;
 case 201: if(adres==0){printf(lcd_putc,"Sayi giriniz\nHATA 03");delay_ms(1500); printf(lcd_putc,"\f");}else{islem_cikar(); siliniyor();} break;
 case 210: if(adres==0){printf(lcd_putc,"Sayi giriniz\nHATA 03");delay_ms(1500); printf(lcd_putc,"\f");}else{islem_topla(); siliniyor();} break;
 case 208: if(adres==0){printf(lcd_putc,"Sayi giriniz\nHATA 03");delay_ms(1500); printf(lcd_putc,"\f");}else{kare_al(); siliniyor();} break;
 case 209: if(adres==0){printf(lcd_putc,"Sayi giriniz\nHATA 03");delay_ms(1500); printf(lcd_putc,"\f");}else{kup_al(); siliniyor(); }break;
 case 211: if(adres==0){printf(lcd_putc,"Sayi giriniz\nHATA 03");delay_ms(1500); printf(lcd_putc,"\f");}else{kok_al(); siliniyor(); }break;
 case 203: if(adres==0){printf(lcd_putc,"Sayi giriniz\nHATA 03");delay_ms(1500); printf(lcd_putc,"\f");}else{yuzde_al(); siliniyor();} break;
 
 case 212: 
 sayi_[0]=0; 
 sayi_[1]=0;
 sayi_[2]=0; 
 sayi_[3]=0; r_=0;
 x_=0; siliniyor(); printf(lcd_putc,"\fTuslar devrede\nHafiza Silindi!"); delay_ms(1500); printf(lcd_putc,"\f"); break;
 
 
 case 214:
 
   if(islem_kayit=='\0'){printf(lcd_putc,"\fIslem Hatasi\nHATA 04");delay_ms(1500); printf(lcd_putc,"\f");}else{
//*****************************ÇARPIYOR**************************************//   
if(islem_kayit=='x'){
 ek_2();
 sayi_olusturuluyor();
 ek_3();
 sonuc=Q*Q_; 
}


//****************************************************************************//

//********************************TOPLUYOR*************************************
if(islem_kayit=='+'){
 ek_2();
 sayi_olusturuluyor();
 ek_3();
 sonuc=Q+Q_; 
}
//*****************************************************************************

//***************************ÇIKARILIYOR**************************************
if(islem_kayit=='-'){
 ek_2();
 sayi_olusturuluyor();
 ek_3();
 if(Q_>Q){sonuc=Q_-Q;
 }else{
 sonuc=Q-Q_; }
}

//****************************************************************************

//****************************BÖLÜYOR**************************************
if(islem_kayit=='/'){
 ek_2();
 sayi_olusturuluyorf();
 ek_3f();
 sonuc_float=Qf/Qf_; 
}
//****************************************************************************
  
//****************************YUZDE ALIYOR**************************************
if(islem_kayit=='%'){
 ek_2();
 sayi_olusturuluyorf();
 ek_3f();
 sonuc_float=Qf*Qf_/100; 
}
//****************************************************************************  
  
  
 if(islem_kayit!='%' && islem_kayit!='/'){bas();}else{bas_float();} }
 break;


 }basilan_tus=0; 
}
   
   
   
    }
 
 
 }
ELEKTRO ÇAVUŞ
Ana sayfa | Hakkımda | İletişim | Sosyal platform
ELEKTRO ÇAVUŞ2012 | elektrocavus.com