PDA

View Full Version : khai báo cấu hình cho PIC 16f88 để sử dụng chân MCRL là chân I/O


pucapuca123
07-07-2011, 05:58 PM
các bác ơi giúp em với.
em đã chót làm mạch với PIC 16F88.với chân số 4 tức là chân( RA5/MCLR/VPP) làm chân I/O.
nhưng khi cấu hình:
__CONFIG(FOSC_HS & PWRTE_ON & BOREN_ON & WDTE_OFF & MCLRE_OFF & LVP_OFF)

và làm bình thường thì PIC toàn treo và đơ thui.

void main()
{
ANNEL=0x00;
TRISA=0x00;
TRISB=0x00;
while(1)
{
RA5=1;/// vậy mà đo ở RA5 lại=0

//VÀ THỬ CÁC CHÂN KHÁC ĐỀU KHÔNG CHẠY=>PIC ko chạy
}
}
nếu nối chân RA5 với 10k và với nguồn 5v thì
thì mạch lại chạy bình thường.
em đoán là tại cái chân số 4 tức là chân( RA5/MCLR/VPP).nó ko cấu hình đúng để làm chân I/O.
CÁC BÁC CHỈ EM CÁCH CẤU HÌNH ĐỂ EM DÙNG ĐƯỢC CHÂN SỐ 4 TỨC LÀ CHÂN(RA5/MCRL/VPP) CỦA PIC 16F88 LÀM CHÂN I/O VỚI!
EM VIẾT BẰNG HI TECH PIC

pucapuca123
08-07-2011, 12:20 AM
up cái mong có cao nhân đi qua

pucapuca123
08-07-2011, 12:35 AM
up cái mong có cao nhân đi qua

stupid11
08-07-2011, 09:24 AM
http://i1090.photobucket.com/albums/i375/dungdt08b/RA5.jpg

-Theo mình biết con PIC16F88 thì chân RA5 mặc định là chân Reset,nên bạn phải dùng điện trở kéo lên nguồn.vì Reset active-low mà.,
-Muốn khai báo RA5 là I/0 thì bạn phải tác động vào bit MCLRE,nằm trong thanh ghi nào thì mình cũng không nhớ nữa.cụ thể MCLRE = 0 thì cho phép RA5 là chân I/O,còn muốn là I hay O thì tác động vào thanh ghi TRIS cái này chắc bạn cũng biết rồi..còn MCLRE = 1 (bit này mặc định là 1) thì RA5 là chân Reset.

tdm
08-07-2011, 11:10 AM
các bác ơi giúp em với.
em đã chót làm mạch với PIC 16F88.với chân số 4 tức là chân( RA5/MCLR/VPP) làm chân I/O.
nhưng khi cấu hình:
__CONFIG(FOSC_HS & PWRTE_ON & BOREN_ON & WDTE_OFF & MCLRE_OFF & LVP_OFF)

và làm bình thường thì PIC toàn treo và đơ thui.

void main()
{
ANNEL=0x00;
TRISA=0x00;
TRISB=0x00;
while(1)
{
RA5=1;/// vậy mà đo ở RA5 lại=0

//VÀ THỬ CÁC CHÂN KHÁC ĐỀU KHÔNG CHẠY=>PIC ko chạy
}
}
nếu nối chân RA5 với 10k và với nguồn 5v thì
thì mạch lại chạy bình thường.
em đoán là tại cái chân số 4 tức là chân( RA5/MCLR/VPP).nó ko cấu hình đúng để làm chân I/O.
CÁC BÁC CHỈ EM CÁCH CẤU HÌNH ĐỂ EM DÙNG ĐƯỢC CHÂN SỐ 4 TỨC LÀ CHÂN(RA5/MCRL/VPP) CỦA PIC 16F88 LÀM CHÂN I/O VỚI!
EM VIẾT BẰNG HI TECH PIC
theo như cấu hình thì nó phải chạy chứ nhỉ.
tôi viết trên ccs c:

#include <16F88.h>
#fuses NOWDT,PUT,RC,NOPROTECT,NOMCLR,INTRC_IO
#use delay(clock=4000000)
int8 bien;
int8 quay;
MAIN()
{
SETUP_ADC(ADC_OFF);
SETUP_ADC_PORTS(NO_ANALOGS );
set_tris_a(0x00);
while(1){
bien=0x01;
for(quay=0;quay<=7;quay++)
{
output_a(bien);
delay_ms(1000);
bien<<=1;
output_a(bien);
}
}
while(1)
{
}
}
bạn thử lạp file hex này xem nó có chạy không.

pucapuca123
10-07-2011, 08:35 AM
http://i1090.photobucket.com/albums/i375/dungdt08b/RA5.jpg

-Theo mình biết con PIC16F88 thì chân RA5 mặc định là chân Reset,nên bạn phải dùng điện trở kéo lên nguồn.vì Reset active-low mà.,
-Muốn khai báo RA5 là I/0 thì bạn phải tác động vào bit MCLRE,nằm trong thanh ghi nào thì mình cũng không nhớ nữa.cụ thể MCLRE = 0 thì cho phép RA5 là chân I/O,còn muốn là I hay O thì tác động vào thanh ghi TRIS cái này chắc bạn cũng biết rồi..còn MCLRE = 1 (bit này mặc định là 1) thì RA5 là chân Reset.

bạn ơi.
bít MCLRE là bít trong cấu hình confix 1

REGISTER 15-1: CONFIG1: CONFIGURATION WORD 1 REGISTER (ADDRESS 2007h)
R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1
CP CCPMX DEBUG WRT1 WRT0 CPD LVP BOREN MCLRE FOSC2 PWRTENWDTEN FOSC1 FOSC0

MCLRE: RA5/MCLR/VPP Pin Function Select bit
1 = RA5/MCLR/VPP pin function is MCLR
0 = RA5/MCLR/VPP pin function is digital I/O, MCLR internally tied to VDD

mình đã khai báo MCLR=0.rùi nhưng sao chip cứ RESET liên tục là sao?

các bạn vào giúp dùm mình với.
các ơn các bạn!

pucapuca123
10-07-2011, 08:55 AM
các bác cho em hỏi thêm ở cấu hình confix 1:

CCPMX: CCP1 Pin Selection bit
1 = CCP1 function on RB0
0 = CCP1 function on RB3

bít CCPMX để chọn chức năng CCP1 hoặc CCP2 trên chân RB3 và RB0.
nếu mình ko muốn dùng chức năng CCP1 mà mình muốn dùng RB0 và RB3 vào chức năng I/O thì có cách nào để DIS chức năng CCP1 trên RB0 và RB3 ko?
hay phải bắt buộc chọn 1 trong hai PIn RB0 hoặc RB3 làm chức năng CCP1.ko thể chọn cả 2 pin đó cùng 1 lúc vào chức năng I/O được à?
cám ơn các bạn!

Auto_engine
10-07-2011, 10:25 AM
các bác cho em hỏi thêm ở cấu hình confix 1:

CCPMX: CCP1 Pin Selection bit
1 = CCP1 function on RB0
0 = CCP1 function on RB3

bít CCPMX để chọn chức năng CCP1 hoặc CCP2 trên chân RB3 và RB0.
nếu mình ko muốn dùng chức năng CCP1 mà mình muốn dùng RB0 và RB3 vào chức năng I/O thì có cách nào để DIS chức năng CCP1 trên RB0 và RB3 ko?
hay phải bắt buộc chọn 1 trong hai PIn RB0 hoặc RB3 làm chức năng CCP1.ko thể chọn cả 2 pin đó cùng 1 lúc vào chức năng I/O được à?
cám ơn các bạn!

Nếu muốn CCP sử dụng bạn phải cấu hình để enable CCP cụ thể là CCPxM<0:3>, nếu chọn là 0000 thì nó disable CCP, khi đó bạn dùng chân có chức năng I/O bình thường.

pucapuca123
10-07-2011, 11:00 AM
Nếu muốn CCP sử dụng bạn phải cấu hình để enable CCP cụ thể là CCPxM<0:3>, nếu chọn là 0000 thì nó disable CCP, khi đó bạn dùng chân có chức năng I/O bình thường.

ok mình đã hiểu về CCPxM.
cám ơn bạn nhiều!
thế còn làm thế nào đế sử dung chân RA5 tức là chân số 4 của PIC 16F88 làm chân INPUT digtal.
mình bạn nào biết giúp mình với!!!!!!!

pucapuca123
10-07-2011, 02:30 PM
up cái bác nào giúp em với

Auto_engine
12-07-2011, 11:55 PM
up cái bác nào giúp em với

Để chọn Digital hay Analog, bạn tác động tới thanh ghi ANSEL, tùy từng PORT mà chọn cho đúng, với PORTA thì là ANSEL còn PORTB là ANSELH bạn check lại xem là bit nào của ANSEL nhé.
Sau đó để thiết lập là Input thì set bit trong TRISA tương ứng = 1
Hitech cho phép tác động riêng rẽ: TRISA5 = 1; hoặc có thể làm như sau: TRISA |= (1 << 5);

Bạn nên đọc qua các hướng dẫn trên diễn đàn + datasheet có đủ thông tin cho người mới học PIC. (Mình mới chuyển qua PIC thôi, trc toàn dùng AVR :D)