![]() |
|
Tài trợ cho PIC Vietnam |
PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Đệ 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 đỡ ! |
![]() |
![]() |
![]() |
|
|