PDA

View Full Version : PIC16F887 không tự chạy khi cấp nguồn


MINHENG
28-01-2013, 06:34 PM
Chào các anh/chị,
tôi đang tự học PIC và có vấn đề khi nạp xong code:
-Tôi thử ban đầu bằng một đoạn code đơn giản:
#include<16F887.h>
#fuses NOWDT,HS,NOPROTECT
#use delay(clock=20000000)
main()
{
while(true)
{
output_high(PIN_D0);
delay_ms(1000);
output_low(PIN_D0);
delay_ms(1000);
output_high(PIN_D1);
delay_ms(1000);
output_low(PIN_D1);
delay_ms(1000);
output_high(PIN_D2);
delay_ms(1000);
output_low(PIN_D2);
delay_ms(1000);
output_high(PIN_D3);
delay_ms(1000);
output_low(PIN_D3);
delay_ms(1000);
output_high(PIN_D4);
delay_ms(1000);
output_low(PIN_D4);
delay_ms(1000);
output_high(PIN_D5);
delay_ms(1000);
output_low(PIN_D5);
delay_ms(1000);
output_high(PIN_D6);
delay_ms(1000);
output_low(PIN_D6);
delay_ms(1000);
}
}

----------
Mạch chạy bình thường, nhưng khi ngắt nguồn điện cho board sau đó cấp lại thì mạch không tự chạy, muốn mạch chạy thì phải cắm dây nối từ USB máy tính vô mạch nạp (PICKIT2 của Thiên Minh) thì mạch chạy, rút dây USB mạch nạp ra thì nó vẫn chạy.
Chỉ khi ngưng cấp nguồn, sau đó cấp lại thì nó im re, phải nhá dây USB vào sau đó rút ra thì nó chạy bình thường.
Tôi dùng nạp trên board theo hướng dẫn sơ đồ các dây nạp trên manual của PICKIT2. Sau đó kéo dây ra jack cắm mạch nạp.
Còn phần cứng thì tôi làm theo như bài hướng dẫn của các anh trong diễn đàn này, chân MCRL của PIC thì tôi nối qua điện trở 10K vào nguồn 5V và đấu chung với VDD.
Mạch như thế này
Cảm ơn các anh/chị

thupicvn
29-01-2013, 11:54 AM
Cho em hỏi. em muốn post bài mới nhấn ở chỗ nào nhỉ??? hiii

buivantuyen89th
30-01-2013, 12:24 AM
Chào các anh/chị,
tôi đang tự học PIC và có vấn đề khi nạp xong code:
-Tôi thử ban đầu bằng một đoạn code đơn giản:
#include<16F887.h>
#fuses NOWDT,HS,NOPROTECT
#use delay(clock=20000000)
main()
{
while(true)
{
output_high(PIN_D0);
delay_ms(1000);
output_low(PIN_D0);
delay_ms(1000);
output_high(PIN_D1);
delay_ms(1000);
output_low(PIN_D1);
delay_ms(1000);
output_high(PIN_D2);
delay_ms(1000);
output_low(PIN_D2);
delay_ms(1000);
output_high(PIN_D3);
delay_ms(1000);
output_low(PIN_D3);
delay_ms(1000);
output_high(PIN_D4);
delay_ms(1000);
output_low(PIN_D4);
delay_ms(1000);
output_high(PIN_D5);
delay_ms(1000);
output_low(PIN_D5);
delay_ms(1000);
output_high(PIN_D6);
delay_ms(1000);
output_low(PIN_D6);
delay_ms(1000);
}
}

----------
Mạch chạy bình thường, nhưng khi ngắt nguồn điện cho board sau đó cấp lại thì mạch không tự chạy, muốn mạch chạy thì phải cắm dây nối từ USB máy tính vô mạch nạp (PICKIT2 của Thiên Minh) thì mạch chạy, rút dây USB mạch nạp ra thì nó vẫn chạy.
Chỉ khi ngưng cấp nguồn, sau đó cấp lại thì nó im re, phải nhá dây USB vào sau đó rút ra thì nó chạy bình thường.
Tôi dùng nạp trên board theo hướng dẫn sơ đồ các dây nạp trên manual của PICKIT2. Sau đó kéo dây ra jack cắm mạch nạp.
Còn phần cứng thì tôi làm theo như bài hướng dẫn của các anh trong diễn đàn này, chân MCRL của PIC thì tôi nối qua điện trở 10K vào nguồn 5V và đấu chung với VDD.
Mạch như thế này
Cảm ơn các anh/chị
Bạn nên post hình đầy đủ để mọi người xem kỹ hơn! Theo mình nghĩ là do mạch reset thôi. Bạn thử thay tụ C14, C15 bằng tụ gốm 103 hoặc 104 xem. chứ còn chương trình đó mình nạp vào mạch của mình vẫn chạy bình thường.
Good Luck!

pstin
30-01-2013, 06:31 PM
Chào các anh/chị,
tôi đang tự học PIC và có vấn đề khi nạp xong code:
-Tôi thử ban đầu bằng một đoạn code đơn giản:
#include<16F887.h>
#fuses NOWDT,HS,NOPROTECT
#use delay(clock=20000000)
main()
{
while(true)
{
output_high(PIN_D0);
delay_ms(1000);
output_low(PIN_D0);
delay_ms(1000);
output_high(PIN_D1);
delay_ms(1000);
output_low(PIN_D1);
delay_ms(1000);
output_high(PIN_D2);
delay_ms(1000);
output_low(PIN_D2);
delay_ms(1000);
output_high(PIN_D3);
delay_ms(1000);
output_low(PIN_D3);
delay_ms(1000);
output_high(PIN_D4);
delay_ms(1000);
output_low(PIN_D4);
delay_ms(1000);
output_high(PIN_D5);
delay_ms(1000);
output_low(PIN_D5);
delay_ms(1000);
output_high(PIN_D6);
delay_ms(1000);
output_low(PIN_D6);
delay_ms(1000);
}
}

----------
Mạch chạy bình thường, nhưng khi ngắt nguồn điện cho board sau đó cấp lại thì mạch không tự chạy, muốn mạch chạy thì phải cắm dây nối từ USB máy tính vô mạch nạp (PICKIT2 của Thiên Minh) thì mạch chạy, rút dây USB mạch nạp ra thì nó vẫn chạy.
Chỉ khi ngưng cấp nguồn, sau đó cấp lại thì nó im re, phải nhá dây USB vào sau đó rút ra thì nó chạy bình thường.
Tôi dùng nạp trên board theo hướng dẫn sơ đồ các dây nạp trên manual của PICKIT2. Sau đó kéo dây ra jack cắm mạch nạp.
Còn phần cứng thì tôi làm theo như bài hướng dẫn của các anh trong diễn đàn này, chân MCRL của PIC thì tôi nối qua điện trở 10K vào nguồn 5V và đấu chung với VDD.
Mạch như thế này
Cảm ơn các anh/chị

Các con vi điều khiển, mặc dù là mua chợ trời, đồ dỏm, nhưng nếu mạch và chương trình đúng thì vẫn chạy ngon lành.
Chỉ khi bạn mua IC cũ thì không chắc thôi!!!...
Các mạch lúc chạy lúc không là do chương trình có thiếu sót, chủ yếu là phần khai báo, cấu hình,...
Chương trình của bạn chưa thấy lệnh:
set_tris_D(0);
Chưa có file:
#include <def_16f887.h>
(Ít ra thì cũng định nghĩa các port cho nó, tốt hơn là kèm luôn cái file def_16f887.h vào).

henrypro24
06-10-2014, 09:08 PM
Các con vi điều khiển, mặc dù là mua chợ trời, đồ dỏm, nhưng nếu mạch và chương trình đúng thì vẫn chạy ngon lành.
Chỉ khi bạn mua IC cũ thì không chắc thôi!!!...
Các mạch lúc chạy lúc không là do chương trình có thiếu sót, chủ yếu là phần khai báo, cấu hình,...
Chương trình của bạn chưa thấy lệnh:
set_tris_D(0);
Chưa có file:
#include <def_16f887.h>
(Ít ra thì cũng định nghĩa các port cho nó, tốt hơn là kèm luôn cái file def_16f887.h vào).

Bạn có file def_16f887.h không cho mình xin với