Picproje Elektronik Sitesi

DERLEYİCİLER => PIC C => Konuyu başlatan: Veli B. - 11 Ocak 2004, 16:47:54

Başlık: Hangisi? asm-pbp-c
Gönderen: Veli B. - 11 Ocak 2004, 16:47:54
Merhaba arkadaşlar,
Ben asm ve pbp ile çalışıyorum ama c ile programlamayı da merak etmeye

başladım.
Aklımda bir kaç soru var:
1. Pbp ya göre + ve - leri neler kabaca.
2. Görebildiğim kadarı ile birçok farklı firmanın derleyicisi var. Farkları ne , başlamak için hangisi daha

iyi?
3. Başlamak için neler gerekli. Compiler, programmer, özel bir simülatör vb.
4. En önemlisi öğrenmeli mi?Yoksa gerek yok mu?
Teşekkürler ...
Başlık: Hangisi? asm-pbp-c
Gönderen: james - 12 Ocak 2004, 00:06:24
bence gerek yok.asmde yapamayacağın şey yok
Başlık: Hangisi? asm-pbp-c
Gönderen: ise - 12 Ocak 2004, 18:54:37
basicte pointerler yok ama c dilinde var veri yapısı structer public v.s. kullanım kalıpları
misal:
int a;
int

*p;
p=&a;
p=10;    // a sayısını 10 yapar
structer kalem1
{
short int sayisi;
short int bolumu;
}kalem,defter,*ahmet;
ahmet=&defter;
kalem.sayisi=1; //

kalem yapısının altında sayisi olan kısım 1 oldu
defter.sayisi=2; //defter yapısının altında sayisi olan kisim 2 oldu
ahmet.bolumu=3 ;//defter yapısının altında bolumu olan kisim 3 oldu  


bunun gibi bir çok avantajı var
dezavantajıda tabii
misal picc hangi bankada kaldığını bilmiyor fakat picbasic hangi bankada kaldığını biliyor
Başlık: Hangisi? asm-pbp-c
Gönderen: ise - 12 Ocak 2004, 18:57:51
çok uzun uzadıya işlerde misal tablolamalarda çok işe yarıyor assembler çekilmez oluyor. matematiksel işlemlerdede çok rahat

(hazırcı )
Başlık: Hangisi? asm-pbp-c
Gönderen: Analyzer - 13 Ocak 2004, 00:25:11
Selam,
Bana göre  asm ile c'yi karşılaştırmak yersiz.Çünkü seviyeleri farklı diller.Yapabilen tabi ki asm'de de yapar

istediğini.Ama 10-20 adımdan sonra asm ile program yazmak, debug etmek ve kontrol etmek güçleşir.
Analyzer.
Başlık: Hangisi? asm-pbp-c
Gönderen: feyzi - 18 Mayıs 2004, 11:26:40
Alıntı yapılan: "thief"çok uzun uzadıya işlerde misal tablolamalarda çok işe yarıyor assembler çekilmez oluyor. matematiksel işlemlerdede çok rahat

(hazırcı )
Arkadaşlar !
Hangi pic derleyicileri dll uzantılı dosyaları çalıştırabiliyor? Picbasicpro mu,
Pic C mi veya diğerleri mi?
Başlık: Hangisi? asm-pbp-c
Gönderen: Erol YILMAZ - 18 Mayıs 2004, 11:35:42
Hicbiri
Başlık: Hangisi? asm-pbp-c
Gönderen: feyzi - 18 Mayıs 2004, 11:57:29
Alıntı yapılan: "Erol"Hicbiri
Sayın Erol !
Dll  uzantılı dosyaların pic ortamında çalıştırmak imkansız mı ?
Başlık: Hangisi? asm-pbp-c
Gönderen: cozturk - 18 Mayıs 2004, 14:55:18
Kardeş DLLin picle ne alakası var? Picin içinde exe program  mı çalışıyor. windows mu var, işletim sistemi mi var. muhahaha :D

Hadi bazı tabloları filan dışarıdan Ram den okutayım desen haklısın. Ya da daha önce derlenmiş bazı rutinler (pre compiled) kullanarak derlemeyi hızlandırmak istersen. Fakat bunun adı DLL olmaz :lol:  Sadece derleme esnasında olan bir olaydır.
DLL= Dinamic Link Library
Başlık: Hangisi? asm-pbp-c
Gönderen: feyzi - 18 Mayıs 2004, 15:21:23
Alıntı yapılan: "cozturk"Kardeş DLLin picle ne alakası var? Picin içinde exe program  mı çalışıyor. windows mu var, işletim sistemi mi var. muhahaha :D

Hadi bazı tabloları filan dışarıdan Ramden okutayım desen haklısın. Y ada daha önce derlenmiş bazı rutinler (pre compiled) kullanarak derlemeyi hızlandırmak istersen. Fakat bunun adı DLL olmaz :lol:  :lol:  :lol:  :lol:  :lol:  :lol:
DLL= Dinamic[/u]Link Library
KARDAŞ !   SORMAK AYIP DEĞİL! ÖĞRENMEMEK AYIP!
Başlık: Hangisi? asm-pbp-c
Gönderen: axanc - 14 Haziran 2004, 12:12:50
asm -> mikroişlemciye hakimiyet...
basic -> kısa zamanda kendi kendine yeten proje geliştirme...
c -> uzman temelli projeler ve sistem uyumlulukları...
Başlık: İyi tanımlama...
Gönderen: DumrulBey - 15 Haziran 2004, 07:06:02
Alıntı yapılan: "axanc"asm -> mikroişlemciye hakimiyet...
basic -> kısa zamanda kendi kendine yeten proje geliştirme...
c -> uzman temelli projeler ve sistem uyumlulukları...
Gayet güzel özetlemişsin tebrik ederim. C konusunda bir cümlede ben yazmak isterim:

"Keil C, Assembly'den sonra en hızlı, en kısa kodlama!"(-bkz. http://www.keil.com/benchmks)

Reklamları dinlediniz! :D

Başarılar...
Başlık: Hangisi? asm-pbp-c
Gönderen: Erol YILMAZ - 15 Haziran 2004, 10:42:10
@ feyzi kardes;
kusura bakma biraz uzak kaldim bu konudan...
Ama seni anliyorum isin ne oldugunu bilemeyince insan
birseylerle bagdastirmaya calisiyor.
Ama  Cozturk'un dedigi gibi DLL ile pic in icindeki kodun
pek bir alakasi yok.
PIC16 sadece 35 komuttan anliyor.
Ama Compiler'larin sundugu ozel is yapan fonksiyonlarla bu 35
komut guzel isler yapiyor. Senin DLL dediklerinde bu fonksiyonlarin
yaptigi isi yapiyor ama WINDOWS'ta...

Bu arada C dilindeki uyumluluk pekte abartilacak birsey değil. CCS te yazilmis programi Hitech te calistirmak icin baya bir cevrim yapmaniz gerekiyor. Bir de Basic olayini kucumsememek lazim. CCS veya HI-Tech 'e gore dezavantaji pek yok ama avantaji cok...

Benim fikrim; ASM yi bil ama programini tanidigin yuksek seviyeli dilde ve compiler'da yaz !!!
Başlık: Hangisi? asm-pbp-c
Gönderen: ise - 15 Haziran 2004, 11:40:09
keil c 80xxx ve arm  serisinin  c complieri pici serisini complier etmez.  debug ve complier konusunda en iyisi denebilir. iarın debugger i keile göre daha zor ve proteusta direkt olarak c-spy ile müdahele edilemiyor
Başlık: Hangisi? asm-pbp-c
Gönderen: ise - 15 Haziran 2004, 14:13:24
http://www.william.com.cn/IAR/acrobat/Benchmarks-EW8051-610.pdf
Başlık: Hangisi? asm-pbp-c
Gönderen: axanc - 16 Haziran 2004, 17:31:51
arkadaşlar,
"c derleyicisi" konusundaki uyum dediğim olay "aynı" derleyici ile olan uyumluluktur... Düşününki çoğu program "C" temmelli geliştiriliyor...
Başlık: Hangisi? asm-pbp-c
Gönderen: mmengi - 16 Haziran 2004, 22:29:29
Alıntı yapılan: "Erol"
Bu arada C dilindeki uyumluluk pekte abartilacak birsey değil. CCS te yazilmis programi Hitech te calistirmak icin baya bir cevrim yapmaniz gerekiyor. Bir de Basic olayini kucumsememek lazim. CCS veya HI-Tech 'e gore dezavantaji pek yok ama avantaji cok...

Evet arkadaşlar hi-tech ile proton+ arasında yaptığım bir kaç kıyaslama sonucunda çokta elle tutulur bir farklılık olmadığını gördüm. illada C diye çok fazla kasmanın anlamı yok ama ASM olmadan hiç birinde iş yapamazsınız. Sonuçta pic için yapılmış bütün derleyiciler yazdığınız kodları asm makrolarına çeviriyor ve bir işi yaparken doğruya giden en kestirme 1 yol vardır ve bu yolu hem C de olsun hem basic te olsun birbirlerine benzer şekillerde çözmüşler.
Başlık: Hangisi? asm-pbp-c
Gönderen: axanc - 16 Haziran 2004, 22:42:19
Bazı şeyler hiç değişmez tabii...  8)

LIST P=16F84A
#INCLUDE P16F84A.INC

__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_OFF & _XT_OSC

;************************************************************
;DEGISKENLER
CBLOCK 0x0C
        SY1,SY2,SYC1,SYC2,SYC3,DURUM,DATA1,DATA2,YOLA,YOLB,YOLC,YOLD,YA,
YB,YC,YD,BYK,SAYA,SAYB,SAYC,SAYD;
ENDC

;************************************************************
;MACRO'LAR
ISLE MACRO
MOVWF DURUM
CALL DATA_OUT
CALL GECIKME
MOVLW B'00000001'
ENDM

;************************************************************
BASLA
CALL KURULUM

BASLA2
MOVLW B'01010101'
MOVWF DURUM
CALL DATA_OUT

;************************************************************
Başlık: bana kalırsa
Gönderen: SpeedyX - 02 Eylül 2004, 00:57:11
bana kalırsa ;

asm de başla... c öğren ve devam et...
çünkü bir süre sonra asm kullanarak zihnimizi gereksiz yere, fazla yoruyoruz.
Başlık: Hangisi? asm-pbp-c
Gönderen: ei - 26 Kasım 2004, 16:53:10
Belki çok isabetli bir soru olmayacak ama merak ediyorum aynı işi yapmak üzere asm, c ve  picbasic ile yazılacak birer programın:
a) HEX'e çevrilince tutacağı miktar,
b) Bu işi yapma süreleri,
c) Bu iş yapma hızları
bakımından bir mukayesesi (çok hassas olmasa da) var mıdır? böyle somut bir bilgiye nasıl ulaşılabilir?
Teşekkür ederim.
Başlık: Hangisi ???
Gönderen: Erol YILMAZ - 27 Kasım 2004, 00:56:09
Bircok sitede degisik deneyler var.
Hepsi kendi derleyicisinin urettigi kodlarin daha az yer kapladigindan bahsediyor. vs. Ama [basic bilmeme ragmen] benim yazdigim Basic kodu ile senelerdir Basic kodu yazan birisinin yazdigi kodlar ve sonuclari bir olmayacaktir. Derleyicisini taniyan birisi, kendine uygun optimizasyonlari yapar. Hiz ve alan acisindan avantajli olur.
Bu optimizasyonlari yapmazsan da genelde kaba bir koda sahip olursun. Cok kafana takilan bir yer varsa orayada ASM ile birkac satir ilave edersin. Is biter.
Onemli olan derleyiciyi tanimak.

Egitim SART !!!
Başlık: Test ortamı oluşturmak...
Gönderen: DumrulBey - 28 Kasım 2004, 00:33:07
Merhaba,

Erol'un dediklerine aynen katılıyorum. Fakat yapabileceklerimizin hepsi bu değil. Nasıl bir takım donanım siteleri gibi (örneğin http://www.pclabs.gen.tr) bilgisayar bileşenleri test ediliyor biz de PIC mikrodenetleyicileri derleyiciler ile beraber test edebiliriz. Öyle değil mi?

Aslında sorun test etme de değil! Çünkü bu çok kolay bir şey. Galiba mesele kriterleri belirlemekte. Ayrıca test ortamı nasıl olmalı? Yani 16F ailesinde mi, yoksa 18F ailesinde mi test yapalım? Zira 18F ailesi C kodları için genişletilmiş komut setine (instruction sets) sahip. O yüzden C'den derlendiği zaman daha kısa ve hızlı kodlar çıkacaktır.

Sevgiler, saygılar...
Başlık: Hangisi? asm-pbp-c
Gönderen: ei - 28 Kasım 2004, 01:12:42
Elbetde her üretici kendi ürününün en iyisi olduğunu söyleyecektir.. Elbette "optimizasyon" bir takım iyileştirmeler yapar;
Elbette farklı kişilerin yazdığı kodlar arasında fark olur;
Elbette farklı PIC'ler üzerinde yapılan işlerin sonuçları farklı olacaktır.....
Her ne kadar "öğrenim görmüş" bir elektronikçi değilsem de yukarıdakileri bir hukukçu da bilebilir amma yine de tenvir etdiniz, teşekkür ederim.
Aziz gençler,
Bir "karşılaştırma"dan söz edildiği zaman belli bir ortak payda bulunur ve  ortak payda referans olarak alınır.
Mesela, PC'de farklı lisanların (basic, pascal, c vs.. gibi) hızlarını ölçmenin "kabaca" bir yolu aynı işi bu lisanların herbirine yaptırmaktır. Sözgelişi 1'den 1 milyona kadar sayıları ne kadar zamanda sayabildiği gibi.. Zamanında bu işi derlenebilir basic ve pascal içn yapmıştım mesela ve dramatik farklar ortaya çıkmışdı... PIC'ler için de sorduğum şey üç aşağı beş yukarı böyle birşeydi..
Hayatdaki en iyi öğrenme yolu "sınama yanılma"dır ve bu sınama yanılma da gösteriyor ki "tırnağın varsa başını kaşı"
Hakikaten eğitim şart...  :)
Başlık: Hangisi? asm-pbp-c
Gönderen: Erol YILMAZ - 28 Kasım 2004, 13:34:26
Tamam o zaman, yapalim basit bir test...

Mesela 2 adet 24 bit float degisken sayiyi carpalim, 3. degiskene aktaralim. Ben CCS te yazacagim. Diger arkadaslarda degisik derleyicilerde yazsinlar...  Olur mu?

Gelen sonuclarda lutfen kaynak kodu ve kullanilan derleyicinin adini, versiyonunu tam olarak yazin. Optimizasyonlari da kapatalim.
Başlık: Hangisi? asm-pbp-c
Gönderen: mmengi - 28 Kasım 2004, 23:05:08
Proton+ 2.20 Beta

device 16f628

dim A as float
dim B as float
dim c as float


A=2.12586856784531
B=0.00124402145470
C=A*B


PROGRAM COMPILED OK. 155 Words used from a possible 2048
   27 Variables used in the 16F628 from a possible 224
Başlık: Hangisi? asm-pbp-c
Gönderen: mmengi - 28 Kasım 2004, 23:16:07
C pek kullanmıyorum ama sanırım böyle yapılıyor.

CCS 3.212

#if defined(__PCM__)
#include <16F628.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)


void main() {
     float A=2.12586856784531 , b=0.00124402145470  , C;

  while(TRUE) {
     C=A*B;

  }
}


169 Word
Başlık: Hangisi? asm-pbp-c
Gönderen: Erol YILMAZ - 29 Kasım 2004, 00:37:06
#include <16F628.h>
float a,b,c;

void main()
{
  a=2.12586856784531;
  b=0.00124402145470;
  c=a*b;
}


CCS PCM, Version 3.212              
ROM used: 169 words (8%)
                        Largest free fragment is 1879
              RAM used: 17 (10%) at main() level
                        30 (17%) worst case
              Stack:    1 locations

baska yok mu???
Başlık: Asal sayı tarama uygulaması...
Gönderen: DumrulBey - 29 Kasım 2004, 20:37:52
Merhaba,

Bence bu tür testleri bu kadar basit örnekler ile yapmayalım. Örneğin aşağıdaki gibi asal sayıları bulan bir uygulamaya ne dersiniz? İyi bir test için LCD ekran kapalı tek LED'li veya LCD ile beraber yapalım. PIC Basic kodlarını beklerim.

#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#define use_portb_lcd TRUE
#include "MATH.H"
#include "LCD.C"

void main() {
 int16     xSay, xBak;
 int16     xAsal, xBas, xSon;
 boolean   bEkran;

 xBas =    1;
 xSon =    32768;

 lcd_init();
 printf(lcd_putc, "\fTARANIYOR...\n");
 for (xAsal = xBas; xAsal <= xSon; xAsal++) {
   bEkran = True;
//    for (xBak = 2; xBak <= ceil(sqrt(xAsal)); xBak++) { //1 dakida 6311'e kadar
//    for (xBak = 2; xBak <= ceil(xAsal/2); xBak++) { //1 dakikada 3461'e kadar
//    for (xBak = 2; xBak <= xAsal; xBak++) { //1 dakikada 4679'a kadar
   for (xBak = 2; xBak <= (xAsal>>1); xBak++) { //1 dakikada 6659'a kadar
     if (xAsal % xBak == 0) {
       bEkran = False;
       break;
     }
   }
   if (bEkran) {xSay++; //printf(lcd_putc, "%lu\n", xSay);
     printf(lcd_putc, "%lu, TOP. %lu\n", xAsal, xSay);
   //  delay_ms(1000);
   }
 }
}

Ayrıca uygulamayı 18F ailesi ile deneyelim. En son denediğimde yanlış hatırlamıyorsam  4xPLL ile yani 10 Mhz. hızında 7 dakikada hepsini taramıştı. Tabi LCD ekrana veri gönderme açıktı.

Sevgiler, saygılar...
Başlık: Hangisi? asm-pbp-c
Gönderen: Erol YILMAZ - 29 Kasım 2004, 20:58:04
boyle bir sonuca ulasilmaz yaw.
Isteyen istedigini kullansin. Ornegin Hi-Tech benim derleyiciden %40 oraninda daha az kod uretsede ben kullanmam. Gelistirme ortami cins. Fonksiyonlarinin isimlendirmesi bence ters. Vs. vs. Derleyiciler hakkinda soru sorun ama bu test yontemi pek para etmez.
Hi-Tech diyen kardes niye Hi-Tech diyor onu soylesin, daha mantikli olur bence...
Başlık: Hangisi? asm-pbp-c
Gönderen: yıldırım ak - 30 Kasım 2004, 14:38:20
Küçük program kodları ile bir yere varamazsınız. Stack seviyelerini, kapasiteleri zorlayan projelerde karşılaştırmaları yapar iseniz sonuç çok net ortaya çıkacaktır. Derleyicinizi istediğiniz kadar tanıyın, üreteceği hex kodu %100 belirleyemezsiniz.

Derleyicinizin mantığını çözmeye uğraşmak yerine, assembly mantığını çözmeye çalışmanızda fayda var diye düşünüyorum. Bu sayede hakimiyeti tam olarak ele alabilirsiniz. Sürücü koltuğuna oturmak yerine, arka koltuktan araba kullanmaya çalışmayın !

Saygı ve Sevgiler...