Evet yeni mikroC kitabı çıkmış.
(http://www.feyzateknik.com/images/detailed/0/Yeni_Bas_MikroC_on_belge.jpg)
Elektronik alanında mikroişlemcilerin ve ardından da mikrodenetleyicilerin keşfi, teknolojinin inanılmaz bir hızla gelişmesine sebep olmuştur. Microchip firmasının üretmiş olduğu PIC'lerin piyasada kolay temin edilebilmesi ve derleyici alternatifinin çokluğu sebebiyle yaygın bir kullanım alanına sahip olmuştur. Bu gibi nedenlerden dolayı kitapta; gelişmiş donanım özelliklerine sahip ve fiyatı da çok uygun olan PIC16F628A ile aynı donanım özelliklerine sahip olan PIC16F648A mikrodenetleyicisi tercih edilmiştir. Programlar ise günümüzün popüler programlama dillerinden birisi olan C dili esas alınarak oluşturulan MikroC PRO'da yazılmıştır.
Kitapta verilen uygulamalar; kullanıcının PIC programlamaya yeni başladığı düşünülerek, basitten gelişmiş proje uygulamalarına doğru hazırlanmıştır.
Ayrıca kullanıcının ihtiyaç duyacağı USB Pic Programlayıcısını kendisinin yapması amaçlanmış olup, kitap içerisinde devre ve PCB şeması verilmiştir. Yine kullanıcının kitap içerisinde verilen bütün uygulamaları yapabileceği bir PIC Deneme Kartının devre ve PCB şeması verilerek, kullanıcının kendi başına yapabilmesi için yol gösterilmiştir.
Kitap içeriği;
BÖLÜM 1. MIKROISLEMCILER ve MIKRODENETLEYICILER
BÖLÜM 2. PIC16F628A ve PIC16F648A DONANIM MIMARISI
BÖLÜM 3. SAYISAL ELEKTRONIK
BÖLÜM 4. USB PIC PROGRAMLAMA KARTI (USB Pic-OS)
BÖLÜM 5. PIC DENEME KARTI (PiC-OS)
BÖLÜM 6. MikroC PRO
BÖLÜM 7. ILK MikroC PROJEM
BÖLÜM 8. BASIT MikroC UYGULAMALARI
BÖLÜM 9. ÇEVRE BIRIMI ELEMANLARI ve UYGULAMALARI
BÖLÜM 10. KESME (INTERRUPT) UYGULAMALARI
Ufak bir dipnot: Altaş yakında mikroC ARM ile ilgili kitabını piyasaya sürecek. Hayırlısı bakalım.
Hocam kitabınızı ilk alanlardanım.
Yalnız ben yine yapamadım nerede hata yapıyorum bu ADC meselesinde bulamadım?
bir türlü deneyemedim hep yanlış yazdım bir yardımcı olursanız bu konuda?
kullandığım PIC 16F628A
bildiğim kadarıyla bunda AN var.Bir türlü sıcaklı okuyup yazdıramadım :S
Sayfa 155 de sıcaklık denemesi yapmışsınız ama hiç ADC aç kapa vs kullanmamışsınız.
Merhaba
Pic16F628A 16F648A sa adc modulu yok
Bu nedenler ölçemiyorsun
aynı pin yapısına sahip
16f819 ve 16f88 adc modülü var.
Başarılar
Bununla ilgili küçük bir adc uygulama örneği verebilir misiniz acaba kitapta bulamadım :S
LM35 ile LCD uygulama gibi. ?
Kitaptaki LCD örneklerini ne yaptıysam çalıştıramadım. Yayınevinde kitaptaki program örnekleri yok. Diğer kitap MikroC ve PIC Programlama örnekleri çalışıyor. Karşılaştırdım. Ama olmadı.
Merhaba,
Gerçek ortamda mi, Yoksa proteusda mi calistiramadin. Ayrica derlerken sorun çikti mi. Lcd ile pic baglantilarini kontrol ettin mi, fuse ayarlarini da kontrol et.
Bütün örnekler gerçek ortamda da proteusdada tek tek denenmistir ve calismaktadir.
Selamlar..
Defalarca kontrol ettim. Yanlış yaptım mı diye her seferinde yeniden yaptım. Öncekilerle karşılaştırdım. Kitaptaki tarif ettiğiniz şekilde fuse ayarlarını yaptım. XP ve 7'de proteus 7.10 ve mikroC 5.8 test edilmiştir. Ancak değişen bir şey yok. Önceden belirttiğim gibi diğer PIC18F4550 kitabınızda ki LCD programları sorunsuz çalışıyor. 16F628'de olmuyor. Mümkünse 16f628 LCD kodlarını ve örneklerini 18F4550 kitabında olduğu gibi sitenizde yada burada yayınlayabilirmisiniz? Hatta bu arda MikroC ile ilgili dillerde İspanyolca bile kodları denedim, bir türlü beceremedim. 16f628'in CCS kodlarında sorun yok.
Merhaba,
Müsait olunca lcd örneklerini ve proteusda calisan kodlari buraya atayim. Evimde internet im yok, bu siteye aksamlari cepten bakiyorum. Ama bütün programlari tek tek deneyerek kitaba koyduk. 18f4550 kitabi içinde örneği calistiramayan her kullanici, calismadigini iddia ediyor ama o kitapdaki bütün uygulamalarda Hem gerçek ortamda Hem de proteusda denendi.
MMC örneğini denediğinizi sanmıyorum.
Hikko hocam sabırsızlıkla 16f628 ait örnek kodları ve proteus simulasyonunu sabırsızlıkla bekliyorum. Özellikle nerede hata yaptığımı görmek için.
// LCD modül bağlantıları
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D7_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB0_bit;
// LCD modül bağlantıları bitti
void main() // ana program başlangıcı
{
cmcon = 0x07; // komparatörler kapatıldı
option_reg = 0x80; // portb pull-up dirençleri aktif
Lcd_Init(); // LCD bağlantıları yapılandırıldı
Lcd_Cmd(_LCD_CURSOR_OFF); // LCD imleci ekrandan kaldırıldı
Lcd_Cmd(_LCD_CLEAR); // LCD display ekranını temizler
Lcd_Out(1, 3, "Sivas EML"); // LCD display 1. satır, 3. sütuna text gönderildi
Lcd_Out(2, 1, "Elektronik Blm"); // LCD display 2. satır, 1. sütuna text gönderildi
} // ana program sonu
merhaba!
yukarıda verilen kodu proteustada, deneme kartında da çalıştırdım ve test ettim tekrar. Proteusda çalışan görüntüsünü buraya atacaktım ama resim atmayı beceremedim, kusura bakma!
kolay gelsin.
Küçük bir ayrıntıyı dile getirmek isterim. LCD ve GLCD kullanırken ilgili kütüphanelerin oluşturduğunuz projelere dahil edilmesi gerekir. Bunu yapmazsanız lcd ve glcd satırlarını derlerken derleyici hata verecektir.
Mikroc de lcd için lcd_init fonksiyonu yeterli oluyor, Yani ccs c de ki gibi ayrica kütüphane tanimlanmiyor. Mikroc nin guzelligi ve kolayliklarindan biriside bu özelliği zaten.
hocam ben bir lise ögrencisi olarak kitabınızı aldım ve çok hoşuma gitti herşey çok açık ve net . usb pıc programlayıcısını yaptım sorunsuz bir şekilde çalışıyo ama tek sorunum pıc derlemek için lazım olan program USB-Pic OS V1.0 programını hiç bi yerde bulamadım www.altaskitap.com (http://www.altaskitap.com) sayfasından indire bilirsiniz yazıyo kitapta ama ne yazıkki ordanda indiremedim kaldırılmış galiba yardımınızı bekliyorum size zahmet upload edip link paylaşırsanız çok mutlu ediceksiniz beni .
Bugün yayınevine haber verelim.Biz gönderdik onlara ama unuttular herhalde
merhaba!
USB programlayıcı HEX kod ve arayüz program aşağıdaki linkde!
http://www.4shared.com/rar/Qk_hg8Fo/pic18f2550_hikko.html (http://www.4shared.com/rar/_Gk76YC7/USB_Pic-OS_v13.html%3Cbr%20/%3E%5Burl=http://www.4shared.com/rar/Qk_hg8Fo/pic18f2550_hikko.html)]http://www.4shared.com/rar/_Gk76YC7/USB_Pic-OS_v13.html
http://www.4shared.com/rar/Qk_hg8Fo/pic18f2550_hikko.html (http://www.4shared.com/rar/Qk_hg8Fo/pic18f2550_hikko.html)[/url]
hocam çok teşekkür ederim başarılı bir şekilde çalışıyo kitaptaki uygulamları yapmaya başladım her şey çok güzel gidiyo .
Başka bir konuda yardima ihtiyacin olduğunda zamanimiz elverdiği sürece elimizden geleni yapariz. Kolay gelsin.
Hocam programlayıcının baskı devresini yaptım;18F2550'yi programladım ;kartı bilgisayara taktığımda programda kart görülüyor.Ama programlamak istediğim hiçbir entegreyi tanımıyor.adres hatası veriyor.
Alıntı yapılan: hasan_can - 25 Şubat 2013, 21:36:00
Defalarca kontrol ettim. Yanlış yaptım mı diye her seferinde yeniden yaptım. Öncekilerle karşılaştırdım. Kitaptaki tarif ettiğiniz şekilde fuse ayarlarını yaptım. XP ve 7'de proteus 7.10 ve mikroC 5.8 test edilmiştir. Ancak değişen bir şey yok. Önceden belirttiğim gibi diğer PIC18F4550 kitabınızda ki LCD programları sorunsuz çalışıyor. 16F628'de olmuyor. Mümkünse 16f628 LCD kodlarını ve örneklerini 18F4550 kitabında olduğu gibi sitenizde yada burada yayınlayabilirmisiniz? Hatta bu arda MikroC ile ilgili dillerde İspanyolca bile kodları denedim, bir türlü beceremedim. 16f628'in CCS kodlarında sorun yok.
hocam merhaba kitabınızı satın aldım fakat kaynak kodlarını altaşın sitesinde bulamıyorum. Göndermeniz mümkünmü acaba yunusemreates07@gmail.com
Selam Arkadaşlar;
Kitap yeni başlayanlar için iyi hazırlanmış. Almanızı tavsiye ederim.
Kitabın 98. sayfasında portd ve trisd terimleri kullanılmış fakat PIC16F628(A) ve PIC16F648(A)'da d portu yoktur. D portu yerine a portu yazılmalıdır. Yani kod aşağıdaki şekilde olunca PIC16F628(A) ve PIC16F648(A) için olur ve derlenebilir. Fakat LCD veya LED eklenmediği için deneme kartında ve/veya Proteus(isis)'te kodun çalıştığı tam belli olmuyor. Sizden ricam aşağıdaki koda LCD eklemeniz ve asc2_kod_bul fonksiyonuna giden değer ile dönen değeri LCD yazdırmanız.
Saygılar.
char kod; // char tipinde kod isimli global bir değişken tanımlandı.
// Bütün fonksiyonlar tarafında kullanılabir.
void init() // PIC'in ayar bölümün başlangıcı. init() isimli bir fonksiyon
{ // tanımlanıyor, bu geriye herhangi bir değer döndürmeyeceği için
// void ile başlıyor.
portb = 0; // PORTB'nin bütün portları lojik sıfır
trisb = 0; // PORTB bütün portları çıkış olarak set edildi
porta = 0; // PORTA'nin bütün portları lojik sıfır
trisa = 0; // PORTA bütün portları çıkış olarak set edildi
} // pic'in ayar bloğunun sonu
char asc2_kod_bul(char karakter) // asc2_kod_bul isimli bir fonksiyon tanımlıyor
{ // karakter ve asc2_kod değişkenleri sadece bu fonksiyonda kullanılabilir
unsigned char asc2_kod;
if (karakter == ' ') asc2_kod = 0x20; // Eğer fonksiyon çağırılken karakter
// parametresi eşittir ' ' karakteri
// ise asc2_kod değişkenine onaltılık
// sayı sisteminde 20 değerini yaz
if (karakter == '0') asc2_kod = 0x30; // Eğer fonksiyon çağırılken karakter
// parametresi eşittir '0' karakteri
// ise asc2_kod değişkenine onaltılık
// sayı sisteminde 30 değerini yaz
if (karakter == '1') asc2_kod = 0x31; // Eğer fonksiyon çağırılken karakter
// parametresi eşittir '1' karakteri
// ise asc2_kod değişkenine onaltılık
// sayı sisteminde 31 değerini yaz
if (karakter == '2') asc2_kod = 0x32; // Eğer fonksiyon çağırılken karakter
// parametresi eşittir '2' karakteri
// ise asc2_kod değişkenine onaltılık
// sayı sisteminde 32 değerini yaz
if (karakter == 'A') asc2_kod = 0x41; // Eğer fonksiyon çağırılken karakter
// parametresi eşittir 'A' karakteri
// ise asc2_kod değişkenine onaltılık
// sayı sisteminde 41 değerini yaz
if (karakter == 'B') asc2_kod = 0x42; // Eğer fonksiyon çağırılken karakter
// parametresi eşittir 'B' karakteri
// ise asc2_kod değişkenine onaltılık
// sayı sisteminde 42 değerini yaz
if (karakter == 'C') asc2_kod = 0x43; // Eğer fonksiyon çağırılken karakter
// parametresi eşittir 'C' karakteri
// ise asc2_kod değişkenine onaltılık
// sayı sisteminde 43 değerini yaz
return asc2_kod; // asc2_kod değişkenini gönder
}
void main() // Ana program başlangıcı
{
init(); // init() fonksiyonu çağrılıyor
while(1) // Sonsuz döngü başlangıcı
{
kod = asc2_kod_bul('A'); // asc2_kod_bul fonsiyonu çağrılıyor
} // sonsuz döngü sonu
} // ana program sonu
:020000004F2887
:0E0006008312031321088A00200882000800DC
:1000140083120313860183168601831285018316D6
:04002400850108004A
:10002800831203132308203A031D1C282030F100F3
:100038002308303A031D22283030F1002308313AD2
:10004800031D28283130F1002308323A031D2E28D9
:100058003230F1002308413A031D34284130F100C1
:100068002308423A031D3A284230F1002308433A54
:0E007800031D40284330F1007108F00008001D
:1000860003208A110A128000840AA00A0319A10A11
:08009600F003031D43280800DC
:10009E000A2041308312A30014207008A2005028B9
:0200AE005728D1
:02400E006A2125
:00000001FF
Selam Hocam;
PIC16F628A'da 8'den fazla iç içe fonksiyon çağırılabilir mi?
Mikro C'de değişkenler konusunu daha iyi kavramamız için soru verebilir misiniz?
MODBUS veya DMX512 ile ilgili kitabınız var mı?
Aşağıdaki kodda hata var mı?
Saygılar
char kod; // char tipinde kod isimli global bir değişken tanımlandı.
// Bütün fonksiyonlar tarafında kullanılabir.
unsigned short izin=0;
// LCD modül bağlantıları
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D7_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB0_bit;
// LCD modül bağlantıları bitti
void init() // PIC'in ayar bölümün başlangıcı. init() isimli bir fonksiyon
{ // tanımlanıyor, bu geriye herhangi bir değer döndürmeyeceği için
// void ile başlıyor.
portb = 0; // PORTB'nin bütün portları lojik sıfır
trisb = 0; // PORTB bütün portları çıkış olarak set edildi
porta = 0; // PORTA'nin bütün portları lojik sıfır
trisa = 0; // PORTA bütün portları çıkış olarak set edildi
cmcon |= 7; // Bütün a portları dijital
vrcon |= 0;
option_reg = 0x80; // portb pull-up dirençleri aktif
} // pic'in ayar bloğunun sonu
char asc2_kod_bul(char karakter) // asc2_kod_bul isimli bir fonksiyon tanımlıyor
{ // karakter ve asc2_kod değişkenleri sadece bu fonksiyonda kullanılabilir
unsigned char asc2_kod;
if (karakter == ' ') asc2_kod = 0x20; // Eğer fonksiyon çağırılken karakter
// parametresi eşittir ' ' karakteri
// ise asc2_kod değişkenine onaltılık
// sayı sisteminde 20 değerini yaz
if (karakter == '0') asc2_kod = 0x30; // Eğer fonksiyon çağırılken karakter
// parametresi eşittir '0' karakteri
// ise asc2_kod değişkenine onaltılık
// sayı sisteminde 30 değerini yaz
if (karakter == '1') asc2_kod = 0x31; // Eğer fonksiyon çağırılken karakter
// parametresi eşittir '1' karakteri
// ise asc2_kod değişkenine onaltılık
// sayı sisteminde 31 değerini yaz
if (karakter == '2') asc2_kod = 0x32; // Eğer fonksiyon çağırılken karakter
// parametresi eşittir '2' karakteri
// ise asc2_kod değişkenine onaltılık
// sayı sisteminde 32 değerini yaz
if (karakter == 'A') asc2_kod = 0x41; // Eğer fonksiyon çağırılken karakter
// parametresi eşittir 'A' karakteri
// ise asc2_kod değişkenine onaltılık
// sayı sisteminde 41 değerini yaz
if (karakter == 'B') asc2_kod = 0x42; // Eğer fonksiyon çağırılken karakter
// parametresi eşittir 'B' karakteri
// ise asc2_kod değişkenine onaltılık
// sayı sisteminde 42 değerini yaz
if (karakter == 'C') asc2_kod = 0x43; // Eğer fonksiyon çağırılken karakter
// parametresi eşittir 'C' karakteri
// ise asc2_kod değişkenine onaltılık
// sayı sisteminde 43 değerini yaz
Lcd_Out(2, 1, karakter); // LCD display 2. satır, 1. sütuna giriş değerini
// gönder
Lcd_Out(2, 3, kod); // LCD display 2. satır, 3. sütuna çıkış değerini
// gönder
return asc2_kod; // asc2_kod değişkenini gönder
}
void main() // Ana program başlangıcı
{
init(); // init() fonksiyonu çağrılıyor
Lcd_Init(); // LCD bağlantıları yapılandırıldı
Lcd_Cmd(_LCD_CURSOR_OFF); // LCD imleci ekrandan kaldırıldı
Lcd_Cmd(_LCD_CLEAR); // LCD display ekranını temizler
while(1) // Sonsuz döngü başlangıcı
{
kod = asc2_kod_bul('A'); // asc2_kod_bul fonsiyonu çağrılıyor
if (izin=0) // Sadece 1 defa ekrana yazdır
{
Lcd_Out(1, 1, 'A'); // LCD display 1. satır, 1. sütuna giriş değerini
// gönderi
Lcd_Out(1, 3, kod); // LCD display 1. satır, 3. sütuna çıkış değerini
// gönder
izin=1;
}
} // sonsuz döngü sonu
} // ana program sonu