View Single Post
Old 20-06-2010, 05:47 PM   #1
sit_alone76816
Đệ tử 2 túi
 
Tham gia ngày: Aug 2008
Bài gửi: 38
:
Cần giúp về hàm ngắt Capture !

Em đang làm 1 project có sử dụng ngắt Capture, nhưng khi em viết thì nó không hoạt động, hàm ngắt ko tác dụng gì . Em đang dùng C18, code như sau :

#include"p18f4520.h"
#include"delays.h"
#include"stdio.h"
#include"timers.h"
#include"capture.h"

#pragma config OSC=HS, WDT=OFF, PWRT=OFF,PBADEN=OFF,LVP=OFF

#define trigger PORTCbits.RC1
#define echo PORTCbits.RC2

#define enter PORTBbits.RB1
#define up PORTBbits.RB2

#define ledred PORTAbits.RA0 //led active Low
#define ledyellow PORTAbits.RA1
#define ledgreen PORTAbits.RA2


void ngat(void);

#pragma code InterruptVectorHigh = 0x08
void InterruptVectorHigh(void)
{
_asm goto ngat _endasm
}
#pragma code

#pragma interrupt ngat
void ngat (void)
{
INTCON &=0x7f; // disable interrupt

if(PIR1bits.CCP1IF==1)
{
PIR1bits.CCP1IF=0;
ledgreen=0; // On led Green
Delay1KTCYx(100);

}
ledyellow=0;
INTCON |=0x80; // enable interrupt
}
void main (void)
{
TRISC=0x94;
TRISB=0x1e;
PORTA=255;
PORTC=0;
ADCON1=0x0f;

INTCON=0x80;
PIE1bits.CCP1IE=1;

OpenCapture1( CAPTURE_INT_ON &
C1_EVERY_RISE_EDGE);

while(1)
{
ledred=0;
Delay1KTCYx(100);
ledred=1;
Delay10KTCYx(100);

}
if(up==0)
{
while(up==0);
trigger=1;
Delay10TCYx(100);
trigger=0;
}
}
}

Chương trình của em như sau: Khi em nhấn button up thì sẽ tạo 1 xung trigger tại chân RC1, sau đó sẽ có 1 module bên ngoài sẽ gửi lại 1 xung tại chân RC2 (CCP1). Khi có cạnh lên thì em cho ngắt ở đó. Em đã kiểm tra xung ở 2 pin RC1 và RC2, cả 2 vẫn tốt, nhưng còn hàm Ngắt thì không thực hiện.

Có phải em khai báo hàm ngắt sai hay không ? Mong các anh giúp đỡ !
sit_alone76816 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn