Port a-Port b geçiş sorunu

Başlatan NBR07, 20 Mart 2013, 23:37:13

NBR07

ben bununla touch down yazısı yazcam arkadaşlar ama harf sayısı 9 sıkıntı oldu için portları tek tek yazmam gerekiyo resimi yüklüyemedim bir türlü ama şöyle anlatayım

B0-B1-B2-B3-B4-B5-B6-B7-A0 Ledlerin sıralanma şekli.... işlemci çıkışına göre
yazdığım programda dıştan içe doğru gelmesini sağlıyorum en basit ama
[A0 yanmaya devam ediyor:S...Diğerlerinde sorun yok tek sıkıntım bu]

2 gün uğraştım beklemeyi sildim uzattım kısaltım a0 için ama yapamadım.. yazdığım yazılımda bu ..isiste led bağlayarak denerseniz ama benim sıraladığım şekilde fikrimi anlarsın







#include<16f628.h>
#use delay(clock=4000000)


     main()
     {while(1)
       {
       output_high(pin_b0);       delay_ms(100);
       output_high(pin_a0);       delay_ms(100);
       output_high(pin_b1);       delay_ms(100);
       output_high(pin_b7);       delay_ms(100);
       output_high(pin_b2);       delay_ms(100);
       output_high(pin_b6);       delay_ms(100);
       output_high(pin_b3);       delay_ms(100);
       output_high(pin_b5);       delay_ms(100);
       output_high(pin_b4);       delay_ms(100);
       
       output_low(pin_b0);        delay_ms(100);
       output_low(pin_a0);        delay_ms(100);
       output_low(pin_b1);        delay_ms(100);
       output_low(pin_b7);        delay_ms(100);
       output_low(pin_b2);        delay_ms(100);
       output_low(pin_b6);        delay_ms(100);
       output_low(pin_b3);        delay_ms(100);
       output_low(pin_b5);        delay_ms(100);
       output_low(pin_b4);        delay_ms(100);
 
    
       }}

aboo67

çok fazla anladığım söylenemez bu işlerden fakat ben denedim kod çalışıyor isiste

sadogan

Programda sigortalar yok ve portA daki comparator kapatılmamış.
başlığı şu değiştirirsen çalışması lazım.
#include <16f628.h>
#FUSES NOWDT,PUT,INTRC_IO
#use delay(clock=4000000)


     main()
     {
      setup_comparator(NC_NC_NC_NC);
        while(1)

harici 4hmz kristal bağlı ise INTRC_IO sigortasını XT yapabilirsin

NBR07

Alıntı Yapçok fazla anladığım söylenemez bu işlerden fakat ben denedim kod çalışıyor isiste
isiste 4mhz yap işlemcinin içini ve dikkatli izle ilk led(b0) yanıyor sönüyor diğerine geçiyor.son led(a0) komut bitince sönüyor komut başladığında hep yanıyor while(1) döngüsüne gelene kadar

son hali bu ama aynı malesef:S
#include <16f628.h>
#FUSES NOWDT,PUT,INTRC_IO
#use delay(clock=4000000)


     main()
     {
      setup_comparator(NC_NC_NC_NC);
        while(1)
     {
       output_high(pin_b0);       delay_ms(100);
       output_high(pin_a0);       delay_ms(100);
       output_high(pin_b1);       delay_ms(100);
       output_high(pin_b7);       delay_ms(100);
       output_high(pin_b2);       delay_ms(100);
       output_high(pin_b6);       delay_ms(100);
       output_high(pin_b3);       delay_ms(100);
       output_high(pin_b5);       delay_ms(100);
       output_high(pin_b4);       delay_ms(100);

       output_low(pin_b0);        delay_ms(100);
       output_low(pin_a0);        delay_ms(100);
       output_low(pin_b1);        delay_ms(100);
       output_low(pin_b7);        delay_ms(100);
       output_low(pin_b2);        delay_ms(100);
       output_low(pin_b6);        delay_ms(100);
       output_low(pin_b3);        delay_ms(100);
       output_low(pin_b5);        delay_ms(100);
       output_low(pin_b4);        delay_ms(100);

       }}

sadogan

isis dosyanı bir yere upload etersen test etmek isterim

NBR07

upload olmuyor bir türlü ..
proteus  bir 16f628.. 9 led bağla kardeşim bi baksan..
ama şöyle bağlarsan dediğimi anlarsın..(işlemciyi sola yatırıp  ..ledlerinde katotu işlemci çıkışına.. anotu +5V
B0-B1-B2-B3-B4-B5-B6-B7-A0  böyle bağlarsan gerçekten anlatmak istediğim ortaya çıkıyor ..diğer türlü tam anlaşılmıyor.. teşekkürler..

xoom

#6
basitten şuraya upload edersen hallolacaktır..
http://www.dosya.tc/
Edit:
Okudugumdan anladığıma göre birşeyler yazdım ama bunu mu yapmak istiyorsun?
#include <16f628a.h>
#use delay(clock=4000000)
int led=1;
int K=1;

void main()
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
  
  while(1)
   {
   led=1; K=1;
   while(K)
   {
   output_b(led); led=led<<1;  
   delay_ms(100); output_b(led);
   if(led==0x00){ output_a(1); delay_ms(100);output_a(0x00);K=0;}
   }
   }
   }

NBR07

kardeşim ilk başta kayıp oluyo ama sonra kendine gelıyor denedim ben çok saol teşekkürler...emeğine sağlık son bi rica daha olcak harf 9 olduğundan gerçekten sorun yaşıyorum o yüzden k.bakma..
senin yaptığında kayıyor led çok iyi..ben arkasından yanıp sönmesinide istiyorum ama a ve b portu yine karşı karşıya:S:S:S

birinin komutu bitmeden diğeri başlamıyor hepsi aynı anda başlıyacak hepsi ayna bitcek döngüye gircek burda son led kafasına göre takılıyor:)yani iki port arasındaki süre farkı var(son tarafa for koydum..)
#include <16f628a.h>
#use delay(clock=4000000)
int led=1;
int K=1;
int i;
void main()
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
  
  while(1)
   {
   led=1; K=1;
   while(K)
   {
   output_b(led);
   led=led<<1;  
   delay_ms(100);
   output_b(led);
        if(led==0x00)
        {
         output_a(1);
         delay_ms(100);
         output_a(0x00);
         K=0;
        }
    for(i=0;i<5;i++);
      {output_b(0x00);
      delay_ms(100);
      output_a(0x00);
      delay_ms(100);
      output_b(0xFF);
      delay_ms(100);
      output_a(0xFF);
      }}}}


xoom

#8
inan ben senin ne yazdıklarını ne de ne yapmaya çalıştığını anlayamıyorum. Sabah yazdıklarını okdugumda yukarda  yazdıgım kod gibi birşey istiyorsun diyerek yazmıştım.. ya buraya devre ekle yada daha net olarak sadece yapmak istediğini yaz..

NBR07

kardeşim 9 harf olduğundan dolayı sıkıntı yaşıyorum programda zorlanıyorum..
portb ledler kayarken(8 tane) 9.harf için porta0 lede geçiyor güzel.. ilk yaptığında normal olarak doğruydu bu çalıştı güzelce ama;
en sonunada bütün harfler yanıp sönmesini istiyorum aynı anda mesala 200ms aralıkla 5 defa ..
ama portbdeki ledler yanıp sönerken aynı komutları, porta'ya attığımda aralarından kararsız yanıyolar flip flop gibi oluyor
yani;B0-B1-B2-B3-B4-B5-B6-B7-A0 şeklinde kaydıktan (mesala 5 defa kaycak)
sonra hepsi aynı anda yanıp soncek (5 defada bu olsa mesala)hepsi bu

kardeşim yorduysam kusura bakma
emeğine sağlık..

xoom

#include <16f628a.h>
#use delay(clock=4000000)
int led=1;
int K=1;
int L=1;
void main()
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
  
  while(1)
   {
   led=1; K=1;L=1;
   while(K)
   {
   output_b(led); K++;led=led<<1;  
   delay_ms(100); output_b(led);
   if(led==0x00){ output_a(1); delay_ms(100);output_a(0x00);led=1;}
   if(K==40){K=0;}
   }
   while(L)
   {
   L++;
   output_b(0xFF); output_a(0x01);delay_ms(200);  
   output_b(0x00); output_a(0x00);delay_ms(200);
   if(L==5){L=0;}
   }
   }
   }

NBR07

ellerinden öpüyorum kardeşim..çok saol

NBR07

#12
kardeşim ben bunu senin yaptığın kaymanın tam tersi şeklinde yapınca neden sapıtıyor acaba:) bi yardım edermisin tekrardan...
bu yoldan olmazmı ? Sen 1den başlıyarak arttıroysun ben 255den eksilterek ters şekilde kaydıramazmıyım?

while(h)
          {h=255;
           output_b(h);
           h--;
           led=led>>1;
           delay_ms(50);
           output_b(h);
   if(h==0x00)
          {
           output_a(1);
           delay_ms(50);
           output_a(0x00);
           h=255;
          }
   if(K==40)
          {
          K=0;
          }
          }

mesaj birleştirme:: 24 Mart 2013, 02:32:16

Kardeşim en son hali şu şekilde ama nedense sonradan eklediklerim 1 seferlik yapıyor yani durmadan döngüye giremiyor...
belirttiğim yerler sorunum. :-[
#include <16f628a.h>
#use delay(clock=4000000)
int led=1;
int K=1;
int L=1;
int J=1;
int h=255;
void main()
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);

  while(1)
   { led=1;
     K=1;
     L=1;
  ////////////////////////////////////
     while(K)
          {
           output_b(led);
           K++;
           led=led<<1;
           delay_ms(50);
           output_b(led);
   if(led==0x00)
          {
           output_a(1);
           delay_ms(50);
           output_a(0x00);
           led=1;
          }
   if(K==100)
          {
          K=0;
          }
          }
  
////////////////////////////////////
 :o//**kardeşim burası döngüye tekrar girmiyor**/// :o
 while(h)
          {
           output_b(h);
           K++;
           H=H>>1;
           delay_ms(50);
           output_b(H);
   if(H==128)
          {
           output_a(1);
           delay_ms(50);
           output_a(0x00);
           H=1;
          }
   if(K==100)
          {
          K=0;
          }
          }
 
////////////////////////////////////
 :o//**ve burasıda girmiyor döngüye**// :o
   while(L)
         {
          L++;
          output_b(0xFF);
          output_a(0x01);
          delay_ms(300);
          output_b(0x00);
          output_a(0x00);
          delay_ms(300);
   if(L==10)
         {
         L=0;
         }
         }
  
///////////////////////////////////
   while(J)
         {
         J++;
         output_b(0x1F);
         output_a(0x00);
         delay_ms(200);
         output_b(0xE0);
         output_a(0x01);
         delay_ms(200);
  if(J==8)
         {
         J=0;
         }
         }
   //////////////////////////  
   output_a(0x02);
   delay_ms(200);
   output_a(0x04);
   delay_ms(200);
   output_a(0x08);
   delay_ms(20);
   ///////////////////////////////
 }}

xoom

-Bir değişkeni sağa kaydırmak onu ikiye bölmeye eşittir. 
-Bazı değişkenleri global tanımlamışssın ama döngü bittiğinde hangi değerleri alacağını belirtmemişsin..

NBR07

bu kodlarda nerde yanlışım var kardeşim duzeltme sansın varmı :s
  #include <16f628a.h>
#use delay(clock=4000000)
int led=1;
int K=1;
int L=1;
int J=1;
int h=255;
void main()
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);

  while(1)
   { led=1;
     K=1;
     L=1;
  ////////////////////////////////////
     while(K)
          {
           output_b(led);
           K++;
           led=led<<1;
           delay_ms(50);
           output_b(led);
   if(led==0x00)
          {
           output_a(1);
           delay_ms(50);
           output_a(0x00);
           led=1;
          }
   if(K==100)
          {
          K=0;
          }
          }
  
////////////////////////////////////
 :o//**kardeşim burası döngüye tekrar girmiyor**/// :o
 while(h)
          {
           output_b(h);
           K++;
           H=H>>1;
           delay_ms(50);
           output_b(H);
   if(H==128)
          {
           output_a(1);
           delay_ms(50);
           output_a(0x00);
           H=1;
          }
   if(K==100)
          {
          K=0;
          }
          }
 
////////////////////////////////////
 :o//**ve burasıda girmiyor döngüye**// :o
   while(L)
         {
          L++;
          output_b(0xFF);
          output_a(0x01);
          delay_ms(300);
          output_b(0x00);
          output_a(0x00);
          delay_ms(300);
   if(L==10)
         {
         L=0;
         }
         }
  
///////////////////////////////////
   while(J)
         {
         J++;
         output_b(0x1F);
         output_a(0x00);
         delay_ms(200);
         output_b(0xE0);
         output_a(0x01);
         delay_ms(200);
  if(J==8)
         {
         J=0;
         }
         }
   //////////////////////////  
   output_a(0x02);
   delay_ms(200);
   output_a(0x04);
   delay_ms(200);
   output_a(0x08);
   delay_ms(20);
   ///////////////////////////////
 }}