CCS C LED ÇALIŞTIRAMADIM :D

Başlatan laotzi, 24 Ocak 2017, 19:40:18

laotzi

Alıntı yapılan: mehmet - 25 Ocak 2017, 18:05:05
Önce donanımınızın çalıştığına emin olun...
İsiste çalışıyor . Somut olarak yapmıyorum biraz öğrendikten sonra somut olarak gerçekleştireceğim .

sifirzero

sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

laotzi

Alıntı yapılan: serkancetin - 25 Ocak 2017, 18:25:13
http://ccspic.com/ccs-c-ve-buton-ile-bcd-sayici-uygulamasi/



Burayi incelermusin
Hocam teşekkürler bu kitap elimde var :) bundan çalışıyorum .
Biraz karmaşık geldi bana nedense.
Çok detaylı mı acaba ?

laotzi

Alıntı yapılan: serkancetin - 25 Ocak 2017, 18:25:13
http://ccspic.com/ccs-c-ve-buton-ile-bcd-sayici-uygulamasi/



Burayi incelermusin
Hocam ben değişkenleri anlamadım o konudada yardımcı olurmusunuz ne işe yarıyor nerde nasıl kullanılıyor.Anlamadığım için  kullanamıyorum .

yasin_arsln

Alıntı yapılan: laotzi - 25 Ocak 2017, 21:04:39
Hocam ben değişkenleri anlamadım o konudada yardımcı olurmusunuz ne işe yarıyor nerde nasıl kullanılıyor.Anlamadığım için  kullanamıyorum .
C programında, bir değişken tanımlandığında bu değişken için bellekte bir yer ayrılır. Her değişkenin tuttuğu değerin nasıl bir veri olduğunu gösteren bir veri tipi vardır. Bunlar karakter için Char, 8 bitlik tam sayi için int  ön adlarla tanımlanır. Amaç senin istediğin degerleri-verileri tutması, onlarla işlem yapması ve onların durumuna göre farklı koşulları gerçekleştirmesidir.

Sana daha önce yazdığım koda bir değişken ve bir buton tanımladım  programda işlettim.

#include <16F628A.h> // CCS c kütüphanesinde 16F628A  yazılmış header dosyasını kullanmanı sağlar.

#FUSES NOWDT        // Watch Dog Timer'ı kullanılmayacak           
#FUSES NOBROWNOUT   // MCU power'ında çalışma voltajının altına düştüğünde reset olmayacak.            
#FUSES NOLVP        // Düşük voltajlı programlama            
#FUSES XT           // Cristal osilator  <= 4mhz  
#FUSES NOPROTECT    // Hex kod okumaya karşı korumalı değil.

#use delay(crystal=4000000)
#define buton pin_a0 // buton kelimesine Pin_a0 olarak tanımlama yapıldı.
int8 LedYak = 8; // 8 bit tam sayi degiskeni ilk degeri 8 olarak tanımlandı.
void main()
{
   set_tris_b(0b00000000); // B portunun tamamı çıkış olarak ayarlandı.
   set_tris_a(0b00000001); // Pin_a0 giriş olarak ayarlandı.
   while(TRUE)
   {
   if(input(buton)) //buton'a basıldığında aşağıdaki işlemleri yap.
   {
    delay_ms(15);
    LedYak = LedYak-1; // burada LedYak 'in son halinde 1 çıkartıyorum.
                        //Bunun farklı şekilde yazımlarıda var LedYak-- şeklinde.
    
    while(input(buton)); //Buton'a basma islemi bitene kadar bekle.
    
    if(LedYak == 0) LedYak = 8; // LedYak 0'a eşit olduğunda LedYak'i 8'e eşitle.
   }
   if(LedYak == 8)
   {
   output_b(0b11111111); 
   delay_ms(500);
   output_b(0b00000000);
   delay_ms(500);
   }
   else if(LedYak ==5)
   {
   output_b(0b00011111); //5 çıkışı high yapar
   delay_ms(500);
   output_b(0b00000000);
   delay_ms(500);    
    }
   else if(LedYak ==2)
   {
   output_b(0b00000011); //2 çıkışı high yapar
   delay_ms(500);
   output_b(0b00000000);
   delay_ms(500);    
    }   
   }

}

Kodda sen butona bastıkça LedYak değişkenini azaltıyorsun LedYak değeri 5 'e eşit olduğunda ledlerinin 5 i yanıp sönmeye başlar sen butona basmadığın ve mcu'un resetlenmediği sürece bu şekilde ledler yanar. ben alternatif olsun diye 3 durum yazdım sen bunları çoğaltabilirsin.
Biraz C 'ye de bakmanın yardımı dokunur.

laotzi

#20
Alıntı yapılan: yasin_arsln - 25 Ocak 2017, 22:44:53
C programında, bir değişken tanımlandığında bu değişken için bellekte bir yer ayrılır. Her değişkenin tuttuğu değerin nasıl bir veri olduğunu gösteren bir veri tipi vardır. Bunlar karakter için Char, 8 bitlik tam sayi için int  ön adlarla tanımlanır. Amaç senin istediğin degerleri-verileri tutması, onlarla işlem yapması ve onların durumuna göre farklı koşulları gerçekleştirmesidir.

Sana daha önce yazdığım koda bir değişken ve bir buton tanımladım  programda işlettim.

#include <16F628A.h> // CCS c kütüphanesinde 16F628A  yazılmış header dosyasını kullanmanı sağlar.

#FUSES NOWDT        // Watch Dog Timer'ı kullanılmayacak           
#FUSES NOBROWNOUT   // MCU power'ında çalışma voltajının altına düştüğünde reset olmayacak.            
#FUSES NOLVP        // Düşük voltajlı programlama            
#FUSES XT           // Cristal osilator  <= 4mhz  
#FUSES NOPROTECT    // Hex kod okumaya karşı korumalı değil.

#use delay(crystal=4000000)
#define buton pin_a0 // buton kelimesine Pin_a0 olarak tanımlama yapıldı.
int8 LedYak = 8; // 8 bit tam sayi degiskeni ilk degeri 8 olarak tanımlandı.
void main()
{
   set_tris_b(0b00000000); // B portunun tamamı çıkış olarak ayarlandı.
   set_tris_a(0b00000001); // Pin_a0 giriş olarak ayarlandı.
   while(TRUE)
   {
   if(input(buton)) //buton'a basıldığında aşağıdaki işlemleri yap.
   {
    delay_ms(15);
    LedYak = LedYak-1; // burada LedYak 'in son halinde 1 çıkartıyorum.
                        //Bunun farklı şekilde yazımlarıda var LedYak-- şeklinde.
    
    while(input(buton)); //Buton'a basma islemi bitene kadar bekle.
    
    if(LedYak == 0) LedYak = 8; // LedYak 0'a eşit olduğunda LedYak'i 8'e eşitle.
   }
   if(LedYak == 8)
   {
   output_b(0b11111111); 
   delay_ms(500);
   output_b(0b00000000);
   delay_ms(500);
   }
   else if(LedYak ==5)
   {
   output_b(0b00011111); //5 çıkışı high yapar
   delay_ms(500);
   output_b(0b00000000);
   delay_ms(500);    
    }
   else if(LedYak ==2)
   {
   output_b(0b00000011); //2 çıkışı high yapar
   delay_ms(500);
   output_b(0b00000000);
   delay_ms(500);    
    }   
   }

}

Kodda sen butona bastıkça LedYak değişkenini azaltıyorsun LedYak değeri 5 'e eşit olduğunda ledlerinin 5 i yanıp sönmeye başlar sen butona basmadığın ve mcu'un resetlenmediği sürece bu şekilde ledler yanar. ben alternatif olsun diye 3 durum yazdım sen bunları çoğaltabilirsin.
Biraz C 'ye de bakmanın yardımı dokunur.

Hocam çok teşekkür ediyorum . Bakalım doğru anlamışmıyım. Örneğin led değişkenini 8 yaptık burada led değişkeni 8 oldugunda diyelim 8 led var 8 ledinde yakmasını istiyorum ancak led değişkenini 8 yapmak için benim 8 kez butonamı basmam gerekiyor bu örneği kendim sadece uydrudum anlamışmıyım diye .

yasin_arsln

Alıntı yapılan: laotzi - 25 Ocak 2017, 22:53:18
Hocam çok teşekkür ediyorum . Bakalım doğru anlamışmıyım. Örneğin led değişkenini 8 yaptık burada led değişkeni 8 oldugunda diyelim 8 led var 8 ledinde yakmasını istiyorum ancak led değişkenini 8 yapmak için benim 8 kez butonamı basmam gerekiyor bu örneği kendim sadece uydrudum anlamışmıyım diye .
Orası sana kalmış bir buton ile bir değişkenin kontrolünü yaptığını düşün sen her bastığında değişkenin 1 azalıyor. Her sayıda bir Led yakma moduna geçiş yapabiliyorsun.
Bunu sen farklı bir şekilde de tanımlayabilirsin. Benim sana gönderdiğim kodda değişkenin 7 olduğunda ne yapmasını istediğini yazıp modifiye et ve uygula.
Şöyle yapmanı öneririm ISIS de simulasyon yapabiliyorsun değilmi? ISIS'e MCU'ya hex dosyasını değilde .cof dosyasını yükle ISIS üzerinden debug çalıştır ve adım adım kontrol et.Daha iyi anlayacaksın.
Verdiğin örneği tam anlayamadım, zaten 8 ise yazılan kod üstünden konuşuyor isek 8 kez basıp çektiğinde tekrar 8 oluyor. Değişkenin bu durumunda 8 Led yanıp söner.Bunu diyorsan doğru anlamışsın.

laotzi

Alıntı yapılan: yasin_arsln - 26 Ocak 2017, 01:21:30
Orası sana kalmış bir buton ile bir değişkenin kontrolünü yaptığını düşün sen her bastığında değişkenin 1 azalıyor. Her sayıda bir Led yakma moduna geçiş yapabiliyorsun.
Bunu sen farklı bir şekilde de tanımlayabilirsin. Benim sana gönderdiğim kodda değişkenin 7 olduğunda ne yapmasını istediğini yazıp modifiye et ve uygula.
Şöyle yapmanı öneririm ISIS de simulasyon yapabiliyorsun değilmi? ISIS'e MCU'ya hex dosyasını değilde .cof dosyasını yükle ISIS üzerinden debug çalıştır ve adım adım kontrol et.Daha iyi anlayacaksın.
Verdiğin örneği tam anlayamadım, zaten 8 ise yazılan kod üstünden konuşuyor isek 8 kez basıp çektiğinde tekrar 8 oluyor. Değişkenin bu durumunda 8 Led yanıp söner.Bunu diyorsan doğru anlamışsın.
Evet kullanabiliyorum şimdi yapacağım onu . Hocam bir sayı belirliyoruz onun üzerinden işte sayı 8 olursa şu olsun 7 olursa bu olsun sayıyı 1 azalt 1 artır olayımı oluyor . Peki sayıyı neye göre bitlerini ayarlıyoruz.

yasin_arsln

Alıntı yapılan: laotzi - 26 Ocak 2017, 12:27:17
Evet kullanabiliyorum şimdi yapacağım onu . Hocam bir sayı belirliyoruz onun üzerinden işte sayı 8 olursa şu olsun 7 olursa bu olsun sayıyı 1 azalt 1 artır olayımı oluyor . Peki sayıyı neye göre bitlerini ayarlıyoruz.
Ben en basit örneğini verdim bu sadece bir artır bir azalt olayı değil. Matametiksel işlem, Lojik işlem vs. her tür işlemleri yapmanda yardımcı olacak bu değişkenler. Bu değişkenlerin kaç bit olacağını ise alacağı değere göre belirliyorsun. bir değişkenin 0-65535 arasında değer alıyorsa bu 16 bit işaretsiz olmalı. 0-32767 arasında ise işaretli 16 bit olur. 0-255 arasında ise 8 bitlik bir değişken olmalı. bu char da olabilir unsigned int8 de olabilir.
Temel C kısımlarına biraz daha bak veri tipleri nelerdir nasıl kullanılır. Serdar Çiçek'in kitabında anlatılıyordu yanlış hatırlamıyorsan.

laotzi

#24
Alıntı yapılan: yasin_arsln - 26 Ocak 2017, 13:04:36
Ben en basit örneğini verdim bu sadece bir artır bir azalt olayı değil. Matametiksel işlem, Lojik işlem vs. her tür işlemleri yapmanda yardımcı olacak bu değişkenler. Bu değişkenlerin kaç bit olacağını ise alacağı değere göre belirliyorsun. bir değişkenin 0-65535 arasında değer alıyorsa bu 16 bit işaretsiz olmalı. 0-32767 arasında ise işaretli 16 bit olur. 0-255 arasında ise 8 bitlik bir değişken olmalı. bu char da olabilir unsigned int8 de olabilir.
Temel C kısımlarına biraz daha bak veri tipleri nelerdir nasıl kullanılır. Serdar Çiçek'in kitabında anlatılıyordu yanlış hatırlamıyorsan.
Teşekkürler anladım birşeyler eskisinden iyi yukarıda dediklerinizi uyguluyorum o kod işime yaradı .

omereliusuk

1) bir adet hesap makinesi aç.
2) programcı moduna geç
3)sayıların nasıl göründüğünü gör.
bu daha kolay olacak gibi

laotzi

Alıntı yapılan: omereliusuk - 27 Ocak 2017, 14:05:16
1) bir adet hesap makinesi aç.
2) programcı moduna geç
3)sayıların nasıl göründüğünü gör.
bu daha kolay olacak gibi
Mazur görün lütfen  tam olarak anlamadım :) açıklarmısınız biraz .

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

laotzi

Alıntı yapılan: mehmet - 27 Ocak 2017, 19:44:25
Cep telefonu için hesap makinesi;
https://play.google.com/store/apps/details?id=com.miwachang.progcalc&hl=tr
Teşekkürler isime yaradı değişkenleri anladım ancak yeni bir sorunum var, konuların farklı olması nedeni ile yeni bir konu açıyorum .

sifirzero

denedim çalışıyor.
#include<16f628a.h>
#fuses INTRC_IO,NOWDT,NOPUT,NOBROWNOUT
#use delay (clock=4m)

void main()
{
set_tris_b(0x00);
set_tris_a(0xff);

output_b(0x00);
output_low(pin_b0);
while(true)
{
if(input(pin_a0)==1)
{
delay_ms(20);
output_toggle(pin_b0);
while(input(pin_a0));
}
}
}
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir