PDA

View Full Version : Relay nhảy khi cấp nguồn cho 16F877A


vokihut
07-10-2010, 01:45 PM
Chào các bác,
Em có một mạch điều khiển relay nhỏ từ cổng B thông qua UNL2003, chân kia của relay nối dương nguồn.Em đang thử một một đoạn code đơn giản như bên dưới, tuy nhiên, không hiểu sao cấp nguồn vào mạch là relay đóng luôn (rồi nhả). Không biết khai báo #Fuses như thế có vấn đề gì không vậy ? Bác nào gặp rồi , chỉ giúp em với ! :(


#include <16F877A.h>
#fuses HS,NOPROTECT,NOLVP,NOWDT, NOPUT, NOBROWNOUT
#use delay(clock=11059200)


void main(){

port_b_pullups(false); // disable pull-up portB
set_tris_b(0b00000000); // output
portb = 0; // clear portB
//---------------------------------

delay_ms(100);

}

caovanhuong
07-10-2010, 09:40 PM
Chào các bác,
Em có một mạch điều khiển relay nhỏ từ cổng B thông qua UNL2003, chân kia của relay nối dương nguồn.Em đang thử một một đoạn code đơn giản như bên dưới, tuy nhiên, không hiểu sao cấp nguồn vào mạch là relay đóng luôn (rồi nhả). Không biết khai báo #Fuses như thế có vấn đề gì không vậy ? Bác nào gặp rồi , chỉ giúp em với ! :(


#include <16F877A.h>
#fuses HS,NOPROTECT,NOLVP,NOWDT, NOPUT, NOBROWNOUT
#use delay(clock=11059200)


void main(){

port_b_pullups(false); // disable pull-up portB
set_tris_b(0b00000000); // output
portb = 0; // clear portB
//---------------------------------

delay_ms(100);

}
đoạn code này mà biên dịch sáng được file hex là cũng hay rồi đấy, không khai báo địa chỉ thanh ghi portb sao mà nó cho biên dịch hay vậy.
code này nếu mà có đúng thì cấp nguồn vào relay thì nó nhảy là đúng vì relay đã nối sẵn (+) nên khi có mass là relay nhảy liền mà code của bạn là khi cấp nguồn thì portb =0 nên relay nhảy là đương nhiên rồi.

vokihut
08-10-2010, 09:25 AM
Em tìm thấy rồi, pull-up kéo ở bên ngoài :( :D , còn cái khái báo địa chỉ portB, em quên k post :D . Cảm ơn bác caovanhuong đã giúp.