Tình hình của em là mới nghiên cứu về Pic 16F877A, em dùng quét led 8x8, dùng portB để quét hàng, portD để quét cột. Nhưng xảy ra hiện tượng là cứ khi tới code làm 64 led sáng hết là pic giữ nguyên trạng thái đó luôn, tức là 64 led sáng hết rùi ko chạy nữa. Nhưng khi em nối 1 chân bất kỳ trong portB lên Vcc qua 1 con trở khoang 220ohm thì nó lại chạy bình thường và liên tục. Mong được các anh chị hướng dẫn cách khắc phục. Em viết 1 code đơn giản chạy thử thế này cũng ko dc, em dung CCS ạ!!
#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=12000000)
void main()
{
trisb=0x00;
portb=0x00;
trisd=0x00;
portd=0x00;
while (1)
{
{
portb=0xff;
portd=0x00;
}
delay_ms(1000);
{
portb=0x00;
portd=0x00;
}
delay_ms(1000);
{
portb=0xff;
portd=0x00;
}
delay_ms(1000);
{
portb=0x00;
portd=0x00;
}
delay_ms(1000);
{
portb=0xf0;
portd=0x00;
}
delay_ms(1000);
{
portb=0xF;
portd=0x00;
}
delay_ms(1000);
{
portb=0xff;
portd=0xF0;
}
delay_ms(1000);
{
portb=0xFF;
portd=0xF;
}
delay_ms(1000);
{
portb=0x00;
portd=0x00;
}
delay_ms(1000);
}
#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=12000000)
void main()
{
trisb=0x00;
portb=0x00;
trisd=0x00;
portd=0x00;
while (1)
{
{
portb=0xff;
portd=0x00;
}
delay_ms(1000);
{
portb=0x00;
portd=0x00;
}
delay_ms(1000);
{
portb=0xff;
portd=0x00;
}
delay_ms(1000);
{
portb=0x00;
portd=0x00;
}
delay_ms(1000);
{
portb=0xf0;
portd=0x00;
}
delay_ms(1000);
{
portb=0xF;
portd=0x00;
}
delay_ms(1000);
{
portb=0xff;
portd=0xF0;
}
delay_ms(1000);
{
portb=0xFF;
portd=0xF;
}
delay_ms(1000);
{
portb=0x00;
portd=0x00;
}
delay_ms(1000);
}