A portundan alınan 6 bitlik bilgiyi b,c ve d portlarına göndermek

Başlatan umut123123, 11 Mart 2011, 05:13:39

umut123123

yapacağım bir uygulamda A portu giriş olarak b,c ve d portları çıkış olarak kullanılması gerekiyor. A portundan alınan 6 bitlik bilgiyi b,c ve d portlarına göndermek için CCS de birşeyler yaptım ama isiste çalışmıyor. giriş portunu A değil de B yaptığım zaman çalışıyor. sorun nedir acaba
#include <16f887.h>
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOPUT,NODEBUG,NOCPD
#use delay(clock=8000000)
#USE FAST_io(a)
#USE FAST_io(b)
#USE FAST_io(c)
#USE FAST_io(d)
#USE FAST_io(e)
int oku   ;    //  oku adinda 8 bitlik degiskenler tanımlanıyor
const int dijit[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7C, 0x07, 0x7F, 0x6F};

/*************ana program**************/
void main (void)
{
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);


set_tris_a(0b111111);    //a portu giriş
set_tris_b(0x00);    //b portu çikis
set_tris_c(0x00);    //c portu çikis
set_tris_d(0x00);    //d portu çikis
set_tris_e(0b000);    //e portu çikis

output_a(0x00);      // a portu temizle
output_b(0x00);      // b portu temizle
output_c(0x00);      // c portu temizle
output_d(0x00);      // d portu temizle
output_e(0b000);      // e portu temizle

while(1)               // sonsuz döngü
   {
       
      oku=input_a();
      switch(oku)
   {
      case 1:
     
      output_b(dijit[1]);
      output_c(dijit[0]);
      output_d(dijit[1]);
          delay_ms(500);
      output_b(0x00);   
      output_c(0x00); 
      output_d(0x00); 
      break;
     
      case 2:             
      output_b(dijit[1]);
      output_c(dijit[0]);
      output_d(dijit[2]);
          delay_ms(500);
      output_b(0x00);   
      output_c(0x00); 
      output_d(0x00);
      break;

Salih

 switch yapısında mutlaka default: seçeneğini de koymak gerekiyor.
switch(oku)
   {
      case 1:      
      output_b(dijit[1]);
      output_c(dijit[0]);
      output_d(dijit[1]);
          delay_ms(500);
      output_b(0x00);   
      output_c(0x00);  
      output_d(0x00);  
      break;      
      case 2:              
      output_b(dijit[1]);
      output_c(dijit[0]);
      output_d(dijit[2]);
          delay_ms(500);
      output_b(0x00);   
      output_c(0x00);  
      output_d(0x00);
      break;
default: }




umut123123

switch yapısında mutlaka default: seçeneğini de koymak gerekiyor. demişsiniz. kodların hepsini yazmadım sadece kalıbı görmeniz açısından bir kısmını yazdım. sizin görmediğiniz kısımda switch yapısının sonunda default var teşekkürler

frkcn

a portu giriş olarak tanımlanmış ve ilerleyen satırlarda porta bilgi gönderiyorsunuz..
Alıntı yapılan: umut123123 - 11 Mart 2011, 05:13:39
set_tris_a(0b111111);    //a portu giriş
set_tris_b(0x00);    //b portu çikis
set_tris_c(0x00);    //c portu çikis
set_tris_d(0x00);    //d portu çikis
set_tris_e(0b000);    //e portu çikis

output_a(0x00);      // a portu temizle  <<<<<<<<<<<<<
Bugün ömrümün geride kalan son günü...

izturk

benim gözüme şu takıldı. tam emin değilim ama

set_tris_a(0b111111);    //a portu giriş

buraya 6 bitlik bir sayı yazmışsınız. a portu 6 pin ama trisA register i 8 bitliktir.

set_tris_a(0b11111111); yazarak denemek lazım. belki bundan kaynaklanıyordur.