16f84 kullanarak PortB'in 0. bitine bağlı butona basıldığında PORTA'nın 0. bitine bağlı ledi yakmaya çalışıyorum. Programı MikroC ile yazdım. Programın bir yerlerinde hata olmalı. Proteustanda simulasyonu var.
Proje dosyası ve simulasyonunu aşağıdaki linkten indirebilirsiniz.
Yardımınızı bekliyorum.
http://www.hemenpaylas.com/download/1517025/interrupt.rar.htm
Yazdığım C kodunuda vereyim.
void interrupt(void)
{
INTCON.INTF=0;
PORTA.f0=1;
}
void main()
{
TRISA.f0=0;
trisb.f0=1;
porta.f0=0;
INTCON=0b10010000;
OPTION_REG=0;
OPTION_REG.INTEDG=1;
while(1)
{
}
}
http://www.hemenpaylas.com/download/1518756/interrupt_2.rar.html
void interrupt(void)
{
PORTA.F0=1;
INTCON.F1=0;
}
void main()
{
TRISA=0;
TRISB=0b00000001;
PORTA=0;
PORTB=0;
INTCON=0x90;
OPTION_REG.F6=1;
while(1)
{
}
}
MikroC'de proje ayarlarında mikrodenetleyicinin 18f452'ye göre ayarlandığını farkettim.
senin göndermiş olduğun dosyalarda ufak tefek değişiklikler yaptım çalıştı
kolay gelsin.
Yukarıdaki kod inen kenar interrupt için,
çıkan kenar interrupt için OPTION_REG.F6=0 yapmanız yeterlidir.
Kodun son hali
void interrupt(void)
{
PORTA.F0=1;
INTCON.F1=0;
}
void main()
{
TRISA=0;
TRISB=0b00000001;
PORTA=0;
PORTB=0;
INTCON=0x90;
OPTION_REG.F6=0;
while(1)
{
}
}