ilker
Üye
- Katılım
- 26 Eyl 2006
- Mesajlar
- 73
- Puanları
- 1
- Yaş
- 40
Arkadaşlar merhabağlar izin verirseniz bir soru sormak istiyorum. Ben bu işe yeni başlayan biri olarak bazı yardımlAR alarak aşşağıdaki programı yazdım. Teorikte sorun yok ama pratikte problemm, yaşadım. programı yüklediğim pic i deniyorum analog uca belirttiğim sınırlar içindeki voltajı verince 21 nolu pin ve 40 nolu pin arasından vSS ve vDD uçları dışında kalan uçlardan yaklaşık 1,43 vdc civarında voltajlar okuyorum.analog girişi iptal edince çıkış voltajları kayboluyor. böyle garip birşey yapıyor.Acaba diyorum,pic e program yüklerken jumper falan atmam gereken yerler mi var (uygulamalarda kitaplarda bunlardan bahsediliyor mesala port b jumper ı led konumunda olmalı gibi bu konuda da bilgi veren olursa eğer minnettar kalırım nedir bu jumper, nasıl led konumuna alınır mesala) Yada gözden kaçırdığım yada ihmal ettiğim birşey mi var.Yardımcı olursanız sevinirim.Artı kullanmadığım port çıkışlarınıda sıfırladım.
SAĞOLASINIZ...
/************************************************** ****
PIC16F877A ile Analog Voltaj Kesmesi
PIC PROG/DEKA : Port B jumper'ı LED konumunda olmalı
************************************************** *****/
#include <16F877A.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
#device ADC=10
// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NO DEBUG,NOCPD
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
//#use fast_io(a) //Port yönlendirme komutları A portu için geçerli
//#use fast_io(b)
int i ;
long deger,max,min,bilgi;
float voltaj;
/********* ANA PROGRAM FONKSİYONU********/
void main ( )
{
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_spi(SPI_SS_DISABLED); // SPI birimi devre dışı
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_CCP1(CCP_OFF); // CCP1 adc(ADC_OFF);birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı
set_tris_b(0x00); // B portu komple çıkış
output_b(0);
set_tris_c(0x00);
output_c(0);
set_tris_d(0x00);
output_d(0);
setup_adc_ports(RA0_ANALOG);
setup_adc(adc_clock_internal);
set_adc_channel(0);
while (true)
{
delay_us(20);
bilgi=read_adc();
voltaj=0.0048828125*bilgi;
if ((voltaj>=2.16) && (voltaj<=3.94))
{
output_high(PIN_B0);
}
else
{
output_low(PIN_B0);
}
if ((voltaj>=1.17) && (voltaj<=1.82))
{
output_high(PIN_B1);
}
else
{
output_low(PIN_B1);
}
}
}
SAĞOLASINIZ...
/************************************************** ****
PIC16F877A ile Analog Voltaj Kesmesi
PIC PROG/DEKA : Port B jumper'ı LED konumunda olmalı
************************************************** *****/
#include <16F877A.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
#device ADC=10
// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NO DEBUG,NOCPD
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
//#use fast_io(a) //Port yönlendirme komutları A portu için geçerli
//#use fast_io(b)
int i ;
long deger,max,min,bilgi;
float voltaj;
/********* ANA PROGRAM FONKSİYONU********/
void main ( )
{
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_spi(SPI_SS_DISABLED); // SPI birimi devre dışı
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_CCP1(CCP_OFF); // CCP1 adc(ADC_OFF);birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı
set_tris_b(0x00); // B portu komple çıkış
output_b(0);
set_tris_c(0x00);
output_c(0);
set_tris_d(0x00);
output_d(0);
setup_adc_ports(RA0_ANALOG);
setup_adc(adc_clock_internal);
set_adc_channel(0);
while (true)
{
delay_us(20);
bilgi=read_adc();
voltaj=0.0048828125*bilgi;
if ((voltaj>=2.16) && (voltaj<=3.94))
{
output_high(PIN_B0);
}
else
{
output_low(PIN_B0);
}
if ((voltaj>=1.17) && (voltaj<=1.82))
{
output_high(PIN_B1);
}
else
{
output_low(PIN_B1);
}
}
}