pic 16f84 ile RB0 pininden kesme yaptırmak istiyorum,kodları derliyo ama simulasyonda çalışmıyor.
*******************************************************************************
#include <16F84.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#use delay(clock=4000000)
int i;
#int_ext //dış kesme (RB0/INT)
void ext_kesmesi()
{
output_high(pin_b1);
delay_ms(1000);
output_low(pin_b1);
delay_ms(600);
for (i=0;i<10;i++);
{
output_high(pin_b1);
delay_ms(200);
output_low(pin_b1);
delay_ms(200);
}
}
void main()
{
set_tris_b(0x01);
output_b(0x00);
ext_int_edge(H_TO_L);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
while(1);
}
Devre şemanı vs. atabilirmisin?
şema yok,interrupts ların mantığını kavramak için.simulatörde çalıştırıp deniyorum.(PicSimulator)
#include <16F84.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#use delay(clock=4000000)
int i;
#int_ext //dış kesme (RB0/INT)
void ext_kesmesi()
{
output_toggle(PIN_B1);
}
void main()
{
set_tris_b(0x01);
// output_b(0x00);
ext_int_edge(H_TO_L);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
while(1);
}
Alıntı yapılan: umit2006 - 29 Temmuz 2012, 14:54:47
pic 16f84 ile RB0 pininden kesme yaptırmak istiyorum,kodları derliyo ama simulasyonda çalışmıyor.
*******************************************************************************
#include <16F84.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#use delay(clock=4000000)
int i;
#int_ext //dış kesme (RB0/INT)
void ext_kesmesi()
{
output_high(pin_b1);
delay_ms(1000);
output_low(pin_b1);
delay_ms(600);
for (i=0;i<10;i++);
{
output_high(pin_b1);
delay_ms(200);
output_low(pin_b1);
delay_ms(200);
}
}
void main()
{
ext_int_edge(H_TO_L);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
while(1);
}
birde böyle denermisiniz?
#USE fast_IO (B) //b portunu hızlı giriş çıkış yapıyo
Hmm evet @halilgalic haklı B portunu çıkış yapmadan olmaz.
#use fast_io(b) veya
set_tris_b(0x00) kullanmalısınız...
FATİH hocam
#use fast_io(b)
set_tris_b(0x00) ikisi aynı anlamda değil #use fast_io(b) portun hızlı gisiş cıkış olacagını anlatıyo. set_tris_b(0x00) giriş veya çıkışı belirtiyo;)
değerli arkadaşlar gösterdiğiniz ilgi için teşekkür ederim,sorun kullandığım simulator programındaymış,PIC Simulator IDE 'de denedim dış kesme çalıştı.çok teşekkür ediyorum ilgilenenler için..
@halilgalic arkadaşım ben onalr aynı anlamdadır demedim ki zaten.Eğer arkadaş set_tris_b(0x01) yazarsa da aynı sonucu alır.PIC çekirdeği zaten Little Endian yani 0.bit 0.pine karşılık geliyor
Detay girmek gerekirse:
Fast IO kullanmak programın yavaşlamasına neden olur.Her kullanımda portun kullanılan bitleri için TRIS komutu kullanılır.Baştan TRIS belirtmek ise daha hızlı giriş çıkış işlemi yapmayı sağlar.Zaten donanımsal olarak bir pini hem giriş hemde çıkış olarak kullanmak mümkün değildir.Datasheetleri karıştırmanı tavsiye ederim... ;D