PIC16F877 ADC için yardım

Başlatan ygunbt, 09 Aralık 2008, 13:47:36

ygunbt

çok teşekkür ederim arslan74 ilgine.
benim kavrayamadığım nokta  while((ADCON0&4)!=0);  ifadesiydi.
bu ifade " GO/DONE biti sıfıra eşit değilse " anlamına mı  geliyor ? aynı zamanda & operatörünün anlamı nedir?
birde ADRESH ve ADRESL kaydedicilerini anlayamadım.
yani adc 10 bitlik çeviri yapıyor ama bu kaydediciler 8 er bitlik.
elde ettiğimiz 10 bitlik degerimiz bu kaydedicilere nasıl yazılıyor?
yani 5 biti ADRESH'a, diger 5 biti de ADRESL'a mı? yazılıyor
adc de 10 bitlik çevrim yapılıyorsa neden iki tane 8 bitlik kaydediciye kayıt ediliyor?
mesela birtane ADRES adında 10 bitlik bir kaydedici kulanılamaz mıydı?

arslan74

Merhaba,

Ben daha önce bu konuları ayrıntılı anlatan eğitim yazısı hazırladım. Onları incelemenizi tavsie ediyorum.

linki aşağıda.

http://picproje.org/index.php/topic,19320

Selamlar,

Not: Ayrıca başka konularda eğitim konuları hazırladım. Önce onları inceleyin sonra anlamadığınız konular var ise o zaman soru sorun.

ygunbt

teşekkürler arslan74 çok faydalı oldu yönlendirmen.

sagamen

merhaba belki başka fikirler verebilir  ccs c  olarak kucuk bir demo

Alıntı Yap
/////////////////////////////////////////////////////////////////////////
////                         CCS PICC COMPILER                       ////
/////////////////////////////////////////////////////////////////////////
//   main.c   //

#TYPE short=8, int=16, long=32

#if defined(__PCM__)
#include <16F873A.h>
#fuses HS,NOLVP,NOWDT,NOPUT,NOBROWNOUT,NOPROTECT
#use delay(clock=10000000)
#ZERO_RAM
#endif

#include   "main.h"

///////////////////////////////////////////////////////

//***** main program *****//

main()
{
   SET_TRIS_A( IOBITS_A );
   SET_TRIS_B( IOBITS_B );
   SET_TRIS_C( IOBITS_C );
   setup_adc (ADC_CLOCK_INTERNAL);
   set_adc_channel( 0 );
   do{
      value = read_adc();
   for(i = 0; i <= 23; ++i){
       write_expanded_outputs(tablo8);
       //write_expanded_outputs(tablo8[1]);
       GONDER;
       delay_ms(read_adc());
   }
   for(i = 23; i > 0;){
      --i;
       write_expanded_outputs(tablo8);
       //write_expanded_outputs(tablo8[1]);
       GONDER;
       delay_ms(read_adc());
   }   
   
   } while ( TRUE );
}
//-------------------------------------------------------------------//
//-------------------------------------------------------------------//
herkEse kolay gelsin