View Single Post
Old 19-08-2006, 07:49 PM   #1
vokihut
Đệ tử 2 túi
 
Tham gia ngày: May 2006
Bài gửi: 26
:
Unhappy Khám bệnh cho PIC16F876A !

Chào các bác,

Em cũng mới nghiên cứu về PIC, đang thử làm một mạch test quét LED 7:
+ dùng cổng B, C.
+ Thạch anh 4M kèm tụ 33p
+ nguồn nối đủ cả : 1VDD + 2VSS
+ chân MCLR nối lên +5V qua trở 10K,nối với đất qua tụ 100nF

- Em test hiển thị các số 0 - 9 liên lục, mỗi LED dừng 200ms
- Dùng CCS để viết và mô phỏng trên Proteus thì hien thi được , nhưng chạy mạch test thì không được là sao vậy nhỉ???? HIC!

- em kiểm tra chân OSC1 & OSC2 bằng Oscillo thì không thấy có dao động,
- thử thay thạch anh khác vào ( 8M, 3.5M) mà vẫn không được
- bỏ tụ 33p nối với thạch anh ra cũng không được
Tuy nhiên, khi bỏ tụ 33p ra khỏi mạch, và sờ tay vào chân OSC1 & OSC2 thì xuất hiện xung một tẹo một mất, rồi xuất hiện rồi lại mất( kiểm tra bằng oscillo) , hiện tượng giống như bị reset liên tục vậy hoặc là dao động bị khởi động lại liên tục , LED nháy liên tục số 0, có lẽ chương trình chạy đến doạn đó rồi lại bị reset lại !

Các bác làm ơn khám bệnh cho nó giúp em với ! hic

Đây là chương trình :

#include <16F876A.h>
#fuses XT, NOWDT, NOPROTECT, NOLVP
#use delay(clock = 4000000)
#byte portb = 0x06
#byte portc = 0x07

void main()
{
int const table[10]= {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };

set_tris_b(0x00); // cong B la dau ra
set_tris_c(0x00); // cong C la dau ra
portb = 0x00;
portc = 0x00;
portb= 0Xff;

while (1)
{
portc =0x3F; //0
delay_ms(200);
portc =0x06; //1
delay_ms(200);
portc =0x5B; //2
delay_ms(200);
portc =0x4F; //3
delay_ms(200);
portc =0x66; //4
delay_ms(200);
portc =0x6D; //5
delay_ms(200);
portc =0x7D; //6
delay_ms(200);
portc =0x07; //7
delay_ms(200);
portc =0x7F; //8
delay_ms(200);
portc =0x6F; //9
delay_ms(200);
}
}
vokihut vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn