![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Jul 2009
Bài gửi: 17
: |
![]() Nhờ các bác giúp giùm cái này. Em đang xài con PIC6F877A. Vấn đề là em đang thử test chế độ đếm của timer0. Vì vậy em kích chân RB7 lên 1 rồi delay rồi lại xuống 0, mục đích là tạo ra xung cho timer0 đếm. Sau đó em nối chân RB7 vào chân của timer0 cho nó đếm. Timer0 đếm trong 200ms thì sẽ gửi lên PC.
Code này em nạp bình thường, nhưng khi chạy thì thấy con PIC nóng lên, mạch chạy cũng thế. Sau đó em nạp lại chương trình khác vào thì Winpic800 báo detcted-->UNKNOWN. Thật sự là ko hiểu tại sao nữa??? |
![]() |
![]() |
![]() |
#2 | |
Trưởng lão PIC bang
|
Trích:
Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#3 | |
Đệ tử 1 túi
Tham gia ngày: Jul 2009
Bài gửi: 17
: |
Trích:
Code:
#include <16F877A.h> #FUSES NOWDT #FUSES HS #FUSES NOPUT #FUSES NOPROTECT #FUSES NODEBUG #FUSES NOBROWNOUT #FUSES NOLVP #FUSES NOCPD #FUSES NOWRT #use delay (clock=20000000) //20Mhz #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, parity=N, bits=8) #include <stdlib.h> #include <string.h> #include <math.h> #define START_VALUE_TIMER0 55 //tri khoi tao ban dau cua timer0 #define START_VALUE_TIMER1 3035 // 65536 - 3036, tao thoi gian ngat 50ms int16 j = 0; int16 flag_timer1; int16 pulse; #INT_TIMER0 // ngat timer0 tang bien len 1 void TIMER0_int() { pulse++; } #INT_TIMER1 // ngat timer0 tang bien len 1 void timer1_int() // moi lan timer1 tran la 0.05s { if (j == 4){ // chu ki lay mau 0.05 * 4 = 0.2s j = 0; pulse = pulse*256 + get_timer0(); flag_timer1 = 1; printf(" \t%ld",pulse); // truyen toc do xung dong co 1 ve may tinh } else j++; } void init_timer() { setup_timer_0(RTCC_EXT_H_TO_L); set_timer0(START_VALUE_TIMER0); setup_timer_1(T1_INTERNAL | T1_DIV_BY_4); // moi lan tran timer1 la (65536-3036)*4*4/20000000=50ms set_timer1(START_VALUE_TIMER1); enable_interrupts(GLOBAL); enable_interrupts(INT_TIMER1); enable_interrupts(INT_TIMER0); } void main() { init_timer(); while(true) { if (flag_timer1 ==1){ flag_timer1 = 0; output_high(PIN_B7); delay_us(1200); output_low(PIN_B7); delay_ms(18); } } } } thay đổi nội dung bởi: namqn, 27-10-2009 lúc 09:54 PM. Lý do: định dạng code |
|
![]() |
![]() |
![]() |
Tags |
parity=n, rcv=pin_c7, xmit=pin_c6 |
|
|