![]() |
|
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: Oct 2006
Bài gửi: 36
: |
E mới vào nghề,thắc mắc về CCP!
E dùng CCP bắt xung ngoài để đo tần số,vì e mới chuyển từ AT89 nên còn bỡ ngỡ mong đc chỉ bảo:
E có đoạn code như sau: #include<16f877.h> #fuses XT,NOLVP,NOWDT,PUT #use delay (clock=4000000) // defind crystal = 4MHz byte CONST MAP[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6 f}; //=========================================== // this function use to display number 00=99 // input : n = number to display //=========================================== void display(int n) { char b; b=((MAP[n/100]) ^ 0xff); //hang tram if ((n/100)==(0)) b=0xff; //kill Led not Value output_b(b); output_low(PIN_D0); delay_ms(1); output_high(PIN_D0); b=((MAP[(n%100)/10]) ^ 0xff); //hang chuc if ((n/100)==(0)&&(n/10)==(0)) b=0xff; //kill Led not Value output_b(b); output_low(PIN_D1); delay_ms(1); output_high(PIN_D1); output_b((MAP[n%10]) ^ 0xff); //hang dv output_low(PIN_D2); delay_ms(1); output_high(PIN_D2); } long rise,fall,pulse_width; unsigned int16 xung=0; // khai báo bie^'n encoder la so^' 16 bit #int_ccp2 void isr() { ++xung; rise = CCP_1; fall = CCP_2; pulse_width = fall - rise; // CCP_1 is the time the pulse went high } //============================================ // main program //============================================ void main() { setup_ccp1(CCP_CAPTURE_RE); // Configure CCP1 to capture rise setup_ccp2(CCP_CAPTURE_FE); // Configure CCP2 to capture fall setup_timer_1(T1_INTERNAL); // Start timer 1 enable_interrupts(INT_CCP2); // Setup interrupt on falling edge enable_interrupts(GLOBAL); while(TRUE) // vong lap lien tuc { displayxung); } } Xin hỏi cả nhà là giá trị xung đếm được cất ở thanh ghi nào?đoạn code trên e có dùng 1 biến xung ở trong phần ngắt để đếm xung nhưng xuất ra = 0.Có nghĩa là ct không nhảy vào ngắt,tại sao vậy? E có mô phỏng trên Proteus,2 chân ccp1,ccp2 được cấp xung đầy đủ nhưng vẫn kô có ngắt. Xin hỏi khai báo như trên đã đầy đủ chưa? |
![]() |
![]() |
|
|