PIC16F877 Sayı 3
PIC16F877 ile Analog /Digital çevirim işleminin nasıl yapılacağını öğrenmek isteyenler icin mükemmel bir yazı kaçırmayın! Bu ay ki yazı dizimizde sizinle A/D çeviri işleminin 16F877�le nasıl gerçekleştirildiğini göreceğiz. Sade bir örnekle bunu inceleyelim. Bu devre potansiyometredeki analog değişimleri çıkışta dijital olarak binary şekilde 0 dan 255 e kadar saymaktadır. RA0 dan portundan girilen 0 la ……5 V arasındaki analog değişimleri 10 bit RB0 la RB7 arasında binary olarak sayısala dönüşüm işlemi ledlerle gözlenir ve program MPLAB programı ile hem derlenir hem de simüle edilir. MPLAB programını www.microchip.com dan ücretsiz olarak temin edilebilir.
  
 
 A/D çevirme işlemi 4 adet kaydediciyle yapılmaktadır. 
 · A/D yüksek kaydedicisi (ADRESH) 
 · A/D düşük kaydedicisi   (ADRESL) 
 · A/D kontrol kaydedici 0 (ADCON0) 
 · A/D kontrol kaydedici 1 (ADCON1) 
   
   
 ADCON0 kaydedicisi A/D işlemlerini kontrol registeri portlardan A0 A1 A2 A3 ün durumlarını belirler. 
 Bit 7-6 :ADCS1:ADCS0 
              00=Fosc/2 
   01=Fosc/8 
   10=Fosc/32 
   11=Frc 
 Bit 5-3 CHS2:CHS0 
     000=kanal0,(RA0/AN0) 
   001=kanal1,(RA1/AN1) 
    010=kanal2,(RA2/AN2) 
              011=kanal3,(RA3/AN3) 
              100=kanal4,(RA4/AN4) 
              101=kanal5,(RA5/AN5) 
              110=kanal6,(RA6/AN6) 
              111=kanal7,(RA7/AN7) 
 Bit 2:    GO/DONE 
   If ADON=1 
             1=A/D dönüştürerek ilerle 
             0=A/D dönüştürmeden ilerle 
 Bit 1:   unimplemented:oku �0� 
 Bit 0:   ADON:A/D on bit 
             1=A/D çevirici modülü çalıştır 
             0=A/D çevirici modülü çalıştırma 
   
 ;-         IŞIK ELEKTRONİK VE BİLİŞİM TEKNOLOJİLERİ          –  
 ;-          HARDWARE & SOFTWARE RESEARCH LABORATORY          – 
 ;-            COPYRIGHT & COPYWRITE (C) 2001  
                                                                          TEL:0388 2322889 
 ;- **********  DENEME  LED PROJECT ************         – 
 ;-                       Ver 1.0                             – 
 ;————————————————————-
  PROCESSOR 16F877 
  INCLUDE P16F877.INC 
  RADIX DEC 
  __IDLOCS H'0100' 
  __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _BODEN_ON & _XT_OSC
ORG 0
   BCF STATUS,RP0 ; Bank 0 
  BCF STATUS,RP1 ; Bank 0        0. sayfanın seçimi 
  MOVLW B'00100000' 
  MOVWF INTCON 
  MOVLW B'00000000' 
  MOVWF PORTA 
  MOVLW B'00000000' 
  MOVWF PORTB 
   MOVLW B'00000000' 
  MOVWF PORTC 
  MOVLW B'00000000' 
  MOVWF PORTD 
  MOVLW B'00000000' 
  MOVWF PORTE 
  movlw B'01000001' ;Konum/8, A/D enabled 
  movwf ADCON0
  BSF STATUS,RP0 ; Bank 1  
  BCF STATUS,RP1 ; Bank 1 
  MOVLW B'10000111' ;TMR0 prescaler, 1:256 Bölme palsı 
  MOVWF OPTION_REG 
  MOVLW B'00001110' ;Left seçme,1 analog channel  
  MOVWF ADCON1 
  MOVLW B'00000001' 
  MOVWF TRISA 
  MOVLW B'00000000' 
  MOVWF TRISB 
  MOVLW B'00000000' 
  MOVWF TRISC 
  MOVLW B'00000000' 
  MOVWF TRISD 
   MOVLW B'00000000' 
  MOVWF TRISE 
  BCF STATUS,RP0 ; Bank 0 
  BCF STATUS,RP1 ; Bank 0 
 ;————————————-program baslangıcı————————————-
 MAIN 
 YENILE 
  btfss INTCON,T0IF ;Bekleme  Timer0 to çikışı 
  goto YENILE 
  bcf INTCON,T0IF 
  bsf ADCON0,GO ;basla A/D cevirmeye 
 Wait 
  btfss PIR1,ADIF ;islem bitene kadar bekle 
  goto Wait 
  movf ADRESH,W ;yaz A/D sonuç to PORTD 
  movwf RAM  ;LED displeye 

 
																			 
																			 
																			 
																			 
																			 
																			 
																			 
																			 
																			 
																			 
																			 
																			