Chào các bác.
Em vừa mua mấy con 16f886 về dùng thử, em cũng mới học về PIC. Em làm một chương trình phát xung nho nhỏ ra mấy chân PORTC, dùng timer2. Tuy nhiên nếu dùng prescaler và postscaler cùng tỉ lệ 1:16 thì mới chạy, còn không thì không chạy. Các bác xem code nhé:
Code:
//---------------------------------------------------
#include <pic16f887.h>
unsigned char dem;
void main()
{
TRISC=0;//C out
//max frequency:
//OSCCON=(7<<IRCF0)|(1<<SCS)|(1<<HTS);
//OSCTUNE=15;
//timer2:
T2CON=(1<<TMR2ON)|(15<<TOUTPS0)|(1<<T2CKPS1);//dòng này chuối
PR2=10;
while(1)
{
if((PIR1&(1<<TMR2IF))!=0)
{
PIR1=PIR1&(255-(1<<TMR2IF));
if(++dem==10)
PORTC=0;
else if(dem==20)
{
dem=0;
PORTC=7;
}
}
}
}
//========================================
Nếu thay dòng chuối như sau thì không chạy:
T2CON=(1<<TMR2ON);
hoặc:
T2CON=(1<<TMR2ON)|(9<<TOUTPS0)|(1<<T2CKPS1);//postscaler 16
hoặc:
T2CON=(1<<TMR2ON)|(15<<TOUTPS0);
Các bác xem giúp em lỗi gì với.