PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   Lỗi timer2 của 16F886 (http://www.picvietnam.com/forum/showthread.php?t=3326)

datk45d 19-12-2008 11:51 AM

Lỗi timer2 của 16F886
 
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.

namqn 19-12-2008 04:38 PM

Bạn cho biết đang dùng trình biên dịch nào luôn.

Thân,

datk45d 19-12-2008 05:17 PM

em dùng Hi-Tech ANSI C compiler, bản lite

datk45d 19-12-2008 06:00 PM

không biết có đúng là nó không, lúc build thì có dòng này, hi vọng bác nhìn nó sẽ rõ hơn:
//--------------------------------------------------------------
HI-TECH C PRO for the PIC10/12/16 MCU family (Lite) V9.60PL3
Copyright (C) 1984-2008 HI-TECH SOFTWARE
(1273) Omniscient Code Generation not available in Lite mode
//--------------------------------------------------------------
Tiện thể cho em hỏi luôn là muốn tìm phần giải thích chi tiết tập lệnh asm cho một con pic thì tìm ở đâu ạ.

namqn 19-12-2008 08:11 PM

Trích:

Nguyên văn bởi datk45d (Post 21519)
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é:
...
Các bác xem giúp em lỗi gì với.

Tôi dùng prescale = 1:1, postscale = 1:16 với chương trình sau thì Timer2 làm việc bình thường:
Code:

#include <htc.h>
#include <pic16f887.h>

__CONFIG(HS & WDTDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT & BORDIS & IESODIS & FCMDIS & LVPDIS & DEBUGDIS);
__CONFIG(BORV21);

unsigned char cnt;

void interrupt PIC16_ISR(void)
{
}

void Init_Ports(void)
{
        TRISB = 0xFE;
        ANSELH = 0x00;
}

void Init_Timer2(void)
{
        T2CON = 0x78;                //1:1 prescaler, 1:16 postscaler
        PR2 = 249;
//        TMR2IE = 1;
        TMR2IF = 0;
        TMR2ON = 1;
//        PEIE = 1;
//        GIE = 1;
}


void main(void)
{
        Init_Ports();
        Init_Timer2();
        cnt = 250;
        RB0 = 0;
        while (1)
        {
                if (cnt == 0)
                {
                        RB0 = RB0 ^ 1;;                //Toggle every 1 milion inst. cycles
                        cnt = 250;
                }
                if (TMR2IF == 1)
                {
                        cnt--;
                        TMR2IF = 0;
                }
        };
}

Tôi chưa dùng ngắt. Chương trình đã thử nghiệm trên mạch thực, dùng PIC16F886.

Thân,

namqn 19-12-2008 08:14 PM

Trích:

Nguyên văn bởi datk45d (Post 21527)
...
Tiện thể cho em hỏi luôn là muốn tìm phần giải thích chi tiết tập lệnh asm cho một con pic thì tìm ở đâu ạ.

Datasheet của PIC đều có phần nói về tập lệnh hợp ngữ. Chẳng hạn như trong datasheet của PIC16F886 (PIC16F88x nói chung), mục 15 có trình bày đầy đủ về tập lệnh hợp ngữ.

Thân,

datk45d 19-12-2008 10:35 PM

Trích:

Nguyên văn bởi namqn (Post 21531)
Datasheet của PIC đều có phần nói về tập lệnh hợp ngữ. Chẳng hạn như trong datasheet của PIC16F886 (PIC16F88x nói chung), mục 15 có trình bày đầy đủ về tập lệnh hợp ngữ.

Thân,

Cảm ơn bác. Chắc tại lúc trước xem lướt qua thấy nó nói ít quả em tưởng chỉ là summary.


Múi giờ GMT. Hiện tại là 11:56 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam