PIC16F877 CCS C İLE LED SİNYAL

CCS C derleyicisi ile yazılmış ve PIC16F877 kullanılmış örnek bir led uygulaması. Bir ledi belli aralıklarla yakıp söndüren program. 



PIC16F877 ile uygulamalar geliştirebilmek için ilk bilmemiz gerekenler; PIC16F877 portları hangileridir, bu portları nasıl 1 yaparız, nasıl 0 yaparız, bu portları giriş veya çıkış yapmak için hangi komutları kullanmalıyız. Zamanlayıcıyı nasıl kullanırız ve ayarlarız gibi sorulardır. Bu yazıda bu soruların cevapları verilecek ve örnek bir uygulama yer alacaktır.

PIC16F877 mikro işlemcisinin B portunun tüm ayaklarını çıkış olarak kullanmak için vereceğimiz komut;

set_tris_b(0x00);

Eğer B portunun pinlerini ledlere, motorlara vs. bağlayacaksak, dış ünitelere bağlanacak olan bu pinler çıkış olarak ayarlanmalı.


Eğer B portunun tüm pinlerini giriş yapmak isteseydik kullanacağımız komut;

set_tris_b(0xFF); 

Olacaktı.

Bir portun pin veya pinleri button, sensör gibi dış ünitelere bağlanacaksa, ilgili pinler giriş olarak ayarlanmalı.


B portlarının tüm çıkışlarını 0’lamak için kullanacağımız komut;

output_b(0x00);

Eğer PORTB nin tüm ayaklarını 1 yapmak isteseydik kullanacağımız komut

output_b(0xFF);

Olacaktı.

B portlarının hangilerinin 1 hangilerinin sıfır olacağını özel olarak veya tek tek ayarlamak istersek kullanacağımız kod;

output_b(0b10000001);

Şeklinde bir kod olacaktır. Yukarıdaki kod satırı B portunun 0 ıncı ve 7 inci pinlerini 1 yapar, diğerlerini 0 yapar.


         

Örneğimizde basit bir sinyal uygulaması yapacağız. Örneğimizde B portunun 1. Ayağına bağlı ledi belli aralıklarla yakıp söndüren basit bir uygulama verilecektir.


#include <16f877A.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD 
#use delay(clock=4000000)   
void main()
{
      setup_psp(PSP_DISABLED);        
      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_b(0x00);    
      output_b(0x00);      
   
   while(TRUE)
   {
      output_b(0b00000001);
      delay_ms(500);
      output_b(0b00000000);
      delay_ms(500);
     
     
   }
}


ÇOKLU LED SİNYAL KONTROLÜ


YÜRÜYEN IŞIK DEVRESİ



SANATSAL BİLGİ

08/10/2016

  • YORUM YAZ
  • ADI SOYADI(veya nick)
  • YORUM

COPYRIGHT© HER HAKKI SAKLIDIR
Sitede Yer Alan Bilgi Belge Ve Materyallerin İzinsiz olarak Kopyalanması ve Alıntılanması Yasaktır

SANATSAL BILGI