Chả là em đang dùng 16f886 để quét led 7S nhưng bị lỗi hoài. Nhìn theo led hiển thị thì dường như bị lỗi bộ dao động vì nó quét cực chậm.Kiểm tra FUSE thấy đều hợp lý. Sau đó mình set lại dùng thạch anh ngoài cũng bị tương tự. Nghĩ là PIC bị hư nên thay con khác nhưng vẫn bị lỗi ấy, thay đến 4 con đều bị lỗi giống nhau. Tức quá đành bỏ công set FUSE lại nạp cho 877A thì chạy bình thường (toàn chương trình và các chân in,out mình để giống nhau hết, chỉ set lại những cái cần thiết cho 877A). Chẳng hiểu. Mình đang dùng CCS4.032. Dùng PICKIT2 để nạp, sử dụng board EASYPIC-PRO của TME để test.
Anh em nào biết lỗi này chỉ mình với. Mình dùng Port B xuất ra mã led, A4,A5,R6,R7 quét led, A0,1,2,3 là phím nhấn,dùng ngắt Timer1 để định thời quét.
Thanks.
cụ thể FUSE như sau:
#include <16F886.h>
#device *=16
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
//#FUSES HS //EX OSC
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOPUT //No Power Up Timer
#FUSES MCLR //Master Clear pin enabled
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOCPD //No EE protection
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOIESO //Internal External Switch Over mode disabled
#FUSES NOFCMEN //Fail-safe clock monitor disabled
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NODEBUG //No Debug mode for ICD
#FUSES WRT //Program memory write protected
#FUSES BORV40 //Brownout reset at 4.0V
#use delay(clock=4000000)
Phần code khởi tạo như sau:
void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
setup_oscillator(OSC_4MHZ);
Load_value_start();
delay_ms(1000);
while (TRUE)
{
.
.
.
Anh em nào biết lỗi này chỉ mình với. Mình dùng Port B xuất ra mã led, A4,A5,R6,R7 quét led, A0,1,2,3 là phím nhấn,dùng ngắt Timer1 để định thời quét.
Thanks.
cụ thể FUSE như sau:
#include <16F886.h>
#device *=16
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
//#FUSES HS //EX OSC
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOPUT //No Power Up Timer
#FUSES MCLR //Master Clear pin enabled
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOCPD //No EE protection
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOIESO //Internal External Switch Over mode disabled
#FUSES NOFCMEN //Fail-safe clock monitor disabled
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NODEBUG //No Debug mode for ICD
#FUSES WRT //Program memory write protected
#FUSES BORV40 //Brownout reset at 4.0V
#use delay(clock=4000000)
Phần code khởi tạo như sau:
void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
setup_oscillator(OSC_4MHZ);
Load_value_start();
delay_ms(1000);
while (TRUE)
{
.
.
.
Comment